diff --git a/.storybook/config.js b/.storybook/config.js index fb8cf8cbc1..d6e0a14053 100644 --- a/.storybook/config.js +++ b/.storybook/config.js @@ -1,7 +1,7 @@ import 'babel-polyfill' import { addDecorator, configure } from '@storybook/react' import { withKnobs } from '@storybook/addon-knobs' -import { MuiThemeProvider } from 'material-ui/styles' +import { MuiThemeProvider } from '@material-ui/core/styles' import * as React from 'react' import { Provider } from 'react-redux' import StoryRouter from 'storybook-router' diff --git a/package.json b/package.json index 30e8c0a2e7..32080ba2ca 100644 --- a/package.json +++ b/package.json @@ -101,6 +101,7 @@ "webpack-manifest-plugin": "^2.0.0-rc.2" }, "dependencies": { + "@gnosis.pm/util-contracts": "^0.2.14", "@material-ui/core": "^1.2.1", "@material-ui/icons": "^1.1.0", "final-form": "^4.2.1", diff --git a/safe-contracts/build/contracts/CreateAndAddModules.json b/safe-contracts/build/contracts/CreateAndAddModules.json index d6ae4cf48d..bf85af6e71 100644 --- a/safe-contracts/build/contracts/CreateAndAddModules.json +++ b/safe-contracts/build/contracts/CreateAndAddModules.json @@ -36,38 +36,38 @@ ], "bytecode": "0x608060405234801561001057600080fd5b50610275806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080601f85010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a7230582057d5a08ea9098bcaf70b44e6f52a22772fc87649049797162acff984c02e83a40029", "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080601f85010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a7230582057d5a08ea9098bcaf70b44e6f52a22772fc87649049797162acff984c02e83a40029", - "sourceMap": "245:1457:16:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;245:1457:16;;;;;;;", - "deployedSourceMap": "245:1457:16:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:885;;8:9:-1;5:2;;;30:1;27;20:12;5:2;815:885:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;405:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;405:81:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:885;907:14;945:13;968:9;924:4;:11;907:28;;980:1;968:13;;991:703;1002:6;998:1;:10;991:703;;;1170:1;1164:4;1160:12;1154:4;1150:23;1144:30;1230:1;1224:4;1220:12;1214:4;1210:23;1271:4;1265:11;1378:1;1371:4;1363:6;1344:17;1331:11;1317:12;1312:3;1299:77;1296:84;1293:2;;;1393:1;1390;1383:12;1293:2;1443:42;1434:6;1428:13;1424:62;1414:72;;1624:4;1617;1610;1591:17;1587:28;1583:39;1579:50;1573:4;1569:61;1566:1;1562:69;1557:74;;1101:544;;;1658:4;:17;;;1676:6;1658:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1658:25:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1658:25:16;;;;991:703;;;815:885;;;;;:::o;405:81::-;471:8;;", + "sourceMap": "245:1457:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;245:1457:18;;;;;;;", + "deployedSourceMap": "245:1457:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:885;;8:9:-1;5:2;;;30:1;27;20:12;5:2;815:885:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;405:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;405:81:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:885;907:14;945:13;968:9;924:4;:11;907:28;;980:1;968:13;;991:703;1002:6;998:1;:10;991:703;;;1170:1;1164:4;1160:12;1154:4;1150:23;1144:30;1230:1;1224:4;1220:12;1214:4;1210:23;1271:4;1265:11;1378:1;1371:4;1363:6;1344:17;1331:11;1317:12;1312:3;1299:77;1296:84;1293:2;;;1393:1;1390;1383:12;1293:2;1443:42;1434:6;1428:13;1424:62;1414:72;;1624:4;1617;1610;1591:17;1587:28;1583:39;1579:50;1573:4;1569:61;1566:1;1562:69;1557:74;;1101:544;;;1658:4;:17;;;1676:6;1658:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1658:25:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1658:25:18;;;;991:703;;;815:885;;;;;:::o;405:81::-;471:8;;", "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\n\n\n/// @title Create and Add Modules - Allows to create and add multiple module in one transaction.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract CreateAndAddModules {\n\n /// @dev Function required to compile contract. Gnosis Safe function is called instead.\n /// @param module Not used.\n function enableModule(Module module)\n public\n {\n revert();\n }\n\n /// @dev Allows to create and add multiple module in one transaction.\n /// @param proxyFactory Module proxy factory contract.\n /// @param data Modules constructor payload. This is the data for each proxy factory call concatinated. (e.g. )\n function createAndAddModules(address proxyFactory, bytes data)\n public\n {\n uint256 length = data.length;\n Module module;\n uint256 i = 0;\n while (i < length) {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n\n let output := mload(0x40)\n if eq(delegatecall(gas, proxyFactory, createBytes, createBytesLength, output, 0x20), 0) { revert(0, 0) }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n\n // Data is always padded to 32 bytes\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x1f), 0x20), 0x20)))\n }\n this.enableModule(module);\n }\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModules.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModules.sol", "exportedSymbols": { "CreateAndAddModules": [ - 1830 + 3166 ] }, - "id": 1831, + "id": 3167, "nodeType": "SourceUnit", "nodes": [ { - "id": 1787, + "id": 3123, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:16" + "src": "0:23:18" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1788, + "id": 3124, "nodeType": "ImportDirective", - "scope": 1831, - "sourceUnit": 733, - "src": "24:23:16", + "scope": 3167, + "sourceUnit": 1862, + "src": "24:23:18", "symbolAliases": [], "unitAlias": "" }, @@ -77,18 +77,18 @@ "contractKind": "contract", "documentation": "@title Create and Add Modules - Allows to create and add multiple module in one transaction.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1830, + "id": 3166, "linearizedBaseContracts": [ - 1830 + 3166 ], "name": "CreateAndAddModules", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1796, + "id": 3132, "nodeType": "Block", - "src": "461:25:16", + "src": "461:25:18", "statements": [ { "expression": { @@ -96,21 +96,21 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1793, + "id": 3129, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 2705, - 2706 + 4041, + 4042 ], - "referencedDeclaration": 2705, - "src": "471:6:16", + "referencedDeclaration": 4041, + "src": "471:6:18", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 1794, + "id": 3130, "isConstant": false, "isLValue": false, "isPure": false, @@ -118,20 +118,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "471:8:16", + "src": "471:8:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1795, + "id": 3131, "nodeType": "ExpressionStatement", - "src": "471:8:16" + "src": "471:8:18" } ] }, "documentation": "@dev Function required to compile contract. Gnosis Safe function is called instead.\n @param module Not used.", - "id": 1797, + "id": 3133, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -139,31 +139,31 @@ "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 1791, + "id": 3127, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1790, + "id": 3126, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1797, - "src": "427:13:16", + "scope": 3133, + "src": "427:13:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$732", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1789, + "id": 3125, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 732, - "src": "427:6:16", + "referencedDeclaration": 1861, + "src": "427:6:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$732", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -171,39 +171,39 @@ "visibility": "internal" } ], - "src": "426:15:16" + "src": "426:15:18" }, "payable": false, "returnParameters": { - "id": 1792, + "id": 3128, "nodeType": "ParameterList", "parameters": [], - "src": "461:0:16" + "src": "461:0:18" }, - "scope": 1830, - "src": "405:81:16", + "scope": 3166, + "src": "405:81:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1828, + "id": 3164, "nodeType": "Block", - "src": "897:803:16", + "src": "897:803:18", "statements": [ { "assignments": [ - 1805 + 3141 ], "declarations": [ { "constant": false, - "id": 1805, + "id": 3141, "name": "length", "nodeType": "VariableDeclaration", - "scope": 1829, - "src": "907:14:16", + "scope": 3165, + "src": "907:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -211,10 +211,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1804, + "id": 3140, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "907:7:16", + "src": "907:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -224,23 +224,23 @@ "visibility": "internal" } ], - "id": 1808, + "id": 3144, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1806, + "id": 3142, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1801, - "src": "924:4:16", + "referencedDeclaration": 3137, + "src": "924:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1807, + "id": 3143, "isConstant": false, "isLValue": false, "isPure": false, @@ -248,40 +248,40 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "924:11:16", + "src": "924:11:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "907:28:16" + "src": "907:28:18" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1810, + "id": 3146, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1829, - "src": "945:13:16", + "scope": 3165, + "src": "945:13:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$732", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1809, + "id": 3145, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 732, - "src": "945:6:16", + "referencedDeclaration": 1861, + "src": "945:6:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$732", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -289,23 +289,23 @@ "visibility": "internal" } ], - "id": 1811, + "id": 3147, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "945:13:16" + "src": "945:13:18" }, { "assignments": [ - 1813 + 3149 ], "declarations": [ { "constant": false, - "id": 1813, + "id": 3149, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1829, - "src": "968:9:16", + "scope": 3165, + "src": "968:9:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -313,10 +313,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1812, + "id": 3148, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "968:7:16", + "src": "968:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -326,18 +326,18 @@ "visibility": "internal" } ], - "id": 1815, + "id": 3151, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1814, + "id": 3150, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "980:1:16", + "src": "980:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -346,93 +346,93 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "968:13:16" + "src": "968:13:18" }, { "body": { - "id": 1826, + "id": 3162, "nodeType": "Block", - "src": "1010:684:16", + "src": "1010:684:18", "statements": [ { "externalReferences": [ { "module": { - "declaration": 1810, + "declaration": 3146, "isOffset": false, "isSlot": false, - "src": "1414:6:16", + "src": "1414:6:18", "valueSize": 1 } }, { "data": { - "declaration": 1801, + "declaration": 3137, "isOffset": false, "isSlot": false, - "src": "1164:4:16", + "src": "1164:4:18", "valueSize": 1 } }, { "i": { - "declaration": 1813, + "declaration": 3149, "isOffset": false, "isSlot": false, - "src": "1170:1:16", + "src": "1170:1:18", "valueSize": 1 } }, { "data": { - "declaration": 1801, + "declaration": 3137, "isOffset": false, "isSlot": false, - "src": "1224:4:16", + "src": "1224:4:18", "valueSize": 1 } }, { "i": { - "declaration": 1813, + "declaration": 3149, "isOffset": false, "isSlot": false, - "src": "1230:1:16", + "src": "1230:1:18", "valueSize": 1 } }, { "i": { - "declaration": 1813, + "declaration": 3149, "isOffset": false, "isSlot": false, - "src": "1557:1:16", + "src": "1557:1:18", "valueSize": 1 } }, { "proxyFactory": { - "declaration": 1799, + "declaration": 3135, "isOffset": false, "isSlot": false, - "src": "1317:12:16", + "src": "1317:12:18", "valueSize": 1 } }, { "i": { - "declaration": 1813, + "declaration": 3149, "isOffset": false, "isSlot": false, - "src": "1566:1:16", + "src": "1566:1:18", "valueSize": 1 } } ], - "id": 1819, + "id": 3155, "nodeType": "InlineAssembly", "operations": "{\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, createBytes, createBytesLength, output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x1f), 0x20), 0x20)))\n}", - "src": "1092:570:16" + "src": "1092:570:18" }, { "expression": { @@ -440,14 +440,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1823, + "id": 3159, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1810, - "src": "1676:6:16", + "referencedDeclaration": 3146, + "src": "1676:6:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$732", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } } @@ -455,38 +455,38 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$732", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } ], "expression": { "argumentTypes": null, - "id": 1820, + "id": 3156, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2745, - "src": "1658:4:16", + "referencedDeclaration": 4085, + "src": "1658:4:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_CreateAndAddModules_$1830", + "typeIdentifier": "t_contract$_CreateAndAddModules_$3166", "typeString": "contract CreateAndAddModules" } }, - "id": 1822, + "id": 3158, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "enableModule", "nodeType": "MemberAccess", - "referencedDeclaration": 1797, - "src": "1658:17:16", + "referencedDeclaration": 3133, + "src": "1658:17:18", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$732_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$1861_$returns$__$", "typeString": "function (contract Module) external" } }, - "id": 1824, + "id": 3160, "isConstant": false, "isLValue": false, "isPure": false, @@ -494,15 +494,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1658:25:16", + "src": "1658:25:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1825, + "id": 3161, "nodeType": "ExpressionStatement", - "src": "1658:25:16" + "src": "1658:25:18" } ] }, @@ -512,19 +512,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1818, + "id": 3154, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1816, + "id": 3152, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1813, - "src": "998:1:16", + "referencedDeclaration": 3149, + "src": "998:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -534,31 +534,31 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 1817, + "id": 3153, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1805, - "src": "1002:6:16", + "referencedDeclaration": 3141, + "src": "1002:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "998:10:16", + "src": "998:10:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1827, + "id": 3163, "nodeType": "WhileStatement", - "src": "991:703:16" + "src": "991:703:18" } ] }, "documentation": "@dev Allows to create and add multiple module in one transaction.\n @param proxyFactory Module proxy factory contract.\n @param data Modules constructor payload. This is the data for each proxy factory call concatinated. (e.g. )", - "id": 1829, + "id": 3165, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -566,16 +566,16 @@ "name": "createAndAddModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 1802, + "id": 3138, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1799, + "id": 3135, "name": "proxyFactory", "nodeType": "VariableDeclaration", - "scope": 1829, - "src": "844:20:16", + "scope": 3165, + "src": "844:20:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -583,10 +583,10 @@ "typeString": "address" }, "typeName": { - "id": 1798, + "id": 3134, "name": "address", "nodeType": "ElementaryTypeName", - "src": "844:7:16", + "src": "844:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -597,11 +597,11 @@ }, { "constant": false, - "id": 1801, + "id": 3137, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1829, - "src": "866:10:16", + "scope": 3165, + "src": "866:10:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -609,10 +609,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1800, + "id": 3136, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "866:5:16", + "src": "866:5:18", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -622,56 +622,56 @@ "visibility": "internal" } ], - "src": "843:34:16" + "src": "843:34:18" }, "payable": false, "returnParameters": { - "id": 1803, + "id": 3139, "nodeType": "ParameterList", "parameters": [], - "src": "897:0:16" + "src": "897:0:18" }, - "scope": 1830, - "src": "815:885:16", + "scope": 3166, + "src": "815:885:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1831, - "src": "245:1457:16" + "scope": 3167, + "src": "245:1457:18" } ], - "src": "0:1703:16" + "src": "0:1703:18" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModules.sol", "exportedSymbols": { "CreateAndAddModules": [ - 1830 + 3166 ] }, - "id": 1831, + "id": 3167, "nodeType": "SourceUnit", "nodes": [ { - "id": 1787, + "id": 3123, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:16" + "src": "0:23:18" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1788, + "id": 3124, "nodeType": "ImportDirective", - "scope": 1831, - "sourceUnit": 733, - "src": "24:23:16", + "scope": 3167, + "sourceUnit": 1862, + "src": "24:23:18", "symbolAliases": [], "unitAlias": "" }, @@ -681,18 +681,18 @@ "contractKind": "contract", "documentation": "@title Create and Add Modules - Allows to create and add multiple module in one transaction.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1830, + "id": 3166, "linearizedBaseContracts": [ - 1830 + 3166 ], "name": "CreateAndAddModules", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1796, + "id": 3132, "nodeType": "Block", - "src": "461:25:16", + "src": "461:25:18", "statements": [ { "expression": { @@ -700,21 +700,21 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1793, + "id": 3129, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 2705, - 2706 + 4041, + 4042 ], - "referencedDeclaration": 2705, - "src": "471:6:16", + "referencedDeclaration": 4041, + "src": "471:6:18", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 1794, + "id": 3130, "isConstant": false, "isLValue": false, "isPure": false, @@ -722,20 +722,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "471:8:16", + "src": "471:8:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1795, + "id": 3131, "nodeType": "ExpressionStatement", - "src": "471:8:16" + "src": "471:8:18" } ] }, "documentation": "@dev Function required to compile contract. Gnosis Safe function is called instead.\n @param module Not used.", - "id": 1797, + "id": 3133, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -743,31 +743,31 @@ "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 1791, + "id": 3127, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1790, + "id": 3126, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1797, - "src": "427:13:16", + "scope": 3133, + "src": "427:13:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$732", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1789, + "id": 3125, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 732, - "src": "427:6:16", + "referencedDeclaration": 1861, + "src": "427:6:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$732", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -775,39 +775,39 @@ "visibility": "internal" } ], - "src": "426:15:16" + "src": "426:15:18" }, "payable": false, "returnParameters": { - "id": 1792, + "id": 3128, "nodeType": "ParameterList", "parameters": [], - "src": "461:0:16" + "src": "461:0:18" }, - "scope": 1830, - "src": "405:81:16", + "scope": 3166, + "src": "405:81:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1828, + "id": 3164, "nodeType": "Block", - "src": "897:803:16", + "src": "897:803:18", "statements": [ { "assignments": [ - 1805 + 3141 ], "declarations": [ { "constant": false, - "id": 1805, + "id": 3141, "name": "length", "nodeType": "VariableDeclaration", - "scope": 1829, - "src": "907:14:16", + "scope": 3165, + "src": "907:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -815,10 +815,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1804, + "id": 3140, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "907:7:16", + "src": "907:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -828,23 +828,23 @@ "visibility": "internal" } ], - "id": 1808, + "id": 3144, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1806, + "id": 3142, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1801, - "src": "924:4:16", + "referencedDeclaration": 3137, + "src": "924:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1807, + "id": 3143, "isConstant": false, "isLValue": false, "isPure": false, @@ -852,40 +852,40 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "924:11:16", + "src": "924:11:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "907:28:16" + "src": "907:28:18" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1810, + "id": 3146, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1829, - "src": "945:13:16", + "scope": 3165, + "src": "945:13:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$732", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1809, + "id": 3145, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 732, - "src": "945:6:16", + "referencedDeclaration": 1861, + "src": "945:6:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$732", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -893,23 +893,23 @@ "visibility": "internal" } ], - "id": 1811, + "id": 3147, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "945:13:16" + "src": "945:13:18" }, { "assignments": [ - 1813 + 3149 ], "declarations": [ { "constant": false, - "id": 1813, + "id": 3149, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1829, - "src": "968:9:16", + "scope": 3165, + "src": "968:9:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -917,10 +917,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1812, + "id": 3148, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "968:7:16", + "src": "968:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -930,18 +930,18 @@ "visibility": "internal" } ], - "id": 1815, + "id": 3151, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1814, + "id": 3150, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "980:1:16", + "src": "980:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -950,93 +950,93 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "968:13:16" + "src": "968:13:18" }, { "body": { - "id": 1826, + "id": 3162, "nodeType": "Block", - "src": "1010:684:16", + "src": "1010:684:18", "statements": [ { "externalReferences": [ { "module": { - "declaration": 1810, + "declaration": 3146, "isOffset": false, "isSlot": false, - "src": "1414:6:16", + "src": "1414:6:18", "valueSize": 1 } }, { "data": { - "declaration": 1801, + "declaration": 3137, "isOffset": false, "isSlot": false, - "src": "1164:4:16", + "src": "1164:4:18", "valueSize": 1 } }, { "i": { - "declaration": 1813, + "declaration": 3149, "isOffset": false, "isSlot": false, - "src": "1170:1:16", + "src": "1170:1:18", "valueSize": 1 } }, { "data": { - "declaration": 1801, + "declaration": 3137, "isOffset": false, "isSlot": false, - "src": "1224:4:16", + "src": "1224:4:18", "valueSize": 1 } }, { "i": { - "declaration": 1813, + "declaration": 3149, "isOffset": false, "isSlot": false, - "src": "1230:1:16", + "src": "1230:1:18", "valueSize": 1 } }, { "i": { - "declaration": 1813, + "declaration": 3149, "isOffset": false, "isSlot": false, - "src": "1557:1:16", + "src": "1557:1:18", "valueSize": 1 } }, { "proxyFactory": { - "declaration": 1799, + "declaration": 3135, "isOffset": false, "isSlot": false, - "src": "1317:12:16", + "src": "1317:12:18", "valueSize": 1 } }, { "i": { - "declaration": 1813, + "declaration": 3149, "isOffset": false, "isSlot": false, - "src": "1566:1:16", + "src": "1566:1:18", "valueSize": 1 } } ], - "id": 1819, + "id": 3155, "nodeType": "InlineAssembly", "operations": "{\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, createBytes, createBytesLength, output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x1f), 0x20), 0x20)))\n}", - "src": "1092:570:16" + "src": "1092:570:18" }, { "expression": { @@ -1044,14 +1044,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1823, + "id": 3159, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1810, - "src": "1676:6:16", + "referencedDeclaration": 3146, + "src": "1676:6:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$732", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } } @@ -1059,38 +1059,38 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$732", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } ], "expression": { "argumentTypes": null, - "id": 1820, + "id": 3156, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2745, - "src": "1658:4:16", + "referencedDeclaration": 4085, + "src": "1658:4:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_CreateAndAddModules_$1830", + "typeIdentifier": "t_contract$_CreateAndAddModules_$3166", "typeString": "contract CreateAndAddModules" } }, - "id": 1822, + "id": 3158, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "enableModule", "nodeType": "MemberAccess", - "referencedDeclaration": 1797, - "src": "1658:17:16", + "referencedDeclaration": 3133, + "src": "1658:17:18", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$732_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$1861_$returns$__$", "typeString": "function (contract Module) external" } }, - "id": 1824, + "id": 3160, "isConstant": false, "isLValue": false, "isPure": false, @@ -1098,15 +1098,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1658:25:16", + "src": "1658:25:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1825, + "id": 3161, "nodeType": "ExpressionStatement", - "src": "1658:25:16" + "src": "1658:25:18" } ] }, @@ -1116,19 +1116,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1818, + "id": 3154, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1816, + "id": 3152, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1813, - "src": "998:1:16", + "referencedDeclaration": 3149, + "src": "998:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1138,31 +1138,31 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 1817, + "id": 3153, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1805, - "src": "1002:6:16", + "referencedDeclaration": 3141, + "src": "1002:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "998:10:16", + "src": "998:10:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1827, + "id": 3163, "nodeType": "WhileStatement", - "src": "991:703:16" + "src": "991:703:18" } ] }, "documentation": "@dev Allows to create and add multiple module in one transaction.\n @param proxyFactory Module proxy factory contract.\n @param data Modules constructor payload. This is the data for each proxy factory call concatinated. (e.g. )", - "id": 1829, + "id": 3165, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1170,16 +1170,16 @@ "name": "createAndAddModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 1802, + "id": 3138, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1799, + "id": 3135, "name": "proxyFactory", "nodeType": "VariableDeclaration", - "scope": 1829, - "src": "844:20:16", + "scope": 3165, + "src": "844:20:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1187,10 +1187,10 @@ "typeString": "address" }, "typeName": { - "id": 1798, + "id": 3134, "name": "address", "nodeType": "ElementaryTypeName", - "src": "844:7:16", + "src": "844:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1201,11 +1201,11 @@ }, { "constant": false, - "id": 1801, + "id": 3137, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1829, - "src": "866:10:16", + "scope": 3165, + "src": "866:10:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1213,10 +1213,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1800, + "id": 3136, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "866:5:16", + "src": "866:5:18", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1226,27 +1226,27 @@ "visibility": "internal" } ], - "src": "843:34:16" + "src": "843:34:18" }, "payable": false, "returnParameters": { - "id": 1803, + "id": 3139, "nodeType": "ParameterList", "parameters": [], - "src": "897:0:16" + "src": "897:0:18" }, - "scope": 1830, - "src": "815:885:16", + "scope": 3166, + "src": "815:885:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1831, - "src": "245:1457:16" + "scope": 3167, + "src": "245:1457:18" } ], - "src": "0:1703:16" + "src": "0:1703:18" }, "compiler": { "name": "solc", @@ -1256,28 +1256,28 @@ "4": { "events": {}, "links": {}, - "address": "0x5900bc272839883955dec0c65035561e5b773394", - "transactionHash": "0x237a3ef45930b71459744e5260bf90582967a78a962cf024a554e3c0b0e33157" + "address": "0xce0a620bc8cb319020a77869b7249eeeb90ed0b1", + "transactionHash": "0xb634ad398348e36ea86588e2e5b33c909df74c0d2d7882284ef0d442df52c78f" }, - "1529327661534": { + "1530013596495": { "events": {}, "links": {}, - "address": "0x819746e02c2fcacc4f288d0a648b8ed04dab5716", - "transactionHash": "0x9c9cae1cef9fdfbb54ebe59b4dc70e223493f0a1d681df7ce06bedcf90e0d37f" + "address": "0x25475aa70f1dd8e565d0e9f3421dd2d5a6bdb226", + "transactionHash": "0x711b1024213238c3524d8f90f993c3e56ad078d00e326383ce4f4b8e7df1f489" }, - "1529333415702": { + "1530525742205": { "events": {}, "links": {}, - "address": "0xadf257fb7290315d37d6b11ccdbb648a5d3d148f", - "transactionHash": "0x80d74510df045a8b9ff09a084394dfd4eae7b7db3921dd9bde780fa7edf4d076" + "address": "0x9a2b7ffa6832e646a0cd011980191ab9bd2cefb6", + "transactionHash": "0x7af1e557142bc9cc9bedcfbd550efa8d91bfabefb4cde8f29294155c9465c137" }, - "1529652204341": { + "1530611935189": { "events": {}, "links": {}, - "address": "0x8abc460ef144c8a56bee97dc35821f3adff74f3c", + "address": "0x749312e74fe2f459318be67f6377f3f519999ea0", "transactionHash": "0x7af1e557142bc9cc9bedcfbd550efa8d91bfabefb4cde8f29294155c9465c137" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-22T07:24:16.273Z" + "updatedAt": "2018-07-03T09:59:18.519Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModule.json b/safe-contracts/build/contracts/DailyLimitModule.json index a9f44b8d24..314c71d0ca 100644 --- a/safe-contracts/build/contracts/DailyLimitModule.json +++ b/safe-contracts/build/contracts/DailyLimitModule.json @@ -157,73 +157,73 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061129b806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f031461009e578063481c6a751461014757806363bae7c31461019e5780637de7edef1461020b57806381c5e03b1461024e578063a3f4df7e1461029b578063b74e452b1461032b578063d7bffc9214610356578063ffa1ad74146103bb575b600080fd5b3480156100aa57600080fd5b50610145600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061044b565b005b34801561015357600080fd5b5061015c6104ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101aa57600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610510565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d00565b005b34801561025a57600080fd5b50610299600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee3565b005b3480156102a757600080fd5b506102b0611019565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f05780820151818401526020810190506102d5565b50505050905090810190601f16801561031d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033757600080fd5b50610340611052565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061106a565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103c757600080fd5b506103d0611094565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104556110cd565b600090505b82518110156104e557818181518110151561047157fe5b9060200190602002015160026000858481518110151561048d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550808060010191505061045a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105cf57600080fd5b505af11580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b810190808051906020019092919050505015156106a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e2081526020017f6f776e657200000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e76616c696420746f20616464726573732070726f7669646564000000000081525060200191505060405180910390fd5b6000821115156107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420616d6f756e742070726f766964656400000000000000000081525060200191505060405180910390fd5b6107b584836111c0565b1515610829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4461696c79206c696d697420686173206265656e20726561636865640000000081525060200191505060405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060008473ffffffffffffffffffffffffffffffffffffffff161415610a3c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7848460006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018060200183600281111561095157fe5b60ff168152602001828103825260008152602001602001945050505050602060405180830381600087803b15801561098857600080fd5b505af115801561099c573d6000803e3d6000fd5b505050506040513d60208110156109b257600080fd5b81019080805190602001909291905050501515610a37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f742065786563757465206574686572207472616e7366657281525060200191505060405180910390fd5b610cfa565b8282604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78560008460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bbb57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bfb578082015181840152602081019050610be0565b50505050905090810190601f168015610c285780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b505050506040513d6020811015610c7457600080fd5b81019080805190602001909291905050501515610cf9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74206578656375746520746f6b656e207472616e7366657281525060200191505060405180910390fd5b5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610deb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ea0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561106257fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154611211611052565b11156112325761121f611052565b8160020181905550600081600101819055505b806000015483826001015401111580156112555750806001015483826001015401115b156112635760019150611268565b600091505b50929150505600a165627a7a7230582051d9306b33e558e23465d9439d6e2e76cb102312417befb2ee5813ea8d9487f00029", - "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f031461009e578063481c6a751461014757806363bae7c31461019e5780637de7edef1461020b57806381c5e03b1461024e578063a3f4df7e1461029b578063b74e452b1461032b578063d7bffc9214610356578063ffa1ad74146103bb575b600080fd5b3480156100aa57600080fd5b50610145600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061044b565b005b34801561015357600080fd5b5061015c6104ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101aa57600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610510565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d00565b005b34801561025a57600080fd5b50610299600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee3565b005b3480156102a757600080fd5b506102b0611019565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f05780820151818401526020810190506102d5565b50505050905090810190601f16801561031d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033757600080fd5b50610340611052565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061106a565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103c757600080fd5b506103d0611094565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104556110cd565b600090505b82518110156104e557818181518110151561047157fe5b9060200190602002015160026000858481518110151561048d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550808060010191505061045a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105cf57600080fd5b505af11580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b810190808051906020019092919050505015156106a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e2081526020017f6f776e657200000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e76616c696420746f20616464726573732070726f7669646564000000000081525060200191505060405180910390fd5b6000821115156107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420616d6f756e742070726f766964656400000000000000000081525060200191505060405180910390fd5b6107b584836111c0565b1515610829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4461696c79206c696d697420686173206265656e20726561636865640000000081525060200191505060405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060008473ffffffffffffffffffffffffffffffffffffffff161415610a3c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7848460006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018060200183600281111561095157fe5b60ff168152602001828103825260008152602001602001945050505050602060405180830381600087803b15801561098857600080fd5b505af115801561099c573d6000803e3d6000fd5b505050506040513d60208110156109b257600080fd5b81019080805190602001909291905050501515610a37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f742065786563757465206574686572207472616e7366657281525060200191505060405180910390fd5b610cfa565b8282604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78560008460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bbb57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bfb578082015181840152602081019050610be0565b50505050905090810190601f168015610c285780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b505050506040513d6020811015610c7457600080fd5b81019080805190602001909291905050501515610cf9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74206578656375746520746f6b656e207472616e7366657281525060200191505060405180910390fd5b5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610deb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ea0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561106257fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154611211611052565b11156112325761121f611052565b8160020181905550600081600101819055505b806000015483826001015401111580156112555750806001015483826001015401115b156112635760019150611268565b600091505b50929150505600a165627a7a7230582051d9306b33e558e23465d9439d6e2e76cb102312417befb2ee5813ea8d9487f00029", - "sourceMap": "296:3285:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;296:3285:18;;;;;;;", - "deployedSourceMap": "296:3285:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;918:222:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:987:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1890:987:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1368:158:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1368:158:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:50:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;339:50:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3463:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3463:116:18;;;;;;;;;;;;;;;;;;;;;;;513:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;513:50:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:40:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;395:40:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:222;1031:9;1004:12;:10;:12::i;:::-;1043:1;1031:13;;1026:107;1050:6;:13;1046:1;:17;1026:107;;;1118:12;1131:1;1118:15;;;;;;;;;;;;;;;;;;1082:11;:22;1094:6;1101:1;1094:9;;;;;;;;;;;;;;;;;;1082:22;;;;;;;;;;;;;;;:33;;:51;;;;1065:3;;;;;;;1026:107;;;918:222;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;1890:987:18:-;2647:17;2087:7;;;;;;;;;;;2074:29;;;2104:10;2074:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2074:41:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2074:41:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2074:41:18;;;;;;;;;;;;;;;;2066:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2181:1;2175:2;:7;;;;2167:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2241:1;2232:6;:10;2224:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2352:27;2365:5;2372:6;2352:12;:27::i;:::-;2344:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2455:6;2422:11;:18;2434:5;2422:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2484:1;2475:5;:10;;;2471:400;;;2509:7;;;;;;;;;;;:33;;;2543:2;2547:6;2559:19;2509:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2509:70:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2509:70:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2509:70:18;;;;;;;;;;;;;;;;2501:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:400;;;2720:2;2724:6;2667:64;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2667:64:18;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2667:64:18;2647:84;;2753:7;;;;;;;;;;;:33;;;2787:5;2794:1;2797:4;2803:19;2753:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2753:70:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2753:70:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2753:70:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2753:70:18;;;;;;;;;;;;;;;;2745:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:400;1890:987;;;;:::o;626:248:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;1368:158:18:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:10:18;1477:11;:18;1489:5;1477:18;;;;;;;;;;;;;;;:29;;:42;;;;1368:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;3463:116::-;3525:4;3565:6;3559:3;:12;;;;;;;;3552:3;:20;3545:27;;3463:116;:::o;513:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;434:300:7:-;648:1;636:7;;;;;;;;;;;628:21;;;620:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:10;692:7;;:35;;;;;;;;;;;;;;;;;;434:300::o;2883:488:18:-;2970:4;2990:29;3022:11;:18;3034:5;3022:18;;;;;;;;;;;;;;;2990:50;;3064:10;:18;;;3054:7;:5;:7::i;:::-;:28;3050:126;;;3119:7;:5;:7::i;:::-;3098:10;:18;;:28;;;;3164:1;3140:10;:21;;:25;;;;3050:126;3226:10;:21;;;3216:6;3192:10;:21;;;:30;:55;;:125;;;;;3296:10;:21;;;3287:6;3263:10;:21;;;:30;:54;3192:125;3185:157;;;3338:4;3331:11;;;;3185:157;3359:5;3352:12;;2883:488;;;;;;:::o", - "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\nimport \"../Enum.sol\";\n\n\n/// @title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - \ncontract DailyLimitModule is Module {\n\n string public constant NAME = \"Daily Limit Module\";\n string public constant VERSION = \"0.0.1\";\n\n // dailyLimits mapping maps token address to daily limit settings.\n mapping (address => DailyLimit) public dailyLimits;\n\n struct DailyLimit {\n uint256 dailyLimit;\n uint256 spentToday;\n uint256 lastDay;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).\n function setup(address[] tokens, uint256[] _dailyLimits)\n public\n {\n setManager();\n for (uint256 i = 0; i < tokens.length; i++)\n dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\n }\n\n /// @dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n /// @param token Token contract address.\n /// @param dailyLimit Daily limit in smallest token unit.\n function changeDailyLimit(address token, uint256 dailyLimit)\n public\n authorized\n {\n dailyLimits[token].dailyLimit = dailyLimit;\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param token Address of the token that should be transfered (0 for Ether)\n /// @param to Address to which the tokens should be transfered\n /// @param amount Amount of tokens (or Ether) that should be transfered\n /// @return Returns if transaction can be executed.\n function executeDailyLimit(address token, address to, uint256 amount)\n public\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(OwnerManager(manager).isOwner(msg.sender), \"Method can only be called by an owner\");\n require(to != 0, \"Invalid to address provided\");\n require(amount > 0, \"Invalid amount provided\");\n // Validate that transfer is not exceeding daily limit.\n require(isUnderLimit(token, amount), \"Daily limit has been reached\");\n dailyLimits[token].spentToday += amount;\n if (token == 0) {\n require(manager.execTransactionFromModule(to, amount, \"\", Enum.Operation.Call), \"Could not execute ether transfer\");\n } else {\n bytes memory data = abi.encodeWithSignature(\"transfer(address,uint256)\", to, amount);\n require(manager.execTransactionFromModule(token, 0, data, Enum.Operation.Call), \"Could not execute token transfer\");\n }\n }\n\n function isUnderLimit(address token, uint256 amount)\n internal\n returns (bool)\n {\n DailyLimit storage dailyLimit = dailyLimits[token];\n if (today() > dailyLimit.lastDay) {\n dailyLimit.lastDay = today();\n dailyLimit.spentToday = 0;\n }\n if ( dailyLimit.spentToday + amount <= dailyLimit.dailyLimit\n && dailyLimit.spentToday + amount > dailyLimit.spentToday)\n return true;\n return false;\n }\n\n /// @dev Returns last midnight as Unix timestamp.\n /// @return Unix timestamp.\n function today()\n public\n view\n returns (uint)\n {\n return now - (now % 1 days);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b5061129b806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f031461009e578063481c6a751461014757806363bae7c31461019e5780637de7edef1461020b57806381c5e03b1461024e578063a3f4df7e1461029b578063b74e452b1461032b578063d7bffc9214610356578063ffa1ad74146103bb575b600080fd5b3480156100aa57600080fd5b50610145600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061044b565b005b34801561015357600080fd5b5061015c6104ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101aa57600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610510565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d00565b005b34801561025a57600080fd5b50610299600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee3565b005b3480156102a757600080fd5b506102b0611019565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f05780820151818401526020810190506102d5565b50505050905090810190601f16801561031d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033757600080fd5b50610340611052565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061106a565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103c757600080fd5b506103d0611094565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104556110cd565b600090505b82518110156104e557818181518110151561047157fe5b9060200190602002015160026000858481518110151561048d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550808060010191505061045a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105cf57600080fd5b505af11580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b810190808051906020019092919050505015156106a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e2081526020017f6f776e657200000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e76616c696420746f20616464726573732070726f7669646564000000000081525060200191505060405180910390fd5b6000821115156107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420616d6f756e742070726f766964656400000000000000000081525060200191505060405180910390fd5b6107b584836111c0565b1515610829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4461696c79206c696d697420686173206265656e20726561636865640000000081525060200191505060405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060008473ffffffffffffffffffffffffffffffffffffffff161415610a3c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7848460006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018060200183600281111561095157fe5b60ff168152602001828103825260008152602001602001945050505050602060405180830381600087803b15801561098857600080fd5b505af115801561099c573d6000803e3d6000fd5b505050506040513d60208110156109b257600080fd5b81019080805190602001909291905050501515610a37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f742065786563757465206574686572207472616e7366657281525060200191505060405180910390fd5b610cfa565b8282604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78560008460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bbb57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bfb578082015181840152602081019050610be0565b50505050905090810190601f168015610c285780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b505050506040513d6020811015610c7457600080fd5b81019080805190602001909291905050501515610cf9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74206578656375746520746f6b656e207472616e7366657281525060200191505060405180910390fd5b5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610deb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ea0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561106257fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154611211611052565b11156112325761121f611052565b8160020181905550600081600101819055505b806000015483826001015401111580156112555750806001015483826001015401115b156112635760019150611268565b600091505b50929150505600a165627a7a72305820829e0119c133a410205606912728b71003dbd7359410bad5c3588c1681dc2d3d0029", + "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f031461009e578063481c6a751461014757806363bae7c31461019e5780637de7edef1461020b57806381c5e03b1461024e578063a3f4df7e1461029b578063b74e452b1461032b578063d7bffc9214610356578063ffa1ad74146103bb575b600080fd5b3480156100aa57600080fd5b50610145600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061044b565b005b34801561015357600080fd5b5061015c6104ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101aa57600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610510565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d00565b005b34801561025a57600080fd5b50610299600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee3565b005b3480156102a757600080fd5b506102b0611019565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f05780820151818401526020810190506102d5565b50505050905090810190601f16801561031d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033757600080fd5b50610340611052565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061106a565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103c757600080fd5b506103d0611094565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104556110cd565b600090505b82518110156104e557818181518110151561047157fe5b9060200190602002015160026000858481518110151561048d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550808060010191505061045a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105cf57600080fd5b505af11580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b810190808051906020019092919050505015156106a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e2081526020017f6f776e657200000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e76616c696420746f20616464726573732070726f7669646564000000000081525060200191505060405180910390fd5b6000821115156107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420616d6f756e742070726f766964656400000000000000000081525060200191505060405180910390fd5b6107b584836111c0565b1515610829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4461696c79206c696d697420686173206265656e20726561636865640000000081525060200191505060405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060008473ffffffffffffffffffffffffffffffffffffffff161415610a3c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7848460006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018060200183600281111561095157fe5b60ff168152602001828103825260008152602001602001945050505050602060405180830381600087803b15801561098857600080fd5b505af115801561099c573d6000803e3d6000fd5b505050506040513d60208110156109b257600080fd5b81019080805190602001909291905050501515610a37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f742065786563757465206574686572207472616e7366657281525060200191505060405180910390fd5b610cfa565b8282604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78560008460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bbb57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bfb578082015181840152602081019050610be0565b50505050905090810190601f168015610c285780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b505050506040513d6020811015610c7457600080fd5b81019080805190602001909291905050501515610cf9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74206578656375746520746f6b656e207472616e7366657281525060200191505060405180910390fd5b5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610deb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ea0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561106257fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154611211611052565b11156112325761121f611052565b8160020181905550600081600101819055505b806000015483826001015401111580156112555750806001015483826001015401115b156112635760019150611268565b600091505b50929150505600a165627a7a72305820829e0119c133a410205606912728b71003dbd7359410bad5c3588c1681dc2d3d0029", + "sourceMap": "296:3283:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;296:3283:20;;;;;;;", + "deployedSourceMap": "296:3283:20:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;918:222:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:8;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:987:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1890:987:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1368:158:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1368:158:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:50:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;339:50:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3461:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3461:116:20;;;;;;;;;;;;;;;;;;;;;;;513:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;513:50:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:40:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;395:40:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:222;1031:9;1004:12;:10;:12::i;:::-;1043:1;1031:13;;1026:107;1050:6;:13;1046:1;:17;1026:107;;;1118:12;1131:1;1118:15;;;;;;;;;;;;;;;;;;1082:11;:22;1094:6;1101:1;1094:9;;;;;;;;;;;;;;;;;;1082:22;;;;;;;;;;;;;;;:33;;:51;;;;1065:3;;;;;;;1026:107;;;918:222;;;:::o;262:28:8:-;;;;;;;;;;;;;:::o;1890:987:20:-;2647:17;2087:7;;;;;;;;;;;2074:29;;;2104:10;2074:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2074:41:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2074:41:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2074:41:20;;;;;;;;;;;;;;;;2066:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2181:1;2175:2;:7;;;;2167:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2241:1;2232:6;:10;2224:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2352:27;2365:5;2372:6;2352:12;:27::i;:::-;2344:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2455:6;2422:11;:18;2434:5;2422:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2484:1;2475:5;:10;;;2471:400;;;2509:7;;;;;;;;;;;:33;;;2543:2;2547:6;2559:19;2509:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2509:70:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2509:70:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2509:70:20;;;;;;;;;;;;;;;;2501:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:400;;;2720:2;2724:6;2667:64;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2667:64:20;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2667:64:20;2647:84;;2753:7;;;;;;;;;;;:33;;;2787:5;2794:1;2797:4;2803:19;2753:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2753:70:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2753:70:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2753:70:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2753:70:20;;;;;;;;;;;;;;;;2745:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:400;1890:987;;;;:::o;626:248:5:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;1368:158:20:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:10:20;1477:11;:18;1489:5;1477:18;;;;;;;;;;;;;;;:29;;:42;;;;1368:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;3461:116::-;3523:4;3563:6;3557:3;:12;;;;;;;;3550:3;:20;3543:27;;3461:116;:::o;513:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;434:300:8:-;648:1;636:7;;;;;;;;;;;628:21;;;620:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:10;692:7;;:35;;;;;;;;;;;;;;;;;;434:300::o;2883:486:20:-;2970:4;2990:29;3022:11;:18;3034:5;3022:18;;;;;;;;;;;;;;;2990:50;;3064:10;:18;;;3054:7;:5;:7::i;:::-;:28;3050:126;;;3119:7;:5;:7::i;:::-;3098:10;:18;;:28;;;;3164:1;3140:10;:21;;:25;;;;3050:126;3223:10;:21;;;3213:6;3189:10;:21;;;:30;:55;;:126;;;;;3294:10;:21;;;3285:6;3261:10;:21;;;:30;:54;3189:126;3185:155;;;3336:4;3329:11;;;;3185:155;3357:5;3350:12;;2883:486;;;;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\nimport \"../Enum.sol\";\n\n\n/// @title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - \ncontract DailyLimitModule is Module {\n\n string public constant NAME = \"Daily Limit Module\";\n string public constant VERSION = \"0.0.1\";\n\n // dailyLimits mapping maps token address to daily limit settings.\n mapping (address => DailyLimit) public dailyLimits;\n\n struct DailyLimit {\n uint256 dailyLimit;\n uint256 spentToday;\n uint256 lastDay;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).\n function setup(address[] tokens, uint256[] _dailyLimits)\n public\n {\n setManager();\n for (uint256 i = 0; i < tokens.length; i++)\n dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\n }\n\n /// @dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n /// @param token Token contract address.\n /// @param dailyLimit Daily limit in smallest token unit.\n function changeDailyLimit(address token, uint256 dailyLimit)\n public\n authorized\n {\n dailyLimits[token].dailyLimit = dailyLimit;\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param token Address of the token that should be transfered (0 for Ether)\n /// @param to Address to which the tokens should be transfered\n /// @param amount Amount of tokens (or Ether) that should be transfered\n /// @return Returns if transaction can be executed.\n function executeDailyLimit(address token, address to, uint256 amount)\n public\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(OwnerManager(manager).isOwner(msg.sender), \"Method can only be called by an owner\");\n require(to != 0, \"Invalid to address provided\");\n require(amount > 0, \"Invalid amount provided\");\n // Validate that transfer is not exceeding daily limit.\n require(isUnderLimit(token, amount), \"Daily limit has been reached\");\n dailyLimits[token].spentToday += amount;\n if (token == 0) {\n require(manager.execTransactionFromModule(to, amount, \"\", Enum.Operation.Call), \"Could not execute ether transfer\");\n } else {\n bytes memory data = abi.encodeWithSignature(\"transfer(address,uint256)\", to, amount);\n require(manager.execTransactionFromModule(token, 0, data, Enum.Operation.Call), \"Could not execute token transfer\");\n }\n }\n\n function isUnderLimit(address token, uint256 amount)\n internal\n returns (bool)\n {\n DailyLimit storage dailyLimit = dailyLimits[token];\n if (today() > dailyLimit.lastDay) {\n dailyLimit.lastDay = today();\n dailyLimit.spentToday = 0;\n }\n if (dailyLimit.spentToday + amount <= dailyLimit.dailyLimit && \n dailyLimit.spentToday + amount > dailyLimit.spentToday)\n return true;\n return false;\n }\n\n /// @dev Returns last midnight as Unix timestamp.\n /// @return Unix timestamp.\n function today()\n public\n view\n returns (uint)\n {\n return now - (now % 1 days);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "exportedSymbols": { "DailyLimitModule": [ - 2079 + 3415 ] }, - "id": 2080, + "id": 3416, "nodeType": "SourceUnit", "nodes": [ { - "id": 1842, + "id": 3178, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:18" + "src": "0:23:20" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1843, + "id": 3179, "nodeType": "ImportDirective", - "scope": 2080, - "sourceUnit": 733, - "src": "24:23:18", + "scope": 3416, + "sourceUnit": 1862, + "src": "24:23:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1844, + "id": 3180, "nodeType": "ImportDirective", - "scope": 2080, - "sourceUnit": 1104, - "src": "48:30:18", + "scope": 3416, + "sourceUnit": 2233, + "src": "48:30:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1845, + "id": 3181, "nodeType": "ImportDirective", - "scope": 2080, - "sourceUnit": 1514, - "src": "79:29:18", + "scope": 3416, + "sourceUnit": 2889, + "src": "79:29:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1846, + "id": 3182, "nodeType": "ImportDirective", - "scope": 2080, + "scope": 3416, "sourceUnit": 31, - "src": "109:21:18", + "src": "109:21:20", "symbolAliases": [], "unitAlias": "" }, @@ -233,46 +233,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1847, + "id": 3183, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 732, - "src": "325:6:18", + "referencedDeclaration": 1861, + "src": "325:6:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$732", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, - "id": 1848, + "id": 3184, "nodeType": "InheritanceSpecifier", - "src": "325:6:18" + "src": "325:6:20" } ], "contractDependencies": [ 632, - 732, - 1663 + 1861, + 3065 ], "contractKind": "contract", "documentation": "@title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2079, + "id": 3415, "linearizedBaseContracts": [ - 2079, - 732, + 3415, + 1861, 632, - 1663 + 3065 ], "name": "DailyLimitModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1851, + "id": 3187, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2079, - "src": "339:50:18", + "scope": 3415, + "src": "339:50:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -280,10 +280,10 @@ "typeString": "string" }, "typeName": { - "id": 1849, + "id": 3185, "name": "string", "nodeType": "ElementaryTypeName", - "src": "339:6:18", + "src": "339:6:20", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -292,14 +292,14 @@ "value": { "argumentTypes": null, "hexValue": "4461696c79204c696d6974204d6f64756c65", - "id": 1850, + "id": 3186, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "369:20:18", + "src": "369:20:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_821ea27acfbc77b49f7a021dbe2eb92017d46b8bdda0bff9901cbc8ee143ceb3", @@ -311,11 +311,11 @@ }, { "constant": true, - "id": 1854, + "id": 3190, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2079, - "src": "395:40:18", + "scope": 3415, + "src": "395:40:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -323,10 +323,10 @@ "typeString": "string" }, "typeName": { - "id": 1852, + "id": 3188, "name": "string", "nodeType": "ElementaryTypeName", - "src": "395:6:18", + "src": "395:6:20", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -335,14 +335,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1853, + "id": 3189, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "428:7:18", + "src": "428:7:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -354,44 +354,44 @@ }, { "constant": false, - "id": 1858, + "id": 3194, "name": "dailyLimits", "nodeType": "VariableDeclaration", - "scope": 2079, - "src": "513:50:18", + "scope": 3415, + "src": "513:50:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1865_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$3201_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "typeName": { - "id": 1857, + "id": 3193, "keyType": { - "id": 1855, + "id": 3191, "name": "address", "nodeType": "ElementaryTypeName", - "src": "522:7:18", + "src": "522:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "513:31:18", + "src": "513:31:20", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1865_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$3201_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "valueType": { "contractScope": null, - "id": 1856, + "id": 3192, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1865, - "src": "533:10:18", + "referencedDeclaration": 3201, + "src": "533:10:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } } @@ -401,15 +401,15 @@ }, { "canonicalName": "DailyLimitModule.DailyLimit", - "id": 1865, + "id": 3201, "members": [ { "constant": false, - "id": 1860, + "id": 3196, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1865, - "src": "598:18:18", + "scope": 3201, + "src": "598:18:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -417,10 +417,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1859, + "id": 3195, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "598:7:18", + "src": "598:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -431,11 +431,11 @@ }, { "constant": false, - "id": 1862, + "id": 3198, "name": "spentToday", "nodeType": "VariableDeclaration", - "scope": 1865, - "src": "626:18:18", + "scope": 3201, + "src": "626:18:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -443,10 +443,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1861, + "id": 3197, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "626:7:18", + "src": "626:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -457,11 +457,11 @@ }, { "constant": false, - "id": 1864, + "id": 3200, "name": "lastDay", "nodeType": "VariableDeclaration", - "scope": 1865, - "src": "654:15:18", + "scope": 3201, + "src": "654:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -469,10 +469,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1863, + "id": 3199, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "654:7:18", + "src": "654:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -484,15 +484,15 @@ ], "name": "DailyLimit", "nodeType": "StructDefinition", - "scope": 2079, - "src": "570:106:18", + "scope": 3415, + "src": "570:106:20", "visibility": "public" }, { "body": { - "id": 1900, + "id": 3236, "nodeType": "Block", - "src": "994:146:18", + "src": "994:146:20", "statements": [ { "expression": { @@ -500,18 +500,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1874, + "id": 3210, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 731, - "src": "1004:10:18", + "referencedDeclaration": 1860, + "src": "1004:10:20", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 1875, + "id": 3211, "isConstant": false, "isLValue": false, "isPure": false, @@ -519,21 +519,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1004:12:18", + "src": "1004:12:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1876, + "id": 3212, "nodeType": "ExpressionStatement", - "src": "1004:12:18" + "src": "1004:12:20" }, { "body": { "expression": { "argumentTypes": null, - "id": 1897, + "id": 3233, "isConstant": false, "isLValue": false, "isPure": false, @@ -544,42 +544,42 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1888, + "id": 3224, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "1082:11:18", + "referencedDeclaration": 3194, + "src": "1082:11:20", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1865_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$3201_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1892, + "id": 3228, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1889, + "id": 3225, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1868, - "src": "1094:6:18", + "referencedDeclaration": 3204, + "src": "1094:6:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1891, + "id": 3227, "indexExpression": { "argumentTypes": null, - "id": 1890, + "id": 3226, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1878, - "src": "1101:1:18", + "referencedDeclaration": 3214, + "src": "1101:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -590,7 +590,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1094:9:18", + "src": "1094:9:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -601,21 +601,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1082:22:18", + "src": "1082:22:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1893, + "id": 3229, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1860, - "src": "1082:33:18", + "referencedDeclaration": 3196, + "src": "1082:33:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -627,26 +627,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1894, + "id": 3230, "name": "_dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1871, - "src": "1118:12:18", + "referencedDeclaration": 3207, + "src": "1118:12:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1896, + "id": 3232, "indexExpression": { "argumentTypes": null, - "id": 1895, + "id": 3231, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1878, - "src": "1131:1:18", + "referencedDeclaration": 3214, + "src": "1131:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -657,21 +657,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1118:15:18", + "src": "1118:15:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1082:51:18", + "src": "1082:51:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1898, + "id": 3234, "nodeType": "ExpressionStatement", - "src": "1082:51:18" + "src": "1082:51:20" }, "condition": { "argumentTypes": null, @@ -679,19 +679,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1884, + "id": 3220, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1881, + "id": 3217, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1878, - "src": "1046:1:18", + "referencedDeclaration": 3214, + "src": "1046:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -703,18 +703,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1882, + "id": 3218, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1868, - "src": "1050:6:18", + "referencedDeclaration": 3204, + "src": "1050:6:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1883, + "id": 3219, "isConstant": false, "isLValue": false, "isPure": false, @@ -722,31 +722,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1050:13:18", + "src": "1050:13:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1046:17:18", + "src": "1046:17:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1899, + "id": 3235, "initializationExpression": { "assignments": [ - 1878 + 3214 ], "declarations": [ { "constant": false, - "id": 1878, + "id": 3214, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1901, - "src": "1031:9:18", + "scope": 3237, + "src": "1031:9:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -754,10 +754,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1877, + "id": 3213, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1031:7:18", + "src": "1031:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -767,18 +767,18 @@ "visibility": "internal" } ], - "id": 1880, + "id": 3216, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1879, + "id": 3215, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1043:1:18", + "src": "1043:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -787,12 +787,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1031:13:18" + "src": "1031:13:20" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1886, + "id": 3222, "isConstant": false, "isLValue": false, "isPure": false, @@ -800,15 +800,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1065:3:18", + "src": "1065:3:20", "subExpression": { "argumentTypes": null, - "id": 1885, + "id": 3221, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1878, - "src": "1065:1:18", + "referencedDeclaration": 3214, + "src": "1065:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -819,17 +819,17 @@ "typeString": "uint256" } }, - "id": 1887, + "id": 3223, "nodeType": "ExpressionStatement", - "src": "1065:3:18" + "src": "1065:3:20" }, "nodeType": "ForStatement", - "src": "1026:107:18" + "src": "1026:107:20" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param tokens List of token addresses. Ether is represented with address 0x0.\n @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).", - "id": 1901, + "id": 3237, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -837,16 +837,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 1872, + "id": 3208, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1868, + "id": 3204, "name": "tokens", "nodeType": "VariableDeclaration", - "scope": 1901, - "src": "933:16:18", + "scope": 3237, + "src": "933:16:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -855,19 +855,19 @@ }, "typeName": { "baseType": { - "id": 1866, + "id": 3202, "name": "address", "nodeType": "ElementaryTypeName", - "src": "933:7:18", + "src": "933:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1867, + "id": 3203, "length": null, "nodeType": "ArrayTypeName", - "src": "933:9:18", + "src": "933:9:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -878,11 +878,11 @@ }, { "constant": false, - "id": 1871, + "id": 3207, "name": "_dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1901, - "src": "951:22:18", + "scope": 3237, + "src": "951:22:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -891,19 +891,19 @@ }, "typeName": { "baseType": { - "id": 1869, + "id": 3205, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "951:7:18", + "src": "951:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1870, + "id": 3206, "length": null, "nodeType": "ArrayTypeName", - "src": "951:9:18", + "src": "951:9:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -913,31 +913,31 @@ "visibility": "internal" } ], - "src": "932:42:18" + "src": "932:42:20" }, "payable": false, "returnParameters": { - "id": 1873, + "id": 3209, "nodeType": "ParameterList", "parameters": [], - "src": "994:0:18" + "src": "994:0:20" }, - "scope": 2079, - "src": "918:222:18", + "scope": 3415, + "src": "918:222:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1917, + "id": 3253, "nodeType": "Block", - "src": "1467:59:18", + "src": "1467:59:20", "statements": [ { "expression": { "argumentTypes": null, - "id": 1915, + "id": 3251, "isConstant": false, "isLValue": false, "isPure": false, @@ -948,26 +948,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1910, + "id": 3246, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "1477:11:18", + "referencedDeclaration": 3194, + "src": "1477:11:20", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1865_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$3201_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1912, + "id": 3248, "indexExpression": { "argumentTypes": null, - "id": 1911, + "id": 3247, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1903, - "src": "1489:5:18", + "referencedDeclaration": 3239, + "src": "1489:5:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -978,21 +978,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1477:18:18", + "src": "1477:18:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1913, + "id": 3249, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1860, - "src": "1477:29:18", + "referencedDeclaration": 3196, + "src": "1477:29:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1002,68 +1002,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1914, + "id": 3250, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1905, - "src": "1509:10:18", + "referencedDeclaration": 3241, + "src": "1509:10:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1477:42:18", + "src": "1477:42:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1916, + "id": 3252, "nodeType": "ExpressionStatement", - "src": "1477:42:18" + "src": "1477:42:20" } ] }, "documentation": "@dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n @param token Token contract address.\n @param dailyLimit Daily limit in smallest token unit.", - "id": 1918, + "id": 3254, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1908, + "id": 3244, "modifierName": { "argumentTypes": null, - "id": 1907, + "id": 3243, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "1452:10:18", + "referencedDeclaration": 1840, + "src": "1452:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1452:10:18" + "src": "1452:10:20" } ], "name": "changeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1906, + "id": 3242, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1903, + "id": 3239, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1918, - "src": "1394:13:18", + "scope": 3254, + "src": "1394:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1071,10 +1071,10 @@ "typeString": "address" }, "typeName": { - "id": 1902, + "id": 3238, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1394:7:18", + "src": "1394:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1085,11 +1085,11 @@ }, { "constant": false, - "id": 1905, + "id": 3241, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1918, - "src": "1409:18:18", + "scope": 3254, + "src": "1409:18:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1097,10 +1097,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1904, + "id": 3240, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1409:7:18", + "src": "1409:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1110,26 +1110,26 @@ "visibility": "internal" } ], - "src": "1393:35:18" + "src": "1393:35:20" }, "payable": false, "returnParameters": { - "id": 1909, + "id": 3245, "nodeType": "ParameterList", "parameters": [], - "src": "1467:0:18" + "src": "1467:0:20" }, - "scope": 2079, - "src": "1368:158:18", + "scope": 3415, + "src": "1368:158:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2008, + "id": 3344, "nodeType": "Block", - "src": "1979:898:18", + "src": "1979:898:20", "statements": [ { "expression": { @@ -1142,18 +1142,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1932, + "id": 3268, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2700, - "src": "2104:3:18", + "referencedDeclaration": 4036, + "src": "2104:3:20", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1933, + "id": 3269, "isConstant": false, "isLValue": false, "isPure": false, @@ -1161,7 +1161,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2104:10:18", + "src": "2104:10:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1180,14 +1180,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1929, + "id": 3265, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 697, - "src": "2087:7:18", + "referencedDeclaration": 1826, + "src": "2087:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } } @@ -1195,22 +1195,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } ], - "id": 1928, + "id": 3264, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1513, - "src": "2074:12:18", + "referencedDeclaration": 2888, + "src": "2074:12:20", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1513_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$2888_$", "typeString": "type(contract OwnerManager)" } }, - "id": 1930, + "id": 3266, "isConstant": false, "isLValue": false, "isPure": false, @@ -1218,27 +1218,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2074:21:18", + "src": "2074:21:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1513", + "typeIdentifier": "t_contract$_OwnerManager_$2888", "typeString": "contract OwnerManager" } }, - "id": 1931, + "id": 3267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1463, - "src": "2074:29:18", + "referencedDeclaration": 2838, + "src": "2074:29:20", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 1934, + "id": 3270, "isConstant": false, "isLValue": false, "isPure": false, @@ -1246,7 +1246,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2074:41:18", + "src": "2074:41:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1255,14 +1255,14 @@ { "argumentTypes": null, "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e206f776e6572", - "id": 1935, + "id": 3271, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2117:39:18", + "src": "2117:39:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", @@ -1282,21 +1282,21 @@ "typeString": "literal_string \"Method can only be called by an owner\"" } ], - "id": 1927, + "id": 3263, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2066:7:18", + "referencedDeclaration": 4040, + "src": "2066:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1936, + "id": 3272, "isConstant": false, "isLValue": false, "isPure": false, @@ -1304,15 +1304,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2066:91:18", + "src": "2066:91:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1937, + "id": 3273, "nodeType": "ExpressionStatement", - "src": "2066:91:18" + "src": "2066:91:20" }, { "expression": { @@ -1324,19 +1324,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1941, + "id": 3277, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1939, + "id": 3275, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1922, - "src": "2175:2:18", + "referencedDeclaration": 3258, + "src": "2175:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1347,14 +1347,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1940, + "id": 3276, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2181:1:18", + "src": "2181:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1362,7 +1362,7 @@ }, "value": "0" }, - "src": "2175:7:18", + "src": "2175:7:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1371,14 +1371,14 @@ { "argumentTypes": null, "hexValue": "496e76616c696420746f20616464726573732070726f7669646564", - "id": 1942, + "id": 3278, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2184:29:18", + "src": "2184:29:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5adba0692e08f8080ea3ec2bf95727d181df9c72d0fc6db8f77e3703d9523f1", @@ -1398,21 +1398,21 @@ "typeString": "literal_string \"Invalid to address provided\"" } ], - "id": 1938, + "id": 3274, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2167:7:18", + "referencedDeclaration": 4040, + "src": "2167:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1943, + "id": 3279, "isConstant": false, "isLValue": false, "isPure": false, @@ -1420,15 +1420,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2167:47:18", + "src": "2167:47:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1944, + "id": 3280, "nodeType": "ExpressionStatement", - "src": "2167:47:18" + "src": "2167:47:20" }, { "expression": { @@ -1440,19 +1440,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1948, + "id": 3284, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1946, + "id": 3282, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1924, - "src": "2232:6:18", + "referencedDeclaration": 3260, + "src": "2232:6:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1463,14 +1463,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1947, + "id": 3283, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2241:1:18", + "src": "2241:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1478,7 +1478,7 @@ }, "value": "0" }, - "src": "2232:10:18", + "src": "2232:10:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1487,14 +1487,14 @@ { "argumentTypes": null, "hexValue": "496e76616c696420616d6f756e742070726f7669646564", - "id": 1949, + "id": 3285, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2244:25:18", + "src": "2244:25:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_991bec80688b0edba4751e32429f6879002de57199ff2c6b5bf0742d348ba58f", @@ -1514,21 +1514,21 @@ "typeString": "literal_string \"Invalid amount provided\"" } ], - "id": 1945, + "id": 3281, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2224:7:18", + "referencedDeclaration": 4040, + "src": "2224:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1950, + "id": 3286, "isConstant": false, "isLValue": false, "isPure": false, @@ -1536,15 +1536,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2224:46:18", + "src": "2224:46:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1951, + "id": 3287, "nodeType": "ExpressionStatement", - "src": "2224:46:18" + "src": "2224:46:20" }, { "expression": { @@ -1555,12 +1555,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1954, + "id": 3290, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1920, - "src": "2365:5:18", + "referencedDeclaration": 3256, + "src": "2365:5:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1568,12 +1568,12 @@ }, { "argumentTypes": null, - "id": 1955, + "id": 3291, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1924, - "src": "2372:6:18", + "referencedDeclaration": 3260, + "src": "2372:6:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1591,18 +1591,18 @@ "typeString": "uint256" } ], - "id": 1953, + "id": 3289, "name": "isUnderLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2065, - "src": "2352:12:18", + "referencedDeclaration": 3401, + "src": "2352:12:20", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, - "id": 1956, + "id": 3292, "isConstant": false, "isLValue": false, "isPure": false, @@ -1610,7 +1610,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2352:27:18", + "src": "2352:27:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1619,14 +1619,14 @@ { "argumentTypes": null, "hexValue": "4461696c79206c696d697420686173206265656e2072656163686564", - "id": 1957, + "id": 3293, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2381:30:18", + "src": "2381:30:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8c8c9a9731e3c1970f356c6998c7e6418ab5b55402b68846f03a8bbe49c05905", @@ -1646,21 +1646,21 @@ "typeString": "literal_string \"Daily limit has been reached\"" } ], - "id": 1952, + "id": 3288, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2344:7:18", + "referencedDeclaration": 4040, + "src": "2344:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1958, + "id": 3294, "isConstant": false, "isLValue": false, "isPure": false, @@ -1668,20 +1668,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2344:68:18", + "src": "2344:68:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1959, + "id": 3295, "nodeType": "ExpressionStatement", - "src": "2344:68:18" + "src": "2344:68:20" }, { "expression": { "argumentTypes": null, - "id": 1965, + "id": 3301, "isConstant": false, "isLValue": false, "isPure": false, @@ -1692,26 +1692,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1960, + "id": 3296, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "2422:11:18", + "referencedDeclaration": 3194, + "src": "2422:11:20", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1865_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$3201_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1962, + "id": 3298, "indexExpression": { "argumentTypes": null, - "id": 1961, + "id": 3297, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1920, - "src": "2434:5:18", + "referencedDeclaration": 3256, + "src": "2434:5:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1722,21 +1722,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2422:18:18", + "src": "2422:18:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1963, + "id": 3299, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1862, - "src": "2422:29:18", + "referencedDeclaration": 3198, + "src": "2422:29:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1746,26 +1746,26 @@ "operator": "+=", "rightHandSide": { "argumentTypes": null, - "id": 1964, + "id": 3300, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1924, - "src": "2455:6:18", + "referencedDeclaration": 3260, + "src": "2455:6:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2422:39:18", + "src": "2422:39:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1966, + "id": 3302, "nodeType": "ExpressionStatement", - "src": "2422:39:18" + "src": "2422:39:20" }, { "condition": { @@ -1774,19 +1774,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1969, + "id": 3305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1967, + "id": 3303, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1920, - "src": "2475:5:18", + "referencedDeclaration": 3256, + "src": "2475:5:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1797,14 +1797,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1968, + "id": 3304, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2484:1:18", + "src": "2484:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1812,29 +1812,29 @@ }, "value": "0" }, - "src": "2475:10:18", + "src": "2475:10:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 2006, + "id": 3342, "nodeType": "Block", - "src": "2633:238:18", + "src": "2633:238:20", "statements": [ { "assignments": [ - 1985 + 3321 ], "declarations": [ { "constant": false, - "id": 1985, + "id": 3321, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2009, - "src": "2647:17:18", + "scope": 3345, + "src": "2647:17:20", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1842,10 +1842,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1984, + "id": 3320, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2647:5:18", + "src": "2647:5:20", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1855,21 +1855,21 @@ "visibility": "internal" } ], - "id": 1992, + "id": 3328, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "7472616e7366657228616464726573732c75696e7432353629", - "id": 1988, + "id": 3324, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2691:27:18", + "src": "2691:27:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", @@ -1879,12 +1879,12 @@ }, { "argumentTypes": null, - "id": 1989, + "id": 3325, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1922, - "src": "2720:2:18", + "referencedDeclaration": 3258, + "src": "2720:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1892,12 +1892,12 @@ }, { "argumentTypes": null, - "id": 1990, + "id": 3326, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1924, - "src": "2724:6:18", + "referencedDeclaration": 3260, + "src": "2724:6:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1921,18 +1921,18 @@ ], "expression": { "argumentTypes": null, - "id": 1986, + "id": 3322, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2687, - "src": "2667:3:18", + "referencedDeclaration": 4023, + "src": "2667:3:20", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 1987, + "id": 3323, "isConstant": false, "isLValue": false, "isPure": true, @@ -1940,13 +1940,13 @@ "memberName": "encodeWithSignature", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2667:23:18", + "src": "2667:23:20", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (string memory) pure returns (bytes memory)" } }, - "id": 1991, + "id": 3327, "isConstant": false, "isLValue": false, "isPure": false, @@ -1954,14 +1954,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2667:64:18", + "src": "2667:64:20", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2647:84:18" + "src": "2647:84:20" }, { "expression": { @@ -1972,12 +1972,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1996, + "id": 3332, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1920, - "src": "2787:5:18", + "referencedDeclaration": 3256, + "src": "2787:5:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1986,14 +1986,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1997, + "id": 3333, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2794:1:18", + "src": "2794:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2003,12 +2003,12 @@ }, { "argumentTypes": null, - "id": 1998, + "id": 3334, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1985, - "src": "2797:4:18", + "referencedDeclaration": 3321, + "src": "2797:4:20", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2020,18 +2020,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1999, + "id": 3335, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2803:4:18", + "src": "2803:4:20", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 2000, + "id": 3336, "isConstant": false, "isLValue": false, "isPure": false, @@ -2039,13 +2039,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2803:14:18", + "src": "2803:14:20", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 2001, + "id": 3337, "isConstant": false, "isLValue": false, "isPure": true, @@ -2053,7 +2053,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2803:19:18", + "src": "2803:19:20", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2081,32 +2081,32 @@ ], "expression": { "argumentTypes": null, - "id": 1994, + "id": 3330, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 697, - "src": "2753:7:18", + "referencedDeclaration": 1826, + "src": "2753:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, - "id": 1995, + "id": 3331, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 930, - "src": "2753:33:18", + "referencedDeclaration": 2059, + "src": "2753:33:20", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2002, + "id": 3338, "isConstant": false, "isLValue": false, "isPure": false, @@ -2114,7 +2114,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2753:70:18", + "src": "2753:70:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2123,14 +2123,14 @@ { "argumentTypes": null, "hexValue": "436f756c64206e6f74206578656375746520746f6b656e207472616e73666572", - "id": 2003, + "id": 3339, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2825:34:18", + "src": "2825:34:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_00c0b742664159361be6aebbe2af44c4ae7eb95e13260265d1e1cf75d2593709", @@ -2150,21 +2150,21 @@ "typeString": "literal_string \"Could not execute token transfer\"" } ], - "id": 1993, + "id": 3329, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2745:7:18", + "referencedDeclaration": 4040, + "src": "2745:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2004, + "id": 3340, "isConstant": false, "isLValue": false, "isPure": false, @@ -2172,25 +2172,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2745:115:18", + "src": "2745:115:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2005, + "id": 3341, "nodeType": "ExpressionStatement", - "src": "2745:115:18" + "src": "2745:115:20" } ] }, - "id": 2007, + "id": 3343, "nodeType": "IfStatement", - "src": "2471:400:18", + "src": "2471:400:20", "trueBody": { - "id": 1983, + "id": 3319, "nodeType": "Block", - "src": "2487:140:18", + "src": "2487:140:20", "statements": [ { "expression": { @@ -2201,12 +2201,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1973, + "id": 3309, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1922, - "src": "2543:2:18", + "referencedDeclaration": 3258, + "src": "2543:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2214,12 +2214,12 @@ }, { "argumentTypes": null, - "id": 1974, + "id": 3310, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1924, - "src": "2547:6:18", + "referencedDeclaration": 3260, + "src": "2547:6:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2228,14 +2228,14 @@ { "argumentTypes": null, "hexValue": "", - "id": 1975, + "id": 3311, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2555:2:18", + "src": "2555:2:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", @@ -2249,18 +2249,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1976, + "id": 3312, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2559:4:18", + "src": "2559:4:20", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 1977, + "id": 3313, "isConstant": false, "isLValue": false, "isPure": false, @@ -2268,13 +2268,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2559:14:18", + "src": "2559:14:20", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 1978, + "id": 3314, "isConstant": false, "isLValue": false, "isPure": true, @@ -2282,7 +2282,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2559:19:18", + "src": "2559:19:20", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2310,32 +2310,32 @@ ], "expression": { "argumentTypes": null, - "id": 1971, + "id": 3307, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 697, - "src": "2509:7:18", + "referencedDeclaration": 1826, + "src": "2509:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, - "id": 1972, + "id": 3308, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 930, - "src": "2509:33:18", + "referencedDeclaration": 2059, + "src": "2509:33:20", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1979, + "id": 3315, "isConstant": false, "isLValue": false, "isPure": false, @@ -2343,7 +2343,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2509:70:18", + "src": "2509:70:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2352,14 +2352,14 @@ { "argumentTypes": null, "hexValue": "436f756c64206e6f742065786563757465206574686572207472616e73666572", - "id": 1980, + "id": 3316, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2581:34:18", + "src": "2581:34:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_2fae53cac084168982e43888b6e5eff084959ab65d511777b56b4cbb265d2586", @@ -2379,21 +2379,21 @@ "typeString": "literal_string \"Could not execute ether transfer\"" } ], - "id": 1970, + "id": 3306, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2501:7:18", + "referencedDeclaration": 4040, + "src": "2501:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1981, + "id": 3317, "isConstant": false, "isLValue": false, "isPure": false, @@ -2401,15 +2401,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2501:115:18", + "src": "2501:115:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1982, + "id": 3318, "nodeType": "ExpressionStatement", - "src": "2501:115:18" + "src": "2501:115:20" } ] } @@ -2417,7 +2417,7 @@ ] }, "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param token Address of the token that should be transfered (0 for Ether)\n @param to Address to which the tokens should be transfered\n @param amount Amount of tokens (or Ether) that should be transfered\n @return Returns if transaction can be executed.", - "id": 2009, + "id": 3345, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2425,16 +2425,16 @@ "name": "executeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1925, + "id": 3261, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1920, + "id": 3256, "name": "token", "nodeType": "VariableDeclaration", - "scope": 2009, - "src": "1917:13:18", + "scope": 3345, + "src": "1917:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2442,10 +2442,10 @@ "typeString": "address" }, "typeName": { - "id": 1919, + "id": 3255, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1917:7:18", + "src": "1917:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2456,11 +2456,11 @@ }, { "constant": false, - "id": 1922, + "id": 3258, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2009, - "src": "1932:10:18", + "scope": 3345, + "src": "1932:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2468,10 +2468,10 @@ "typeString": "address" }, "typeName": { - "id": 1921, + "id": 3257, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1932:7:18", + "src": "1932:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2482,11 +2482,11 @@ }, { "constant": false, - "id": 1924, + "id": 3260, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 2009, - "src": "1944:14:18", + "scope": 3345, + "src": "1944:14:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2494,10 +2494,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1923, + "id": 3259, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1944:7:18", + "src": "1944:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2507,54 +2507,54 @@ "visibility": "internal" } ], - "src": "1916:43:18" + "src": "1916:43:20" }, "payable": false, "returnParameters": { - "id": 1926, + "id": 3262, "nodeType": "ParameterList", "parameters": [], - "src": "1979:0:18" + "src": "1979:0:20" }, - "scope": 2079, - "src": "1890:987:18", + "scope": 3415, + "src": "1890:987:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2064, + "id": 3400, "nodeType": "Block", - "src": "2980:391:18", + "src": "2980:389:20", "statements": [ { "assignments": [ - 2019 + 3355 ], "declarations": [ { "constant": false, - "id": 2019, + "id": 3355, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 2065, - "src": "2990:29:18", + "scope": 3401, + "src": "2990:29:20", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" }, "typeName": { "contractScope": null, - "id": 2018, + "id": 3354, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1865, - "src": "2990:10:18", + "referencedDeclaration": 3201, + "src": "2990:10:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } }, @@ -2562,31 +2562,31 @@ "visibility": "internal" } ], - "id": 2023, + "id": 3359, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2020, + "id": 3356, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "3022:11:18", + "referencedDeclaration": 3194, + "src": "3022:11:20", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1865_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$3201_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 2022, + "id": 3358, "indexExpression": { "argumentTypes": null, - "id": 2021, + "id": 3357, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2011, - "src": "3034:5:18", + "referencedDeclaration": 3347, + "src": "3034:5:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2597,14 +2597,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3022:18:18", + "src": "3022:18:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "nodeType": "VariableDeclarationStatement", - "src": "2990:50:18" + "src": "2990:50:20" }, { "condition": { @@ -2613,7 +2613,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2028, + "id": 3364, "isConstant": false, "isLValue": false, "isPure": false, @@ -2623,18 +2623,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2024, + "id": 3360, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2078, - "src": "3054:5:18", + "referencedDeclaration": 3414, + "src": "3054:5:20", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 2025, + "id": 3361, "isConstant": false, "isLValue": false, "isPure": false, @@ -2642,7 +2642,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3054:7:18", + "src": "3054:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2654,50 +2654,50 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2026, + "id": 3362, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2019, - "src": "3064:10:18", + "referencedDeclaration": 3355, + "src": "3064:10:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 2027, + "id": 3363, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1864, - "src": "3064:18:18", + "referencedDeclaration": 3200, + "src": "3064:18:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3054:28:18", + "src": "3054:28:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2043, + "id": 3379, "nodeType": "IfStatement", - "src": "3050:126:18", + "src": "3050:126:20", "trueBody": { - "id": 2042, + "id": 3378, "nodeType": "Block", - "src": "3084:92:18", + "src": "3084:92:20", "statements": [ { "expression": { "argumentTypes": null, - "id": 2034, + "id": 3370, "isConstant": false, "isLValue": false, "isPure": false, @@ -2706,26 +2706,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2029, + "id": 3365, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2019, - "src": "3098:10:18", + "referencedDeclaration": 3355, + "src": "3098:10:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 2031, + "id": 3367, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1864, - "src": "3098:18:18", + "referencedDeclaration": 3200, + "src": "3098:18:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2738,18 +2738,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2032, + "id": 3368, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2078, - "src": "3119:5:18", + "referencedDeclaration": 3414, + "src": "3119:5:20", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 2033, + "id": 3369, "isConstant": false, "isLValue": false, "isPure": false, @@ -2757,26 +2757,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3119:7:18", + "src": "3119:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3098:28:18", + "src": "3098:28:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2035, + "id": 3371, "nodeType": "ExpressionStatement", - "src": "3098:28:18" + "src": "3098:28:20" }, { "expression": { "argumentTypes": null, - "id": 2040, + "id": 3376, "isConstant": false, "isLValue": false, "isPure": false, @@ -2785,26 +2785,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2036, + "id": 3372, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2019, - "src": "3140:10:18", + "referencedDeclaration": 3355, + "src": "3140:10:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 2038, + "id": 3374, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1862, - "src": "3140:21:18", + "referencedDeclaration": 3198, + "src": "3140:21:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2815,14 +2815,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 2039, + "id": 3375, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3164:1:18", + "src": "3164:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2830,15 +2830,15 @@ }, "value": "0" }, - "src": "3140:25:18", + "src": "3140:25:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2041, + "id": 3377, "nodeType": "ExpressionStatement", - "src": "3140:25:18" + "src": "3140:25:20" } ] } @@ -2850,7 +2850,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 2058, + "id": 3394, "isConstant": false, "isLValue": false, "isPure": false, @@ -2861,7 +2861,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2050, + "id": 3386, "isConstant": false, "isLValue": false, "isPure": false, @@ -2872,7 +2872,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2047, + "id": 3383, "isConstant": false, "isLValue": false, "isPure": false, @@ -2881,26 +2881,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2044, + "id": 3380, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2019, - "src": "3192:10:18", + "referencedDeclaration": 3355, + "src": "3189:10:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 2045, + "id": 3381, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1862, - "src": "3192:21:18", + "referencedDeclaration": 3198, + "src": "3189:21:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2910,18 +2910,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 2046, + "id": 3382, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2013, - "src": "3216:6:18", + "referencedDeclaration": 3349, + "src": "3213:6:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3192:30:18", + "src": "3189:30:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2933,32 +2933,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2048, + "id": 3384, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2019, - "src": "3226:10:18", + "referencedDeclaration": 3355, + "src": "3223:10:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 2049, + "id": 3385, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1860, - "src": "3226:21:18", + "referencedDeclaration": 3196, + "src": "3223:21:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3192:55:18", + "src": "3189:55:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2972,7 +2972,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2057, + "id": 3393, "isConstant": false, "isLValue": false, "isPure": false, @@ -2983,7 +2983,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2054, + "id": 3390, "isConstant": false, "isLValue": false, "isPure": false, @@ -2992,26 +2992,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2051, + "id": 3387, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2019, - "src": "3263:10:18", + "referencedDeclaration": 3355, + "src": "3261:10:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 2052, + "id": 3388, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1862, - "src": "3263:21:18", + "referencedDeclaration": 3198, + "src": "3261:21:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3021,18 +3021,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 2053, + "id": 3389, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2013, - "src": "3287:6:18", + "referencedDeclaration": 3349, + "src": "3285:6:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3263:30:18", + "src": "3261:30:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3044,59 +3044,59 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2055, + "id": 3391, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2019, - "src": "3296:10:18", + "referencedDeclaration": 3355, + "src": "3294:10:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 2056, + "id": 3392, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1862, - "src": "3296:21:18", + "referencedDeclaration": 3198, + "src": "3294:21:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3263:54:18", + "src": "3261:54:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3192:125:18", + "src": "3189:126:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2061, + "id": 3397, "nodeType": "IfStatement", - "src": "3185:157:18", + "src": "3185:155:20", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 2059, + "id": 3395, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3338:4:18", + "src": "3336:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3104,24 +3104,24 @@ }, "value": "true" }, - "functionReturnParameters": 2017, - "id": 2060, + "functionReturnParameters": 3353, + "id": 3396, "nodeType": "Return", - "src": "3331:11:18" + "src": "3329:11:20" } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2062, + "id": 3398, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3359:5:18", + "src": "3357:5:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3129,15 +3129,15 @@ }, "value": "false" }, - "functionReturnParameters": 2017, - "id": 2063, + "functionReturnParameters": 3353, + "id": 3399, "nodeType": "Return", - "src": "3352:12:18" + "src": "3350:12:20" } ] }, "documentation": null, - "id": 2065, + "id": 3401, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3145,16 +3145,16 @@ "name": "isUnderLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 2014, + "id": 3350, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2011, + "id": 3347, "name": "token", "nodeType": "VariableDeclaration", - "scope": 2065, - "src": "2905:13:18", + "scope": 3401, + "src": "2905:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3162,10 +3162,10 @@ "typeString": "address" }, "typeName": { - "id": 2010, + "id": 3346, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2905:7:18", + "src": "2905:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3176,11 +3176,11 @@ }, { "constant": false, - "id": 2013, + "id": 3349, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 2065, - "src": "2920:14:18", + "scope": 3401, + "src": "2920:14:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3188,10 +3188,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2012, + "id": 3348, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2920:7:18", + "src": "2920:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3201,20 +3201,20 @@ "visibility": "internal" } ], - "src": "2904:31:18" + "src": "2904:31:20" }, "payable": false, "returnParameters": { - "id": 2017, + "id": 3353, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2016, + "id": 3352, "name": "", "nodeType": "VariableDeclaration", - "scope": 2065, - "src": "2970:4:18", + "scope": 3401, + "src": "2970:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3222,10 +3222,10 @@ "typeString": "bool" }, "typeName": { - "id": 2015, + "id": 3351, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2970:4:18", + "src": "2970:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3235,19 +3235,19 @@ "visibility": "internal" } ], - "src": "2969:6:18" + "src": "2969:6:20" }, - "scope": 2079, - "src": "2883:488:18", + "scope": 3415, + "src": "2883:486:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 2077, + "id": 3413, "nodeType": "Block", - "src": "3535:44:18", + "src": "3533:44:20", "statements": [ { "expression": { @@ -3256,19 +3256,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2075, + "id": 3411, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2070, + "id": 3406, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2702, - "src": "3552:3:18", + "referencedDeclaration": 4038, + "src": "3550:3:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3285,19 +3285,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2073, + "id": 3409, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2071, + "id": 3407, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2702, - "src": "3559:3:18", + "referencedDeclaration": 4038, + "src": "3557:3:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3308,14 +3308,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 2072, + "id": 3408, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3565:6:18", + "src": "3563:6:20", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_86400_by_1", @@ -3323,41 +3323,41 @@ }, "value": "1" }, - "src": "3559:12:18", + "src": "3557:12:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 2074, + "id": 3410, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3558:14:18", + "src": "3556:14:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3552:20:18", + "src": "3550:20:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 2069, - "id": 2076, + "functionReturnParameters": 3405, + "id": 3412, "nodeType": "Return", - "src": "3545:27:18" + "src": "3543:27:20" } ] }, "documentation": "@dev Returns last midnight as Unix timestamp.\n @return Unix timestamp.", - "id": 2078, + "id": 3414, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3365,23 +3365,23 @@ "name": "today", "nodeType": "FunctionDefinition", "parameters": { - "id": 2066, + "id": 3402, "nodeType": "ParameterList", "parameters": [], - "src": "3477:2:18" + "src": "3475:2:20" }, "payable": false, "returnParameters": { - "id": 2069, + "id": 3405, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2068, + "id": 3404, "name": "", "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "3525:4:18", + "scope": 3414, + "src": "3523:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3389,10 +3389,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2067, + "id": 3403, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "3525:4:18", + "src": "3523:4:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3402,82 +3402,82 @@ "visibility": "internal" } ], - "src": "3524:6:18" + "src": "3522:6:20" }, - "scope": 2079, - "src": "3463:116:18", + "scope": 3415, + "src": "3461:116:20", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 2080, - "src": "296:3285:18" + "scope": 3416, + "src": "296:3283:20" } ], - "src": "0:3582:18" + "src": "0:3580:20" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "exportedSymbols": { "DailyLimitModule": [ - 2079 + 3415 ] }, - "id": 2080, + "id": 3416, "nodeType": "SourceUnit", "nodes": [ { - "id": 1842, + "id": 3178, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:18" + "src": "0:23:20" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1843, + "id": 3179, "nodeType": "ImportDirective", - "scope": 2080, - "sourceUnit": 733, - "src": "24:23:18", + "scope": 3416, + "sourceUnit": 1862, + "src": "24:23:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1844, + "id": 3180, "nodeType": "ImportDirective", - "scope": 2080, - "sourceUnit": 1104, - "src": "48:30:18", + "scope": 3416, + "sourceUnit": 2233, + "src": "48:30:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1845, + "id": 3181, "nodeType": "ImportDirective", - "scope": 2080, - "sourceUnit": 1514, - "src": "79:29:18", + "scope": 3416, + "sourceUnit": 2889, + "src": "79:29:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1846, + "id": 3182, "nodeType": "ImportDirective", - "scope": 2080, + "scope": 3416, "sourceUnit": 31, - "src": "109:21:18", + "src": "109:21:20", "symbolAliases": [], "unitAlias": "" }, @@ -3487,46 +3487,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1847, + "id": 3183, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 732, - "src": "325:6:18", + "referencedDeclaration": 1861, + "src": "325:6:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$732", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, - "id": 1848, + "id": 3184, "nodeType": "InheritanceSpecifier", - "src": "325:6:18" + "src": "325:6:20" } ], "contractDependencies": [ 632, - 732, - 1663 + 1861, + 3065 ], "contractKind": "contract", "documentation": "@title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2079, + "id": 3415, "linearizedBaseContracts": [ - 2079, - 732, + 3415, + 1861, 632, - 1663 + 3065 ], "name": "DailyLimitModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1851, + "id": 3187, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2079, - "src": "339:50:18", + "scope": 3415, + "src": "339:50:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3534,10 +3534,10 @@ "typeString": "string" }, "typeName": { - "id": 1849, + "id": 3185, "name": "string", "nodeType": "ElementaryTypeName", - "src": "339:6:18", + "src": "339:6:20", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3546,14 +3546,14 @@ "value": { "argumentTypes": null, "hexValue": "4461696c79204c696d6974204d6f64756c65", - "id": 1850, + "id": 3186, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "369:20:18", + "src": "369:20:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_821ea27acfbc77b49f7a021dbe2eb92017d46b8bdda0bff9901cbc8ee143ceb3", @@ -3565,11 +3565,11 @@ }, { "constant": true, - "id": 1854, + "id": 3190, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2079, - "src": "395:40:18", + "scope": 3415, + "src": "395:40:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3577,10 +3577,10 @@ "typeString": "string" }, "typeName": { - "id": 1852, + "id": 3188, "name": "string", "nodeType": "ElementaryTypeName", - "src": "395:6:18", + "src": "395:6:20", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3589,14 +3589,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1853, + "id": 3189, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "428:7:18", + "src": "428:7:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -3608,44 +3608,44 @@ }, { "constant": false, - "id": 1858, + "id": 3194, "name": "dailyLimits", "nodeType": "VariableDeclaration", - "scope": 2079, - "src": "513:50:18", + "scope": 3415, + "src": "513:50:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1865_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$3201_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "typeName": { - "id": 1857, + "id": 3193, "keyType": { - "id": 1855, + "id": 3191, "name": "address", "nodeType": "ElementaryTypeName", - "src": "522:7:18", + "src": "522:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "513:31:18", + "src": "513:31:20", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1865_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$3201_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "valueType": { "contractScope": null, - "id": 1856, + "id": 3192, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1865, - "src": "533:10:18", + "referencedDeclaration": 3201, + "src": "533:10:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } } @@ -3655,15 +3655,15 @@ }, { "canonicalName": "DailyLimitModule.DailyLimit", - "id": 1865, + "id": 3201, "members": [ { "constant": false, - "id": 1860, + "id": 3196, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1865, - "src": "598:18:18", + "scope": 3201, + "src": "598:18:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3671,10 +3671,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1859, + "id": 3195, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "598:7:18", + "src": "598:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3685,11 +3685,11 @@ }, { "constant": false, - "id": 1862, + "id": 3198, "name": "spentToday", "nodeType": "VariableDeclaration", - "scope": 1865, - "src": "626:18:18", + "scope": 3201, + "src": "626:18:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3697,10 +3697,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1861, + "id": 3197, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "626:7:18", + "src": "626:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3711,11 +3711,11 @@ }, { "constant": false, - "id": 1864, + "id": 3200, "name": "lastDay", "nodeType": "VariableDeclaration", - "scope": 1865, - "src": "654:15:18", + "scope": 3201, + "src": "654:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3723,10 +3723,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1863, + "id": 3199, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "654:7:18", + "src": "654:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3738,15 +3738,15 @@ ], "name": "DailyLimit", "nodeType": "StructDefinition", - "scope": 2079, - "src": "570:106:18", + "scope": 3415, + "src": "570:106:20", "visibility": "public" }, { "body": { - "id": 1900, + "id": 3236, "nodeType": "Block", - "src": "994:146:18", + "src": "994:146:20", "statements": [ { "expression": { @@ -3754,18 +3754,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1874, + "id": 3210, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 731, - "src": "1004:10:18", + "referencedDeclaration": 1860, + "src": "1004:10:20", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 1875, + "id": 3211, "isConstant": false, "isLValue": false, "isPure": false, @@ -3773,21 +3773,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1004:12:18", + "src": "1004:12:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1876, + "id": 3212, "nodeType": "ExpressionStatement", - "src": "1004:12:18" + "src": "1004:12:20" }, { "body": { "expression": { "argumentTypes": null, - "id": 1897, + "id": 3233, "isConstant": false, "isLValue": false, "isPure": false, @@ -3798,42 +3798,42 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1888, + "id": 3224, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "1082:11:18", + "referencedDeclaration": 3194, + "src": "1082:11:20", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1865_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$3201_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1892, + "id": 3228, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1889, + "id": 3225, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1868, - "src": "1094:6:18", + "referencedDeclaration": 3204, + "src": "1094:6:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1891, + "id": 3227, "indexExpression": { "argumentTypes": null, - "id": 1890, + "id": 3226, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1878, - "src": "1101:1:18", + "referencedDeclaration": 3214, + "src": "1101:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3844,7 +3844,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1094:9:18", + "src": "1094:9:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3855,21 +3855,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1082:22:18", + "src": "1082:22:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1893, + "id": 3229, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1860, - "src": "1082:33:18", + "referencedDeclaration": 3196, + "src": "1082:33:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3881,26 +3881,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1894, + "id": 3230, "name": "_dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1871, - "src": "1118:12:18", + "referencedDeclaration": 3207, + "src": "1118:12:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1896, + "id": 3232, "indexExpression": { "argumentTypes": null, - "id": 1895, + "id": 3231, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1878, - "src": "1131:1:18", + "referencedDeclaration": 3214, + "src": "1131:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3911,21 +3911,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1118:15:18", + "src": "1118:15:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1082:51:18", + "src": "1082:51:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1898, + "id": 3234, "nodeType": "ExpressionStatement", - "src": "1082:51:18" + "src": "1082:51:20" }, "condition": { "argumentTypes": null, @@ -3933,19 +3933,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1884, + "id": 3220, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1881, + "id": 3217, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1878, - "src": "1046:1:18", + "referencedDeclaration": 3214, + "src": "1046:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3957,18 +3957,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1882, + "id": 3218, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1868, - "src": "1050:6:18", + "referencedDeclaration": 3204, + "src": "1050:6:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1883, + "id": 3219, "isConstant": false, "isLValue": false, "isPure": false, @@ -3976,31 +3976,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1050:13:18", + "src": "1050:13:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1046:17:18", + "src": "1046:17:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1899, + "id": 3235, "initializationExpression": { "assignments": [ - 1878 + 3214 ], "declarations": [ { "constant": false, - "id": 1878, + "id": 3214, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1901, - "src": "1031:9:18", + "scope": 3237, + "src": "1031:9:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4008,10 +4008,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1877, + "id": 3213, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1031:7:18", + "src": "1031:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4021,18 +4021,18 @@ "visibility": "internal" } ], - "id": 1880, + "id": 3216, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1879, + "id": 3215, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1043:1:18", + "src": "1043:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4041,12 +4041,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1031:13:18" + "src": "1031:13:20" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1886, + "id": 3222, "isConstant": false, "isLValue": false, "isPure": false, @@ -4054,15 +4054,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1065:3:18", + "src": "1065:3:20", "subExpression": { "argumentTypes": null, - "id": 1885, + "id": 3221, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1878, - "src": "1065:1:18", + "referencedDeclaration": 3214, + "src": "1065:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4073,17 +4073,17 @@ "typeString": "uint256" } }, - "id": 1887, + "id": 3223, "nodeType": "ExpressionStatement", - "src": "1065:3:18" + "src": "1065:3:20" }, "nodeType": "ForStatement", - "src": "1026:107:18" + "src": "1026:107:20" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param tokens List of token addresses. Ether is represented with address 0x0.\n @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).", - "id": 1901, + "id": 3237, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -4091,16 +4091,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 1872, + "id": 3208, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1868, + "id": 3204, "name": "tokens", "nodeType": "VariableDeclaration", - "scope": 1901, - "src": "933:16:18", + "scope": 3237, + "src": "933:16:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4109,19 +4109,19 @@ }, "typeName": { "baseType": { - "id": 1866, + "id": 3202, "name": "address", "nodeType": "ElementaryTypeName", - "src": "933:7:18", + "src": "933:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1867, + "id": 3203, "length": null, "nodeType": "ArrayTypeName", - "src": "933:9:18", + "src": "933:9:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4132,11 +4132,11 @@ }, { "constant": false, - "id": 1871, + "id": 3207, "name": "_dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1901, - "src": "951:22:18", + "scope": 3237, + "src": "951:22:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4145,19 +4145,19 @@ }, "typeName": { "baseType": { - "id": 1869, + "id": 3205, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "951:7:18", + "src": "951:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1870, + "id": 3206, "length": null, "nodeType": "ArrayTypeName", - "src": "951:9:18", + "src": "951:9:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -4167,31 +4167,31 @@ "visibility": "internal" } ], - "src": "932:42:18" + "src": "932:42:20" }, "payable": false, "returnParameters": { - "id": 1873, + "id": 3209, "nodeType": "ParameterList", "parameters": [], - "src": "994:0:18" + "src": "994:0:20" }, - "scope": 2079, - "src": "918:222:18", + "scope": 3415, + "src": "918:222:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1917, + "id": 3253, "nodeType": "Block", - "src": "1467:59:18", + "src": "1467:59:20", "statements": [ { "expression": { "argumentTypes": null, - "id": 1915, + "id": 3251, "isConstant": false, "isLValue": false, "isPure": false, @@ -4202,26 +4202,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1910, + "id": 3246, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "1477:11:18", + "referencedDeclaration": 3194, + "src": "1477:11:20", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1865_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$3201_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1912, + "id": 3248, "indexExpression": { "argumentTypes": null, - "id": 1911, + "id": 3247, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1903, - "src": "1489:5:18", + "referencedDeclaration": 3239, + "src": "1489:5:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4232,21 +4232,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1477:18:18", + "src": "1477:18:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1913, + "id": 3249, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1860, - "src": "1477:29:18", + "referencedDeclaration": 3196, + "src": "1477:29:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4256,68 +4256,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1914, + "id": 3250, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1905, - "src": "1509:10:18", + "referencedDeclaration": 3241, + "src": "1509:10:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1477:42:18", + "src": "1477:42:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1916, + "id": 3252, "nodeType": "ExpressionStatement", - "src": "1477:42:18" + "src": "1477:42:20" } ] }, "documentation": "@dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n @param token Token contract address.\n @param dailyLimit Daily limit in smallest token unit.", - "id": 1918, + "id": 3254, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1908, + "id": 3244, "modifierName": { "argumentTypes": null, - "id": 1907, + "id": 3243, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "1452:10:18", + "referencedDeclaration": 1840, + "src": "1452:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1452:10:18" + "src": "1452:10:20" } ], "name": "changeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1906, + "id": 3242, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1903, + "id": 3239, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1918, - "src": "1394:13:18", + "scope": 3254, + "src": "1394:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4325,10 +4325,10 @@ "typeString": "address" }, "typeName": { - "id": 1902, + "id": 3238, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1394:7:18", + "src": "1394:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4339,11 +4339,11 @@ }, { "constant": false, - "id": 1905, + "id": 3241, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1918, - "src": "1409:18:18", + "scope": 3254, + "src": "1409:18:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4351,10 +4351,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1904, + "id": 3240, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1409:7:18", + "src": "1409:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4364,26 +4364,26 @@ "visibility": "internal" } ], - "src": "1393:35:18" + "src": "1393:35:20" }, "payable": false, "returnParameters": { - "id": 1909, + "id": 3245, "nodeType": "ParameterList", "parameters": [], - "src": "1467:0:18" + "src": "1467:0:20" }, - "scope": 2079, - "src": "1368:158:18", + "scope": 3415, + "src": "1368:158:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2008, + "id": 3344, "nodeType": "Block", - "src": "1979:898:18", + "src": "1979:898:20", "statements": [ { "expression": { @@ -4396,18 +4396,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1932, + "id": 3268, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2700, - "src": "2104:3:18", + "referencedDeclaration": 4036, + "src": "2104:3:20", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1933, + "id": 3269, "isConstant": false, "isLValue": false, "isPure": false, @@ -4415,7 +4415,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2104:10:18", + "src": "2104:10:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4434,14 +4434,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1929, + "id": 3265, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 697, - "src": "2087:7:18", + "referencedDeclaration": 1826, + "src": "2087:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } } @@ -4449,22 +4449,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } ], - "id": 1928, + "id": 3264, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1513, - "src": "2074:12:18", + "referencedDeclaration": 2888, + "src": "2074:12:20", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1513_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$2888_$", "typeString": "type(contract OwnerManager)" } }, - "id": 1930, + "id": 3266, "isConstant": false, "isLValue": false, "isPure": false, @@ -4472,27 +4472,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2074:21:18", + "src": "2074:21:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1513", + "typeIdentifier": "t_contract$_OwnerManager_$2888", "typeString": "contract OwnerManager" } }, - "id": 1931, + "id": 3267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1463, - "src": "2074:29:18", + "referencedDeclaration": 2838, + "src": "2074:29:20", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 1934, + "id": 3270, "isConstant": false, "isLValue": false, "isPure": false, @@ -4500,7 +4500,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2074:41:18", + "src": "2074:41:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4509,14 +4509,14 @@ { "argumentTypes": null, "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e206f776e6572", - "id": 1935, + "id": 3271, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2117:39:18", + "src": "2117:39:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", @@ -4536,21 +4536,21 @@ "typeString": "literal_string \"Method can only be called by an owner\"" } ], - "id": 1927, + "id": 3263, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2066:7:18", + "referencedDeclaration": 4040, + "src": "2066:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1936, + "id": 3272, "isConstant": false, "isLValue": false, "isPure": false, @@ -4558,15 +4558,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2066:91:18", + "src": "2066:91:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1937, + "id": 3273, "nodeType": "ExpressionStatement", - "src": "2066:91:18" + "src": "2066:91:20" }, { "expression": { @@ -4578,19 +4578,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1941, + "id": 3277, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1939, + "id": 3275, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1922, - "src": "2175:2:18", + "referencedDeclaration": 3258, + "src": "2175:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4601,14 +4601,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1940, + "id": 3276, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2181:1:18", + "src": "2181:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4616,7 +4616,7 @@ }, "value": "0" }, - "src": "2175:7:18", + "src": "2175:7:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4625,14 +4625,14 @@ { "argumentTypes": null, "hexValue": "496e76616c696420746f20616464726573732070726f7669646564", - "id": 1942, + "id": 3278, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2184:29:18", + "src": "2184:29:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5adba0692e08f8080ea3ec2bf95727d181df9c72d0fc6db8f77e3703d9523f1", @@ -4652,21 +4652,21 @@ "typeString": "literal_string \"Invalid to address provided\"" } ], - "id": 1938, + "id": 3274, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2167:7:18", + "referencedDeclaration": 4040, + "src": "2167:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1943, + "id": 3279, "isConstant": false, "isLValue": false, "isPure": false, @@ -4674,15 +4674,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2167:47:18", + "src": "2167:47:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1944, + "id": 3280, "nodeType": "ExpressionStatement", - "src": "2167:47:18" + "src": "2167:47:20" }, { "expression": { @@ -4694,19 +4694,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1948, + "id": 3284, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1946, + "id": 3282, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1924, - "src": "2232:6:18", + "referencedDeclaration": 3260, + "src": "2232:6:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4717,14 +4717,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1947, + "id": 3283, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2241:1:18", + "src": "2241:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4732,7 +4732,7 @@ }, "value": "0" }, - "src": "2232:10:18", + "src": "2232:10:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4741,14 +4741,14 @@ { "argumentTypes": null, "hexValue": "496e76616c696420616d6f756e742070726f7669646564", - "id": 1949, + "id": 3285, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2244:25:18", + "src": "2244:25:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_991bec80688b0edba4751e32429f6879002de57199ff2c6b5bf0742d348ba58f", @@ -4768,21 +4768,21 @@ "typeString": "literal_string \"Invalid amount provided\"" } ], - "id": 1945, + "id": 3281, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2224:7:18", + "referencedDeclaration": 4040, + "src": "2224:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1950, + "id": 3286, "isConstant": false, "isLValue": false, "isPure": false, @@ -4790,15 +4790,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2224:46:18", + "src": "2224:46:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1951, + "id": 3287, "nodeType": "ExpressionStatement", - "src": "2224:46:18" + "src": "2224:46:20" }, { "expression": { @@ -4809,12 +4809,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1954, + "id": 3290, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1920, - "src": "2365:5:18", + "referencedDeclaration": 3256, + "src": "2365:5:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4822,12 +4822,12 @@ }, { "argumentTypes": null, - "id": 1955, + "id": 3291, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1924, - "src": "2372:6:18", + "referencedDeclaration": 3260, + "src": "2372:6:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4845,18 +4845,18 @@ "typeString": "uint256" } ], - "id": 1953, + "id": 3289, "name": "isUnderLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2065, - "src": "2352:12:18", + "referencedDeclaration": 3401, + "src": "2352:12:20", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, - "id": 1956, + "id": 3292, "isConstant": false, "isLValue": false, "isPure": false, @@ -4864,7 +4864,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2352:27:18", + "src": "2352:27:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4873,14 +4873,14 @@ { "argumentTypes": null, "hexValue": "4461696c79206c696d697420686173206265656e2072656163686564", - "id": 1957, + "id": 3293, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2381:30:18", + "src": "2381:30:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8c8c9a9731e3c1970f356c6998c7e6418ab5b55402b68846f03a8bbe49c05905", @@ -4900,21 +4900,21 @@ "typeString": "literal_string \"Daily limit has been reached\"" } ], - "id": 1952, + "id": 3288, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2344:7:18", + "referencedDeclaration": 4040, + "src": "2344:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1958, + "id": 3294, "isConstant": false, "isLValue": false, "isPure": false, @@ -4922,20 +4922,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2344:68:18", + "src": "2344:68:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1959, + "id": 3295, "nodeType": "ExpressionStatement", - "src": "2344:68:18" + "src": "2344:68:20" }, { "expression": { "argumentTypes": null, - "id": 1965, + "id": 3301, "isConstant": false, "isLValue": false, "isPure": false, @@ -4946,26 +4946,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1960, + "id": 3296, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "2422:11:18", + "referencedDeclaration": 3194, + "src": "2422:11:20", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1865_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$3201_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1962, + "id": 3298, "indexExpression": { "argumentTypes": null, - "id": 1961, + "id": 3297, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1920, - "src": "2434:5:18", + "referencedDeclaration": 3256, + "src": "2434:5:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4976,21 +4976,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2422:18:18", + "src": "2422:18:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1963, + "id": 3299, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1862, - "src": "2422:29:18", + "referencedDeclaration": 3198, + "src": "2422:29:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5000,26 +5000,26 @@ "operator": "+=", "rightHandSide": { "argumentTypes": null, - "id": 1964, + "id": 3300, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1924, - "src": "2455:6:18", + "referencedDeclaration": 3260, + "src": "2455:6:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2422:39:18", + "src": "2422:39:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1966, + "id": 3302, "nodeType": "ExpressionStatement", - "src": "2422:39:18" + "src": "2422:39:20" }, { "condition": { @@ -5028,19 +5028,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1969, + "id": 3305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1967, + "id": 3303, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1920, - "src": "2475:5:18", + "referencedDeclaration": 3256, + "src": "2475:5:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5051,14 +5051,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1968, + "id": 3304, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2484:1:18", + "src": "2484:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5066,29 +5066,29 @@ }, "value": "0" }, - "src": "2475:10:18", + "src": "2475:10:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 2006, + "id": 3342, "nodeType": "Block", - "src": "2633:238:18", + "src": "2633:238:20", "statements": [ { "assignments": [ - 1985 + 3321 ], "declarations": [ { "constant": false, - "id": 1985, + "id": 3321, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2009, - "src": "2647:17:18", + "scope": 3345, + "src": "2647:17:20", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -5096,10 +5096,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1984, + "id": 3320, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2647:5:18", + "src": "2647:5:20", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5109,21 +5109,21 @@ "visibility": "internal" } ], - "id": 1992, + "id": 3328, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "7472616e7366657228616464726573732c75696e7432353629", - "id": 1988, + "id": 3324, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2691:27:18", + "src": "2691:27:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", @@ -5133,12 +5133,12 @@ }, { "argumentTypes": null, - "id": 1989, + "id": 3325, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1922, - "src": "2720:2:18", + "referencedDeclaration": 3258, + "src": "2720:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5146,12 +5146,12 @@ }, { "argumentTypes": null, - "id": 1990, + "id": 3326, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1924, - "src": "2724:6:18", + "referencedDeclaration": 3260, + "src": "2724:6:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5175,18 +5175,18 @@ ], "expression": { "argumentTypes": null, - "id": 1986, + "id": 3322, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2687, - "src": "2667:3:18", + "referencedDeclaration": 4023, + "src": "2667:3:20", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 1987, + "id": 3323, "isConstant": false, "isLValue": false, "isPure": true, @@ -5194,13 +5194,13 @@ "memberName": "encodeWithSignature", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2667:23:18", + "src": "2667:23:20", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (string memory) pure returns (bytes memory)" } }, - "id": 1991, + "id": 3327, "isConstant": false, "isLValue": false, "isPure": false, @@ -5208,14 +5208,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2667:64:18", + "src": "2667:64:20", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2647:84:18" + "src": "2647:84:20" }, { "expression": { @@ -5226,12 +5226,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1996, + "id": 3332, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1920, - "src": "2787:5:18", + "referencedDeclaration": 3256, + "src": "2787:5:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5240,14 +5240,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1997, + "id": 3333, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2794:1:18", + "src": "2794:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5257,12 +5257,12 @@ }, { "argumentTypes": null, - "id": 1998, + "id": 3334, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1985, - "src": "2797:4:18", + "referencedDeclaration": 3321, + "src": "2797:4:20", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5274,18 +5274,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1999, + "id": 3335, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2803:4:18", + "src": "2803:4:20", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 2000, + "id": 3336, "isConstant": false, "isLValue": false, "isPure": false, @@ -5293,13 +5293,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2803:14:18", + "src": "2803:14:20", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 2001, + "id": 3337, "isConstant": false, "isLValue": false, "isPure": true, @@ -5307,7 +5307,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2803:19:18", + "src": "2803:19:20", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -5335,32 +5335,32 @@ ], "expression": { "argumentTypes": null, - "id": 1994, + "id": 3330, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 697, - "src": "2753:7:18", + "referencedDeclaration": 1826, + "src": "2753:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, - "id": 1995, + "id": 3331, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 930, - "src": "2753:33:18", + "referencedDeclaration": 2059, + "src": "2753:33:20", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2002, + "id": 3338, "isConstant": false, "isLValue": false, "isPure": false, @@ -5368,7 +5368,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2753:70:18", + "src": "2753:70:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5377,14 +5377,14 @@ { "argumentTypes": null, "hexValue": "436f756c64206e6f74206578656375746520746f6b656e207472616e73666572", - "id": 2003, + "id": 3339, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2825:34:18", + "src": "2825:34:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_00c0b742664159361be6aebbe2af44c4ae7eb95e13260265d1e1cf75d2593709", @@ -5404,21 +5404,21 @@ "typeString": "literal_string \"Could not execute token transfer\"" } ], - "id": 1993, + "id": 3329, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2745:7:18", + "referencedDeclaration": 4040, + "src": "2745:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2004, + "id": 3340, "isConstant": false, "isLValue": false, "isPure": false, @@ -5426,25 +5426,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2745:115:18", + "src": "2745:115:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2005, + "id": 3341, "nodeType": "ExpressionStatement", - "src": "2745:115:18" + "src": "2745:115:20" } ] }, - "id": 2007, + "id": 3343, "nodeType": "IfStatement", - "src": "2471:400:18", + "src": "2471:400:20", "trueBody": { - "id": 1983, + "id": 3319, "nodeType": "Block", - "src": "2487:140:18", + "src": "2487:140:20", "statements": [ { "expression": { @@ -5455,12 +5455,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1973, + "id": 3309, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1922, - "src": "2543:2:18", + "referencedDeclaration": 3258, + "src": "2543:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5468,12 +5468,12 @@ }, { "argumentTypes": null, - "id": 1974, + "id": 3310, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1924, - "src": "2547:6:18", + "referencedDeclaration": 3260, + "src": "2547:6:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5482,14 +5482,14 @@ { "argumentTypes": null, "hexValue": "", - "id": 1975, + "id": 3311, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2555:2:18", + "src": "2555:2:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", @@ -5503,18 +5503,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1976, + "id": 3312, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2559:4:18", + "src": "2559:4:20", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 1977, + "id": 3313, "isConstant": false, "isLValue": false, "isPure": false, @@ -5522,13 +5522,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2559:14:18", + "src": "2559:14:20", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 1978, + "id": 3314, "isConstant": false, "isLValue": false, "isPure": true, @@ -5536,7 +5536,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2559:19:18", + "src": "2559:19:20", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -5564,32 +5564,32 @@ ], "expression": { "argumentTypes": null, - "id": 1971, + "id": 3307, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 697, - "src": "2509:7:18", + "referencedDeclaration": 1826, + "src": "2509:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, - "id": 1972, + "id": 3308, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 930, - "src": "2509:33:18", + "referencedDeclaration": 2059, + "src": "2509:33:20", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1979, + "id": 3315, "isConstant": false, "isLValue": false, "isPure": false, @@ -5597,7 +5597,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2509:70:18", + "src": "2509:70:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5606,14 +5606,14 @@ { "argumentTypes": null, "hexValue": "436f756c64206e6f742065786563757465206574686572207472616e73666572", - "id": 1980, + "id": 3316, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2581:34:18", + "src": "2581:34:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_2fae53cac084168982e43888b6e5eff084959ab65d511777b56b4cbb265d2586", @@ -5633,21 +5633,21 @@ "typeString": "literal_string \"Could not execute ether transfer\"" } ], - "id": 1970, + "id": 3306, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2501:7:18", + "referencedDeclaration": 4040, + "src": "2501:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1981, + "id": 3317, "isConstant": false, "isLValue": false, "isPure": false, @@ -5655,15 +5655,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2501:115:18", + "src": "2501:115:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1982, + "id": 3318, "nodeType": "ExpressionStatement", - "src": "2501:115:18" + "src": "2501:115:20" } ] } @@ -5671,7 +5671,7 @@ ] }, "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param token Address of the token that should be transfered (0 for Ether)\n @param to Address to which the tokens should be transfered\n @param amount Amount of tokens (or Ether) that should be transfered\n @return Returns if transaction can be executed.", - "id": 2009, + "id": 3345, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5679,16 +5679,16 @@ "name": "executeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1925, + "id": 3261, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1920, + "id": 3256, "name": "token", "nodeType": "VariableDeclaration", - "scope": 2009, - "src": "1917:13:18", + "scope": 3345, + "src": "1917:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5696,10 +5696,10 @@ "typeString": "address" }, "typeName": { - "id": 1919, + "id": 3255, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1917:7:18", + "src": "1917:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5710,11 +5710,11 @@ }, { "constant": false, - "id": 1922, + "id": 3258, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2009, - "src": "1932:10:18", + "scope": 3345, + "src": "1932:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5722,10 +5722,10 @@ "typeString": "address" }, "typeName": { - "id": 1921, + "id": 3257, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1932:7:18", + "src": "1932:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5736,11 +5736,11 @@ }, { "constant": false, - "id": 1924, + "id": 3260, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 2009, - "src": "1944:14:18", + "scope": 3345, + "src": "1944:14:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5748,10 +5748,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1923, + "id": 3259, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1944:7:18", + "src": "1944:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5761,54 +5761,54 @@ "visibility": "internal" } ], - "src": "1916:43:18" + "src": "1916:43:20" }, "payable": false, "returnParameters": { - "id": 1926, + "id": 3262, "nodeType": "ParameterList", "parameters": [], - "src": "1979:0:18" + "src": "1979:0:20" }, - "scope": 2079, - "src": "1890:987:18", + "scope": 3415, + "src": "1890:987:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2064, + "id": 3400, "nodeType": "Block", - "src": "2980:391:18", + "src": "2980:389:20", "statements": [ { "assignments": [ - 2019 + 3355 ], "declarations": [ { "constant": false, - "id": 2019, + "id": 3355, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 2065, - "src": "2990:29:18", + "scope": 3401, + "src": "2990:29:20", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" }, "typeName": { "contractScope": null, - "id": 2018, + "id": 3354, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1865, - "src": "2990:10:18", + "referencedDeclaration": 3201, + "src": "2990:10:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } }, @@ -5816,31 +5816,31 @@ "visibility": "internal" } ], - "id": 2023, + "id": 3359, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2020, + "id": 3356, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "3022:11:18", + "referencedDeclaration": 3194, + "src": "3022:11:20", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1865_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$3201_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 2022, + "id": 3358, "indexExpression": { "argumentTypes": null, - "id": 2021, + "id": 3357, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2011, - "src": "3034:5:18", + "referencedDeclaration": 3347, + "src": "3034:5:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5851,14 +5851,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3022:18:18", + "src": "3022:18:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "nodeType": "VariableDeclarationStatement", - "src": "2990:50:18" + "src": "2990:50:20" }, { "condition": { @@ -5867,7 +5867,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2028, + "id": 3364, "isConstant": false, "isLValue": false, "isPure": false, @@ -5877,18 +5877,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2024, + "id": 3360, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2078, - "src": "3054:5:18", + "referencedDeclaration": 3414, + "src": "3054:5:20", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 2025, + "id": 3361, "isConstant": false, "isLValue": false, "isPure": false, @@ -5896,7 +5896,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3054:7:18", + "src": "3054:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5908,50 +5908,50 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2026, + "id": 3362, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2019, - "src": "3064:10:18", + "referencedDeclaration": 3355, + "src": "3064:10:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 2027, + "id": 3363, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1864, - "src": "3064:18:18", + "referencedDeclaration": 3200, + "src": "3064:18:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3054:28:18", + "src": "3054:28:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2043, + "id": 3379, "nodeType": "IfStatement", - "src": "3050:126:18", + "src": "3050:126:20", "trueBody": { - "id": 2042, + "id": 3378, "nodeType": "Block", - "src": "3084:92:18", + "src": "3084:92:20", "statements": [ { "expression": { "argumentTypes": null, - "id": 2034, + "id": 3370, "isConstant": false, "isLValue": false, "isPure": false, @@ -5960,26 +5960,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2029, + "id": 3365, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2019, - "src": "3098:10:18", + "referencedDeclaration": 3355, + "src": "3098:10:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 2031, + "id": 3367, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1864, - "src": "3098:18:18", + "referencedDeclaration": 3200, + "src": "3098:18:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5992,18 +5992,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2032, + "id": 3368, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2078, - "src": "3119:5:18", + "referencedDeclaration": 3414, + "src": "3119:5:20", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 2033, + "id": 3369, "isConstant": false, "isLValue": false, "isPure": false, @@ -6011,26 +6011,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3119:7:18", + "src": "3119:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3098:28:18", + "src": "3098:28:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2035, + "id": 3371, "nodeType": "ExpressionStatement", - "src": "3098:28:18" + "src": "3098:28:20" }, { "expression": { "argumentTypes": null, - "id": 2040, + "id": 3376, "isConstant": false, "isLValue": false, "isPure": false, @@ -6039,26 +6039,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2036, + "id": 3372, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2019, - "src": "3140:10:18", + "referencedDeclaration": 3355, + "src": "3140:10:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 2038, + "id": 3374, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1862, - "src": "3140:21:18", + "referencedDeclaration": 3198, + "src": "3140:21:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6069,14 +6069,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 2039, + "id": 3375, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3164:1:18", + "src": "3164:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6084,15 +6084,15 @@ }, "value": "0" }, - "src": "3140:25:18", + "src": "3140:25:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2041, + "id": 3377, "nodeType": "ExpressionStatement", - "src": "3140:25:18" + "src": "3140:25:20" } ] } @@ -6104,7 +6104,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 2058, + "id": 3394, "isConstant": false, "isLValue": false, "isPure": false, @@ -6115,7 +6115,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2050, + "id": 3386, "isConstant": false, "isLValue": false, "isPure": false, @@ -6126,7 +6126,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2047, + "id": 3383, "isConstant": false, "isLValue": false, "isPure": false, @@ -6135,26 +6135,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2044, + "id": 3380, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2019, - "src": "3192:10:18", + "referencedDeclaration": 3355, + "src": "3189:10:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 2045, + "id": 3381, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1862, - "src": "3192:21:18", + "referencedDeclaration": 3198, + "src": "3189:21:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6164,18 +6164,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 2046, + "id": 3382, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2013, - "src": "3216:6:18", + "referencedDeclaration": 3349, + "src": "3213:6:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3192:30:18", + "src": "3189:30:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6187,32 +6187,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2048, + "id": 3384, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2019, - "src": "3226:10:18", + "referencedDeclaration": 3355, + "src": "3223:10:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 2049, + "id": 3385, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1860, - "src": "3226:21:18", + "referencedDeclaration": 3196, + "src": "3223:21:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3192:55:18", + "src": "3189:55:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6226,7 +6226,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2057, + "id": 3393, "isConstant": false, "isLValue": false, "isPure": false, @@ -6237,7 +6237,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2054, + "id": 3390, "isConstant": false, "isLValue": false, "isPure": false, @@ -6246,26 +6246,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2051, + "id": 3387, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2019, - "src": "3263:10:18", + "referencedDeclaration": 3355, + "src": "3261:10:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 2052, + "id": 3388, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1862, - "src": "3263:21:18", + "referencedDeclaration": 3198, + "src": "3261:21:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6275,18 +6275,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 2053, + "id": 3389, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2013, - "src": "3287:6:18", + "referencedDeclaration": 3349, + "src": "3285:6:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3263:30:18", + "src": "3261:30:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6298,59 +6298,59 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2055, + "id": 3391, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2019, - "src": "3296:10:18", + "referencedDeclaration": 3355, + "src": "3294:10:20", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1865_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$3201_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 2056, + "id": 3392, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1862, - "src": "3296:21:18", + "referencedDeclaration": 3198, + "src": "3294:21:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3263:54:18", + "src": "3261:54:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3192:125:18", + "src": "3189:126:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2061, + "id": 3397, "nodeType": "IfStatement", - "src": "3185:157:18", + "src": "3185:155:20", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 2059, + "id": 3395, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3338:4:18", + "src": "3336:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6358,24 +6358,24 @@ }, "value": "true" }, - "functionReturnParameters": 2017, - "id": 2060, + "functionReturnParameters": 3353, + "id": 3396, "nodeType": "Return", - "src": "3331:11:18" + "src": "3329:11:20" } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2062, + "id": 3398, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3359:5:18", + "src": "3357:5:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6383,15 +6383,15 @@ }, "value": "false" }, - "functionReturnParameters": 2017, - "id": 2063, + "functionReturnParameters": 3353, + "id": 3399, "nodeType": "Return", - "src": "3352:12:18" + "src": "3350:12:20" } ] }, "documentation": null, - "id": 2065, + "id": 3401, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6399,16 +6399,16 @@ "name": "isUnderLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 2014, + "id": 3350, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2011, + "id": 3347, "name": "token", "nodeType": "VariableDeclaration", - "scope": 2065, - "src": "2905:13:18", + "scope": 3401, + "src": "2905:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6416,10 +6416,10 @@ "typeString": "address" }, "typeName": { - "id": 2010, + "id": 3346, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2905:7:18", + "src": "2905:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6430,11 +6430,11 @@ }, { "constant": false, - "id": 2013, + "id": 3349, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 2065, - "src": "2920:14:18", + "scope": 3401, + "src": "2920:14:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6442,10 +6442,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2012, + "id": 3348, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2920:7:18", + "src": "2920:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6455,20 +6455,20 @@ "visibility": "internal" } ], - "src": "2904:31:18" + "src": "2904:31:20" }, "payable": false, "returnParameters": { - "id": 2017, + "id": 3353, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2016, + "id": 3352, "name": "", "nodeType": "VariableDeclaration", - "scope": 2065, - "src": "2970:4:18", + "scope": 3401, + "src": "2970:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6476,10 +6476,10 @@ "typeString": "bool" }, "typeName": { - "id": 2015, + "id": 3351, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2970:4:18", + "src": "2970:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6489,19 +6489,19 @@ "visibility": "internal" } ], - "src": "2969:6:18" + "src": "2969:6:20" }, - "scope": 2079, - "src": "2883:488:18", + "scope": 3415, + "src": "2883:486:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 2077, + "id": 3413, "nodeType": "Block", - "src": "3535:44:18", + "src": "3533:44:20", "statements": [ { "expression": { @@ -6510,19 +6510,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2075, + "id": 3411, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2070, + "id": 3406, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2702, - "src": "3552:3:18", + "referencedDeclaration": 4038, + "src": "3550:3:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6539,19 +6539,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2073, + "id": 3409, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2071, + "id": 3407, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2702, - "src": "3559:3:18", + "referencedDeclaration": 4038, + "src": "3557:3:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6562,14 +6562,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 2072, + "id": 3408, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3565:6:18", + "src": "3563:6:20", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_86400_by_1", @@ -6577,41 +6577,41 @@ }, "value": "1" }, - "src": "3559:12:18", + "src": "3557:12:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 2074, + "id": 3410, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3558:14:18", + "src": "3556:14:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3552:20:18", + "src": "3550:20:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 2069, - "id": 2076, + "functionReturnParameters": 3405, + "id": 3412, "nodeType": "Return", - "src": "3545:27:18" + "src": "3543:27:20" } ] }, "documentation": "@dev Returns last midnight as Unix timestamp.\n @return Unix timestamp.", - "id": 2078, + "id": 3414, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6619,23 +6619,23 @@ "name": "today", "nodeType": "FunctionDefinition", "parameters": { - "id": 2066, + "id": 3402, "nodeType": "ParameterList", "parameters": [], - "src": "3477:2:18" + "src": "3475:2:20" }, "payable": false, "returnParameters": { - "id": 2069, + "id": 3405, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2068, + "id": 3404, "name": "", "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "3525:4:18", + "scope": 3414, + "src": "3523:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6643,10 +6643,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2067, + "id": 3403, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "3525:4:18", + "src": "3523:4:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6656,20 +6656,20 @@ "visibility": "internal" } ], - "src": "3524:6:18" + "src": "3522:6:20" }, - "scope": 2079, - "src": "3463:116:18", + "scope": 3415, + "src": "3461:116:20", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 2080, - "src": "296:3285:18" + "scope": 3416, + "src": "296:3283:20" } ], - "src": "0:3582:18" + "src": "0:3580:20" }, "compiler": { "name": "solc", @@ -6679,28 +6679,28 @@ "4": { "events": {}, "links": {}, - "address": "0xd3190a95d891a6b6ad63a89743bc904d0df1e16a", - "transactionHash": "0x93dcca814a85bf41c834ec12eb8c25466adc1ca344daa931e4c58af9eb169be7" + "address": "0x7cfb7607cc60339ccd817b6354e102eba6b49ff1", + "transactionHash": "0x9479ecd87f9e5b0746693a16f7ce7f469176203015dcdb15a8ae1328c9816ebe" }, - "1529327661534": { + "1530013596495": { "events": {}, "links": {}, - "address": "0xb81d31d61de61219dd476d956cb3117811e77099", - "transactionHash": "0x3021791e1a708289f6f7011012c66077660f073e5b6a312471650c1f9b745e7b" + "address": "0x2c9ce286dfc3b59f113c51130417a46e9a646a6d", + "transactionHash": "0x02608c4ea7f319af8a9b630a79ed662d2215f6c1346b4695102205ee761daf5f" }, - "1529333415702": { + "1530525742205": { "events": {}, "links": {}, - "address": "0xaff94993c9e18850a990c68bbb61d4531d3e61dd", - "transactionHash": "0xff53c43c6c273ba0614353b138d78042df23d7dc6bdf767fd00fe03b538fa019" + "address": "0x3677fea71a2c8f03d54e7f5360bd9a05a020bdda", + "transactionHash": "0x9325cfc4774c2add944a1a9458f74c8815e0bb04bf77f12b5bfb1fdae443836b" }, - "1529652204341": { + "1530611935189": { "events": {}, "links": {}, - "address": "0x33eccff7f17d7533b9d127d3885ea4b145ca962c", - "transactionHash": "0x95b2c0b5b1a282240281542feb7748212fb861c364007da93b6aba6ce6bc38cf" + "address": "0x7533d313863f3342d83491b17c4a8e8fff65a192", + "transactionHash": "0x9325cfc4774c2add944a1a9458f74c8815e0bb04bf77f12b5bfb1fdae443836b" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-22T07:24:16.257Z" + "updatedAt": "2018-07-03T09:59:18.533Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DelegateConstructorProxy.json b/safe-contracts/build/contracts/DelegateConstructorProxy.json index 2b84d8235b..1c118b977a 100644 --- a/safe-contracts/build/contracts/DelegateConstructorProxy.json +++ b/safe-contracts/build/contracts/DelegateConstructorProxy.json @@ -52,8 +52,8 @@ ], "bytecode": "0x608060405234801561001057600080fd5b506040516102fc3803806102fc83398101806040528101908080519060200190929190805182019291905050508160008173ffffffffffffffffffffffffffffffffffffffff16141515156100f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000815111156101805773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e600082141561017c573d81fd5b5050505b505061016b806101916000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820bab5357556c704bffef0f96326dd27742408be175057ffd8f4f58237314cfd520029", "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820bab5357556c704bffef0f96326dd27742408be175057ffd8f4f58237314cfd520029", - "sourceMap": "355:882:0:-;;;610:625;8:9:-1;5:2;;;30:1;27;20:12;5:2;610:625:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;668:11;593:1:11;578:11;:16;;;;570:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;658:11;645:10;;:24;;;;;;;;;;;;;;;;;;508:168;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;355:882;;;;;;", - "deployedSourceMap": "355:882:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;955:42:11;951:1;945:8;941:57;1030:14;1027:1;1024;1011:34;1125:1;1122;1106:14;1103:1;1091:10;1086:3;1073:54;1161:16;1158:1;1155;1140:38;1206:1;1197:7;1194:14;1191:2;;;1221:16;1218:1;1211:27;1191:2;1263:16;1260:1;1253:27;1426:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1426:104:11;;;;;;;;;;;;;;;;;;;;;;;1302:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1426:104;1492:7;1522:1;1515:8;;1426:104;:::o;1302:118::-;1373:7;1403:10;;;;;;;;;;;1396:17;;1302:118;:::o", + "sourceMap": "355:882:0:-;;;610:625;8:9:-1;5:2;;;30:1;27;20:12;5:2;610:625:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;668:11;593:1:13;578:11;:16;;;;570:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;658:11;645:10;;:24;;;;;;;;;;;;;;;;;;508:168;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;355:882;;;;;;", + "deployedSourceMap": "355:882:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;955:42:13;951:1;945:8;941:57;1030:14;1027:1;1024;1011:34;1125:1;1122;1106:14;1103:1;1091:10;1086:3;1073:54;1161:16;1158:1;1155;1140:38;1206:1;1197:7;1194:14;1191:2;;;1221:16;1218:1;1211:27;1191:2;1263:16;1260:1;1253:27;1426:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1426:104:13;;;;;;;;;;;;;;;;;;;;;;;1302:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:118:13;;;;;;;;;;;;;;;;;;;;;;;;;;;1426:104;1492:7;1522:1;1515:8;;1426:104;:::o;1302:118::-;1373:7;1403:10;;;;;;;;;;;1396:17;;1302:118;:::o", "source": "pragma solidity 0.4.24;\nimport \"./Proxy.sol\";\n\n\n/// @title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract DelegateConstructorProxy is Proxy {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n constructor(address _masterCopy, bytes initializer) Proxy(_masterCopy)\n public\n {\n if (initializer.length > 0) {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n let success := delegatecall(sub(gas, 10000), masterCopy, add(initializer, 0x20), mload(initializer), 0, 0)\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize)\n if eq(success, 0) { revert(ptr, returndatasize) }\n }\n }\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", "ast": { @@ -82,7 +82,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 24, - "sourceUnit": 1612, + "sourceUnit": 2989, "src": "24:21:0", "symbolAliases": [], "unitAlias": "" @@ -96,10 +96,10 @@ "id": 3, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1611, + "referencedDeclaration": 2988, "src": "392:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" } }, @@ -109,7 +109,7 @@ } ], "contractDependencies": [ - 1611 + 2988 ], "contractKind": "contract", "documentation": "@title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n @author Stefan George - \n @author Richard Meissner - ", @@ -117,7 +117,7 @@ "id": 23, "linearizedBaseContracts": [ 23, - 1611 + 2988 ], "name": "DelegateConstructorProxy", "nodeType": "ContractDefinition", @@ -264,10 +264,10 @@ "name": "Proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1611, + "referencedDeclaration": 2988, "src": "662:5:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Proxy_$1611_$", + "typeIdentifier": "t_type$_t_contract$_Proxy_$2988_$", "typeString": "type(contract Proxy)" } }, @@ -382,7 +382,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 24, - "sourceUnit": 1612, + "sourceUnit": 2989, "src": "24:21:0", "symbolAliases": [], "unitAlias": "" @@ -396,10 +396,10 @@ "id": 3, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1611, + "referencedDeclaration": 2988, "src": "392:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" } }, @@ -409,7 +409,7 @@ } ], "contractDependencies": [ - 1611 + 2988 ], "contractKind": "contract", "documentation": "@title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n @author Stefan George - \n @author Richard Meissner - ", @@ -417,7 +417,7 @@ "id": 23, "linearizedBaseContracts": [ 23, - 1611 + 2988 ], "name": "DelegateConstructorProxy", "nodeType": "ContractDefinition", @@ -564,10 +564,10 @@ "name": "Proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1611, + "referencedDeclaration": 2988, "src": "662:5:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Proxy_$1611_$", + "typeIdentifier": "t_type$_t_contract$_Proxy_$2988_$", "typeString": "type(contract Proxy)" } }, @@ -662,5 +662,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-18T14:44:09.445Z" + "updatedAt": "2018-06-29T09:01:22.054Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ERC20Token.json b/safe-contracts/build/contracts/ERC20Token.json deleted file mode 100644 index fc0ad6b8ea..0000000000 --- a/safe-contracts/build/contracts/ERC20Token.json +++ /dev/null @@ -1,1799 +0,0 @@ -{ - "contractName": "ERC20Token", - "abi": [ - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "_from", - "type": "address" - }, - { - "indexed": true, - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "_owner", - "type": "address" - }, - { - "indexed": true, - "name": "_spender", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "name": "balance", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_from", - "type": "address" - }, - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_spender", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - }, - { - "name": "_spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "name": "remaining", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "sourceMap": "", - "deployedSourceMap": "", - "source": "pragma solidity ^0.4.23;\n\n// Abstract contract for the full ERC 20 Token standard\n// https://github.com/ethereum/EIPs/issues/20\n\ncontract ERC20Token {\n /* This is a slight change to the ERC20 base standard.\n function totalSupply() constant returns (uint256 supply);\n is replaced with:\n uint256 public totalSupply;\n This automatically creates a getter function for the totalSupply.\n This is moved to the base contract since public getter functions are not\n currently recognised as an implementation of the matching abstract\n function by the compiler.\n */\n /// total amount of tokens\n uint256 public totalSupply;\n\n /// @param _owner The address from which the balance will be retrieved\n /// @return The balance\n function balanceOf(address _owner) public constant returns (uint256 balance);\n\n /// @notice send `_value` token to `_to` from `msg.sender`\n /// @param _to The address of the recipient\n /// @param _value The amount of token to be transferred\n /// @return Whether the transfer was successful or not\n function transfer(address _to, uint256 _value) public returns (bool success);\n\n /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`\n /// @param _from The address of the sender\n /// @param _to The address of the recipient\n /// @param _value The amount of token to be transferred\n /// @return Whether the transfer was successful or not\n function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);\n\n /// @notice `msg.sender` approves `_spender` to spend `_value` tokens\n /// @param _spender The address of the account able to transfer the tokens\n /// @param _value The amount of tokens to be approved for transfer\n /// @return Whether the approval was successful or not\n function approve(address _spender, uint256 _value) public returns (bool success);\n\n /// @param _owner The address of the account owning tokens\n /// @param _spender The address of the account able to transfer the tokens\n /// @return Amount of remaining tokens allowed to spent\n function allowance(address _owner, address _spender) public constant returns (uint256 remaining);\n\n event Transfer(address indexed _from, address indexed _to, uint256 _value);\n event Approval(address indexed _owner, address indexed _spender, uint256 _value);\n}", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", - "exportedSymbols": { - "ERC20Token": [ - 1571 - ] - }, - "id": 1572, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1507, - "literals": [ - "solidity", - "^", - "0.4", - ".23" - ], - "nodeType": "PragmaDirective", - "src": "0:24:10" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": false, - "id": 1571, - "linearizedBaseContracts": [ - 1571 - ], - "name": "ERC20Token", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 1509, - "name": "totalSupply", - "nodeType": "VariableDeclaration", - "scope": 1571, - "src": "616:26:10", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1508, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "616:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "body": null, - "documentation": "@param _owner The address from which the balance will be retrieved\n @return The balance", - "id": 1516, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "balanceOf", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1512, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1511, - "name": "_owner", - "nodeType": "VariableDeclaration", - "scope": 1516, - "src": "771:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1510, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "771:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "770:16:10" - }, - "payable": false, - "returnParameters": { - "id": 1515, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1514, - "name": "balance", - "nodeType": "VariableDeclaration", - "scope": 1516, - "src": "812:15:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1513, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "812:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "811:17:10" - }, - "scope": 1571, - "src": "752:77:10", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": null, - "documentation": "@notice send `_value` token to `_to` from `msg.sender`\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", - "id": 1525, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transfer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1521, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1518, - "name": "_to", - "nodeType": "VariableDeclaration", - "scope": 1525, - "src": "1083:11:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1517, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1083:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1520, - "name": "_value", - "nodeType": "VariableDeclaration", - "scope": 1525, - "src": "1096:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1519, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1096:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1082:29:10" - }, - "payable": false, - "returnParameters": { - "id": 1524, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1523, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 1525, - "src": "1128:12:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1522, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1128:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1127:14:10" - }, - "scope": 1571, - "src": "1065:77:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": null, - "documentation": "@notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`\n @param _from The address of the sender\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", - "id": 1536, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transferFrom", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1532, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1527, - "name": "_from", - "nodeType": "VariableDeclaration", - "scope": 1536, - "src": "1485:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1526, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1485:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1529, - "name": "_to", - "nodeType": "VariableDeclaration", - "scope": 1536, - "src": "1500:11:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1528, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1500:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1531, - "name": "_value", - "nodeType": "VariableDeclaration", - "scope": 1536, - "src": "1513:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1530, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1513:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1484:44:10" - }, - "payable": false, - "returnParameters": { - "id": 1535, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1534, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 1536, - "src": "1545:12:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1533, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1545:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1544:14:10" - }, - "scope": 1571, - "src": "1463:96:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": null, - "documentation": "@notice `msg.sender` approves `_spender` to spend `_value` tokens\n @param _spender The address of the account able to transfer the tokens\n @param _value The amount of tokens to be approved for transfer\n @return Whether the approval was successful or not", - "id": 1545, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "approve", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1541, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1538, - "name": "_spender", - "nodeType": "VariableDeclaration", - "scope": 1545, - "src": "1865:16:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1537, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1865:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1540, - "name": "_value", - "nodeType": "VariableDeclaration", - "scope": 1545, - "src": "1883:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1539, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1883:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1864:34:10" - }, - "payable": false, - "returnParameters": { - "id": 1544, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1543, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 1545, - "src": "1915:12:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1542, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1915:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1914:14:10" - }, - "scope": 1571, - "src": "1848:81:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": null, - "documentation": "@param _owner The address of the account owning tokens\n @param _spender The address of the account able to transfer the tokens\n @return Amount of remaining tokens allowed to spent", - "id": 1554, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "allowance", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1550, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1547, - "name": "_owner", - "nodeType": "VariableDeclaration", - "scope": 1554, - "src": "2156:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1546, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2156:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1549, - "name": "_spender", - "nodeType": "VariableDeclaration", - "scope": 1554, - "src": "2172:16:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1548, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2172:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2155:34:10" - }, - "payable": false, - "returnParameters": { - "id": 1553, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1552, - "name": "remaining", - "nodeType": "VariableDeclaration", - "scope": 1554, - "src": "2215:17:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1551, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2215:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2214:19:10" - }, - "scope": 1571, - "src": "2137:97:10", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "anonymous": false, - "documentation": null, - "id": 1562, - "name": "Transfer", - "nodeType": "EventDefinition", - "parameters": { - "id": 1561, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1556, - "indexed": true, - "name": "_from", - "nodeType": "VariableDeclaration", - "scope": 1562, - "src": "2255:21:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1555, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2255:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1558, - "indexed": true, - "name": "_to", - "nodeType": "VariableDeclaration", - "scope": 1562, - "src": "2278:19:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1557, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2278:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1560, - "indexed": false, - "name": "_value", - "nodeType": "VariableDeclaration", - "scope": 1562, - "src": "2299:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1559, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2299:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2254:60:10" - }, - "src": "2240:75:10" - }, - { - "anonymous": false, - "documentation": null, - "id": 1570, - "name": "Approval", - "nodeType": "EventDefinition", - "parameters": { - "id": 1569, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1564, - "indexed": true, - "name": "_owner", - "nodeType": "VariableDeclaration", - "scope": 1570, - "src": "2335:22:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1563, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2335:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1566, - "indexed": true, - "name": "_spender", - "nodeType": "VariableDeclaration", - "scope": 1570, - "src": "2359:24:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1565, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2359:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1568, - "indexed": false, - "name": "_value", - "nodeType": "VariableDeclaration", - "scope": 1570, - "src": "2385:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1567, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2385:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2334:66:10" - }, - "src": "2320:81:10" - } - ], - "scope": 1572, - "src": "129:2274:10" - } - ], - "src": "0:2403:10" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", - "exportedSymbols": { - "ERC20Token": [ - 1571 - ] - }, - "id": 1572, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1507, - "literals": [ - "solidity", - "^", - "0.4", - ".23" - ], - "nodeType": "PragmaDirective", - "src": "0:24:10" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": false, - "id": 1571, - "linearizedBaseContracts": [ - 1571 - ], - "name": "ERC20Token", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 1509, - "name": "totalSupply", - "nodeType": "VariableDeclaration", - "scope": 1571, - "src": "616:26:10", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1508, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "616:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "body": null, - "documentation": "@param _owner The address from which the balance will be retrieved\n @return The balance", - "id": 1516, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "balanceOf", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1512, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1511, - "name": "_owner", - "nodeType": "VariableDeclaration", - "scope": 1516, - "src": "771:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1510, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "771:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "770:16:10" - }, - "payable": false, - "returnParameters": { - "id": 1515, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1514, - "name": "balance", - "nodeType": "VariableDeclaration", - "scope": 1516, - "src": "812:15:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1513, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "812:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "811:17:10" - }, - "scope": 1571, - "src": "752:77:10", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": null, - "documentation": "@notice send `_value` token to `_to` from `msg.sender`\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", - "id": 1525, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transfer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1521, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1518, - "name": "_to", - "nodeType": "VariableDeclaration", - "scope": 1525, - "src": "1083:11:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1517, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1083:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1520, - "name": "_value", - "nodeType": "VariableDeclaration", - "scope": 1525, - "src": "1096:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1519, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1096:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1082:29:10" - }, - "payable": false, - "returnParameters": { - "id": 1524, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1523, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 1525, - "src": "1128:12:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1522, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1128:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1127:14:10" - }, - "scope": 1571, - "src": "1065:77:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": null, - "documentation": "@notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`\n @param _from The address of the sender\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", - "id": 1536, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transferFrom", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1532, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1527, - "name": "_from", - "nodeType": "VariableDeclaration", - "scope": 1536, - "src": "1485:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1526, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1485:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1529, - "name": "_to", - "nodeType": "VariableDeclaration", - "scope": 1536, - "src": "1500:11:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1528, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1500:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1531, - "name": "_value", - "nodeType": "VariableDeclaration", - "scope": 1536, - "src": "1513:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1530, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1513:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1484:44:10" - }, - "payable": false, - "returnParameters": { - "id": 1535, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1534, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 1536, - "src": "1545:12:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1533, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1545:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1544:14:10" - }, - "scope": 1571, - "src": "1463:96:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": null, - "documentation": "@notice `msg.sender` approves `_spender` to spend `_value` tokens\n @param _spender The address of the account able to transfer the tokens\n @param _value The amount of tokens to be approved for transfer\n @return Whether the approval was successful or not", - "id": 1545, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "approve", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1541, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1538, - "name": "_spender", - "nodeType": "VariableDeclaration", - "scope": 1545, - "src": "1865:16:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1537, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1865:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1540, - "name": "_value", - "nodeType": "VariableDeclaration", - "scope": 1545, - "src": "1883:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1539, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1883:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1864:34:10" - }, - "payable": false, - "returnParameters": { - "id": 1544, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1543, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 1545, - "src": "1915:12:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1542, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1915:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1914:14:10" - }, - "scope": 1571, - "src": "1848:81:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": null, - "documentation": "@param _owner The address of the account owning tokens\n @param _spender The address of the account able to transfer the tokens\n @return Amount of remaining tokens allowed to spent", - "id": 1554, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "allowance", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1550, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1547, - "name": "_owner", - "nodeType": "VariableDeclaration", - "scope": 1554, - "src": "2156:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1546, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2156:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1549, - "name": "_spender", - "nodeType": "VariableDeclaration", - "scope": 1554, - "src": "2172:16:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1548, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2172:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2155:34:10" - }, - "payable": false, - "returnParameters": { - "id": 1553, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1552, - "name": "remaining", - "nodeType": "VariableDeclaration", - "scope": 1554, - "src": "2215:17:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1551, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2215:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2214:19:10" - }, - "scope": 1571, - "src": "2137:97:10", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "anonymous": false, - "documentation": null, - "id": 1562, - "name": "Transfer", - "nodeType": "EventDefinition", - "parameters": { - "id": 1561, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1556, - "indexed": true, - "name": "_from", - "nodeType": "VariableDeclaration", - "scope": 1562, - "src": "2255:21:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1555, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2255:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1558, - "indexed": true, - "name": "_to", - "nodeType": "VariableDeclaration", - "scope": 1562, - "src": "2278:19:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1557, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2278:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1560, - "indexed": false, - "name": "_value", - "nodeType": "VariableDeclaration", - "scope": 1562, - "src": "2299:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1559, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2299:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2254:60:10" - }, - "src": "2240:75:10" - }, - { - "anonymous": false, - "documentation": null, - "id": 1570, - "name": "Approval", - "nodeType": "EventDefinition", - "parameters": { - "id": 1569, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1564, - "indexed": true, - "name": "_owner", - "nodeType": "VariableDeclaration", - "scope": 1570, - "src": "2335:22:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1563, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2335:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1566, - "indexed": true, - "name": "_spender", - "nodeType": "VariableDeclaration", - "scope": 1570, - "src": "2359:24:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1565, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2359:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1568, - "indexed": false, - "name": "_value", - "nodeType": "VariableDeclaration", - "scope": 1570, - "src": "2385:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1567, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2385:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2334:66:10" - }, - "src": "2320:81:10" - } - ], - "scope": 1572, - "src": "129:2274:10" - } - ], - "src": "0:2403:10" - }, - "compiler": { - "name": "solc", - "version": "0.4.24+commit.e67f0147.Emscripten.clang" - }, - "networks": {}, - "schemaVersion": "2.0.0", - "updatedAt": "2018-06-20T07:57:27.029Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/Enum.json b/safe-contracts/build/contracts/Enum.json index 5cb7d08c89..9f9a9ea358 100644 --- a/safe-contracts/build/contracts/Enum.json +++ b/safe-contracts/build/contracts/Enum.json @@ -3,29 +3,29 @@ "abi": [], "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820641ab8b295edfaa2b1c8a8e0ae7d17ea2f4c8b95ea27e45d8947ed9a4799ca1f0029", "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820641ab8b295edfaa2b1c8a8e0ae7d17ea2f4c8b95ea27e45d8947ed9a4799ca1f0029", - "sourceMap": "115:95:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;115:95:0;;;;;;;", - "deployedSourceMap": "115:95:0:-;;;;;", + "sourceMap": "115:95:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;115:95:1;;;;;;;", + "deployedSourceMap": "115:95:1:-;;;;;", "source": "pragma solidity 0.4.24;\n\n\n/// @title Enum - Collection of enums\n/// @author Richard Meissner - \ncontract Enum {\n enum Operation {\n Call,\n DelegateCall,\n Create\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "exportedSymbols": { "Enum": [ - 6 + 30 ] }, - "id": 7, + "id": 31, "nodeType": "SourceUnit", "nodes": [ { - "id": 1, + "id": 25, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:0" + "src": "0:23:1" }, { "baseContracts": [], @@ -33,66 +33,66 @@ "contractKind": "contract", "documentation": "@title Enum - Collection of enums\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 6, + "id": 30, "linearizedBaseContracts": [ - 6 + 30 ], "name": "Enum", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Enum.Operation", - "id": 5, + "id": 29, "members": [ { - "id": 2, + "id": 26, "name": "Call", "nodeType": "EnumValue", - "src": "160:4:0" + "src": "160:4:1" }, { - "id": 3, + "id": 27, "name": "DelegateCall", "nodeType": "EnumValue", - "src": "174:12:0" + "src": "174:12:1" }, { - "id": 4, + "id": 28, "name": "Create", "nodeType": "EnumValue", - "src": "196:6:0" + "src": "196:6:1" } ], "name": "Operation", "nodeType": "EnumDefinition", - "src": "135:73:0" + "src": "135:73:1" } ], - "scope": 7, - "src": "115:95:0" + "scope": 31, + "src": "115:95:1" } ], - "src": "0:211:0" + "src": "0:211:1" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "exportedSymbols": { "Enum": [ - 6 + 30 ] }, - "id": 7, + "id": 31, "nodeType": "SourceUnit", "nodes": [ { - "id": 1, + "id": 25, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:0" + "src": "0:23:1" }, { "baseContracts": [], @@ -100,46 +100,46 @@ "contractKind": "contract", "documentation": "@title Enum - Collection of enums\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 6, + "id": 30, "linearizedBaseContracts": [ - 6 + 30 ], "name": "Enum", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Enum.Operation", - "id": 5, + "id": 29, "members": [ { - "id": 2, + "id": 26, "name": "Call", "nodeType": "EnumValue", - "src": "160:4:0" + "src": "160:4:1" }, { - "id": 3, + "id": 27, "name": "DelegateCall", "nodeType": "EnumValue", - "src": "174:12:0" + "src": "174:12:1" }, { - "id": 4, + "id": 28, "name": "Create", "nodeType": "EnumValue", - "src": "196:6:0" + "src": "196:6:1" } ], "name": "Operation", "nodeType": "EnumDefinition", - "src": "135:73:0" + "src": "135:73:1" } ], - "scope": 7, - "src": "115:95:0" + "scope": 31, + "src": "115:95:1" } ], - "src": "0:211:0" + "src": "0:211:1" }, "compiler": { "name": "solc", @@ -147,5 +147,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-20T07:57:26.985Z" + "updatedAt": "2018-06-29T09:01:22.054Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafe.json b/safe-contracts/build/contracts/GnosisSafe.json index b5623de093..f4286b81d3 100644 --- a/safe-contracts/build/contracts/GnosisSafe.json +++ b/safe-contracts/build/contracts/GnosisSafe.json @@ -1,6 +1,24 @@ { "contractName": "GnosisSafe", "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint256" + } + ], + "name": "addOwnerWithThreshold", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": true, "inputs": [ @@ -66,39 +84,31 @@ "type": "function" }, { - "constant": true, - "inputs": [], - "name": "SENTINEL_MODULES", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", - "type": "address" + "name": "_threshold", + "type": "uint256" } ], + "name": "changeThreshold", + "outputs": [], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function" }, { - "constant": false, - "inputs": [ - { - "name": "prevOwner", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "SENTINEL_MODULES", + "outputs": [ { - "name": "owner", + "name": "", "type": "address" - }, - { - "name": "_threshold", - "type": "uint8" } ], - "name": "removeOwner", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { @@ -157,38 +167,6 @@ "stateMutability": "view", "type": "function" }, - { - "constant": false, - "inputs": [ - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "changeThreshold", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - }, - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "addOwnerWithThreshold", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { "constant": false, "inputs": [ @@ -236,13 +214,35 @@ "outputs": [ { "name": "", - "type": "uint8" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, + { + "constant": false, + "inputs": [ + { + "name": "prevOwner", + "type": "address" + }, + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint256" + } + ], + "name": "removeOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": true, "inputs": [], @@ -283,7 +283,7 @@ }, { "name": "_threshold", - "type": "uint8" + "type": "uint256" }, { "name": "to", @@ -301,62 +301,62 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50613003806100206000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610971565b005b34801561024a57600080fd5b50610253610d4b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610d50565b005b34801561031157600080fd5b5061031a61123b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611240565b005b34801561044157600080fd5b5061044a61125a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b66113f5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b5061054661142e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff1690602001909291905050506116d1565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506118ec565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cf5565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061210a565b005b34801561070f57600080fd5b50610718612757565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749612761565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561095a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b610967858585855a61279a565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610a8e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610bee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660016002540310151515610ebf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015610f135750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515610f87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff1660035414151561123657611235816116d1565b5b505050565b600181565b61124a8484612897565b6112548282612d5f565b50505050565b6060806000806002546040519080825280602002602001820160405280156112915781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156113ec5780838381518110151561134157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506112fc565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611540576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150828060010193505061149c565b8260405190808252806020026020018201604052801561156f5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156116c85781818481518110151561161e57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506115d9565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561179a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6002548160ff161115151561183d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff16101515156118df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660038190555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611a095750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611a7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611b6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600354141515611cf157611cf0816116d1565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015611e125750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611e86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156121d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156122275750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561229b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156123dc5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612578576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600354905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600060028111156127aa57fe5b8460028111156127b657fe5b14156127cf576127c887878786612f95565b915061288d565b600160028111156127dc57fe5b8460028111156127e857fe5b1415612800576127f9878685612fae565b915061288c565b61280985612fc5565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600354141515612915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518460ff16111515156129b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018460ff1610151515612a59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b8451821015612cc8578482815181101515612a7957fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015612ad95750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612b4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612c3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612a62565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084516002819055508360ff166003819055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612e72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612f9157612f1c82825a612fae565b1515612f90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820a9ec33481152b7e7383f078b0dd129e398386af65e548de4e86ac13d1d35683a0029", - "deployedBytecode": "0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610971565b005b34801561024a57600080fd5b50610253610d4b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610d50565b005b34801561031157600080fd5b5061031a61123b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611240565b005b34801561044157600080fd5b5061044a61125a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b66113f5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b5061054661142e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff1690602001909291905050506116d1565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506118ec565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cf5565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061210a565b005b34801561070f57600080fd5b50610718612757565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749612761565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561095a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b610967858585855a61279a565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610a8e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610bee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660016002540310151515610ebf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015610f135750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515610f87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff1660035414151561123657611235816116d1565b5b505050565b600181565b61124a8484612897565b6112548282612d5f565b50505050565b6060806000806002546040519080825280602002602001820160405280156112915781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156113ec5780838381518110151561134157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506112fc565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611540576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150828060010193505061149c565b8260405190808252806020026020018201604052801561156f5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156116c85781818481518110151561161e57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506115d9565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561179a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6002548160ff161115151561183d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff16101515156118df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660038190555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611a095750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611a7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611b6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600354141515611cf157611cf0816116d1565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015611e125750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611e86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156121d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156122275750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561229b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156123dc5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612578576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600354905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600060028111156127aa57fe5b8460028111156127b657fe5b14156127cf576127c887878786612f95565b915061288d565b600160028111156127dc57fe5b8460028111156127e857fe5b1415612800576127f9878685612fae565b915061288c565b61280985612fc5565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600354141515612915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518460ff16111515156129b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018460ff1610151515612a59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b8451821015612cc8578482815181101515612a7957fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015612ad95750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612b4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612c3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612a62565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084516002819055508360ff166003819055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612e72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612f9157612f1c82825a612fae565b1515612f90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820a9ec33481152b7e7383f078b0dd129e398386af65e548de4e86ac13d1d35683a0029", - "sourceMap": "322:674:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;322:674:1;;;;;;;", - "deployedSourceMap": "322:674:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5610:129:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5610:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2841:429:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2841:429:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:459;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:459:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;3026:781:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3026:781:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:7;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5821:458:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5821:458:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5821:458:7;;;;;;;;;;;;;;;;;401:46:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;401:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4794:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4794:738:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4794:738:6;;;;;;;;;;;;;;;;;5081:397:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5081:397:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:593;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2091:593:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2031:474:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:474:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4141:751:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4141:751:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5484:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5484:120:7;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;453:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5610:129:7;5687:4;5731:1;5714:6;:13;5721:5;5714:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;5707:25;;5610:129;;;:::o;2841:429:6:-;2973:12;3081:1;3058:7;:19;3066:10;3058:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;3050:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3217:46;3225:2;3229:5;3236:4;3242:9;3253;3217:7;:46::i;:::-;3207:56;;2841:429;;;;;;:::o;1311:459::-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:1:6;1466:6;1458:20;;;;:59;;;;;550:3;1482:35;;1490:6;1482:35;;;;1458:59;1450:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1631:1;1612:7;:15;1620:6;1612:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1604:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:7;:25;550:3;1694:25;;;;;;;;;;;;;;;;;;;;;;;;;1676:7;:15;1684:6;1676:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1757:6;1729:7;:25;550:3;1729:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1311:459;:::o;499:55::-;550:3;499:55;:::o;3026:781:7:-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3250:10:7;3232:28;;3245:1;3232:10;;:14;:28;;3224:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3425:1;3416:5;:10;;;;:38;;;;;337:3;3430:24;;:5;:24;;;;3416:38;3408:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3528:5;3507:26;;:6;:17;3514:9;3507:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3499:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3606:6;:13;3613:5;3606:13;;;;;;;;;;;;;;;;;;;;;;;;;3586:6;:17;3593:9;3586:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3645:1;3629:6;:13;3636:5;3629:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3656:10;;:12;;;;;;;;;;;;;;3749:10;3736:23;;:9;;:23;;3732:68;;;3773:27;3789:10;3773:15;:27::i;:::-;3732:68;3026:781;;;:::o;287:54::-;337:3;287:54;:::o;693:301:1:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5821:458:7:-;5887:9;5912:22;6006:13;6033:20;5951:10;;5937:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5937:25:7;;;;5912:50;;6022:1;6006:17;;6056:6;:23;337:3;6056:23;;;;;;;;;;;;;;;;;;;;;;;;;6033:46;;6089:162;337:3;6095:31;;:12;:31;;;;6089:162;;;6157:12;6142:5;6148;6142:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;6198:6;:20;6205:12;6198:20;;;;;;;;;;;;;;;;;;;;;;;;;6183:35;;6232:8;;;;;;;6089:162;;;6267:5;6260:12;;5821:458;;;;:::o;401:46:6:-;;;;;;;;;;;;;;;;;;;;:::o;4794:738::-;4861:9;4920:19;4953:21;5153:22;4942:1;4920:23;;4977:7;:25;550:3;4977:25;;;;;;;;;;;;;;;;;;;;;;;;;4953:49;;5012:132;550:3;5018:33;;:13;:33;;;;5012:132;;;5083:7;:22;5091:13;5083:22;;;;;;;;;;;;;;;;;;;;;;;;;5067:38;;5119:14;;;;;;;5012:132;;;5192:11;5178:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5178:26:6;;;;5153:51;;5262:1;5248:15;;5289:7;:25;550:3;5289:25;;;;;;;;;;;;;;;;;;;;;;;;;5273:41;;5324:180;550:3;5330:33;;:13;:33;;;;5324:180;;;5400:13;5379:5;5385:11;5379:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5443:7;:22;5451:13;5443:22;;;;;;;;;;;;;;;;;;;;;;;;;5427:38;;5479:14;;;;;;;5324:180;;;5520:5;5513:12;;4794:738;;;;:::o;5081:397:7:-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5263:10:7;;5249;:24;;;;5241:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5397:1;5383:10;:15;;;;5375:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5461:10;5449:22;;:9;:22;;;;5081:397;:::o;2091:593::-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2261:1:7;2252:5;:10;;;;:38;;;;;337:3;2266:24;;:5;:24;;;;2252:38;2244:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2400:1;2383:6;:13;2390:5;2383:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2375:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2459:6;:23;337:3;2459:23;;;;;;;;;;;;;;;;;;;;;;;;;2443:6;:13;2450:5;2443:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2518:5;2492:6;:23;337:3;2492:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2533:10;;:12;;;;;;;;;;;;;2626:10;2613:23;;:9;;:23;;2609:68;;;2650:27;2666:10;2650:15;:27::i;:::-;2609:68;2091:593;;:::o;2031:474:6:-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:1:6;2234:6;2226:20;;;;:59;;;;;550:3;2250:35;;2258:6;2250:35;;;;2226:59;2218:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2370:6;2339:38;;:7;:19;2347:10;2339:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2331:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2454:7;:15;2462:6;2454:15;;;;;;;;;;;;;;;;;;;;;;;;;2432:7;:19;2440:10;2432:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2497:1;2479:7;:15;2487:6;2479:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;2031:474;;:::o;4141:751:7:-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4324:1:7;4312:8;:13;;;;:44;;;;;337:3;4329:27;;:8;:27;;;;4312:44;4304:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4469:1;4449:6;:16;4456:8;4449:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;4441:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4615:1;4603:8;:13;;;;:44;;;;;337:3;4620:27;;:8;:27;;;;4603:44;4595:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4721:8;4700:29;;:6;:17;4707:9;4700:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4692:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4801:6;:16;4808:8;4801:16;;;;;;;;;;;;;;;;;;;;;;;;;4782:6;:16;4789:8;4782:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4847:8;4827:6;:17;4834:9;4827:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4884:1;4865:6;:16;4872:8;4865:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4141:751;;;:::o;5484:120::-;5553:5;5587:9;;5574:23;;5484:120;:::o;453:40:6:-;;;;;;;;;;;;;;;;;;;;:::o;3276:548::-;3407:12;3678:19;3452;3439:32;;;;;;;;:9;:32;;;;;;;;;3435:383;;;3495:35;3507:2;3511:5;3518:4;3524:5;3495:11;:35::i;:::-;3485:45;;3435:383;;;3562:27;3549:40;;;;;;;;:9;:40;;;;;;;;;3545:273;;;3613:36;3633:2;3637:4;3643:5;3613:19;:36::i;:::-;3603:46;;3545:273;;;3700:19;3714:4;3700:13;:19::i;:::-;3678:41;;3758:1;3743:11;:16;;;;3733:26;;3778:29;3795:11;3778:29;;;;;;;;;;;;;;;;;;;;;;3545:273;3435:383;3276:548;;;;;;;;:::o;643:1208:7:-;1247:20;1300:9;1399:13;877:1;864:9;;:14;856:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1020:7;:14;1006:10;:28;;;;998:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1158:1;1144:10;:15;;;;1136:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;337:3;1247:38;;1312:1;1300:13;;1295:433;1319:7;:14;1315:1;:18;1295:433;;;1415:7;1423:1;1415:10;;;;;;;;;;;;;;;;;;1399:26;;1456:1;1447:5;:10;;;;:38;;;;;337:3;1461:24;;:5;:24;;;;1447:38;1439:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1603:1;1586:6;:13;1593:5;1586:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1578:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1678:5;1655:6;:20;1662:12;1655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1712:5;1697:20;;1335:3;;;;;;;1295:433;;;337:3;1737:6;:20;1744:12;1737:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1798:7;:14;1785:10;:27;;;;1834:10;1822:22;;:9;:22;;;;643:1208;;;;;:::o;735:409:6:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;550:3;902:7;:25;550:3;902:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;966:1;960:2;:7;;;;956:181;;;1061:40;1081:2;1085:4;1091:9;1061:19;:40::i;:::-;1053:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;956:181;735:409;;:::o;3830:309::-;3939:12;4121:1;4118;4111:4;4105:11;4098:4;4092;4088:15;4081:5;4077:2;4070:5;4065:58;4054:69;;4040:93;;;;;;:::o;4145:303::-;4247:12;4430:1;4427;4420:4;4414:11;4407:4;4401;4397:15;4393:2;4386:5;4373:59;4362:70;;4348:94;;;;;:::o;4454:261::-;4523:19;4693:4;4687:11;4680:4;4674;4670:15;4667:1;4660:39;4645:54;;4631:78;;;:::o", - "source": "pragma solidity 0.4.24;\nimport \"./Module.sol\";\nimport \"./ModuleManager.sol\";\nimport \"./OwnerManager.sol\";\n\n\n/// @title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n/// @author Stefan George - \ncontract GnosisSafe is ModuleManager, OwnerManager {\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function setup(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n setupOwners(_owners, _threshold);\n // As setupOwners can only be called if the contract has not been initialized we don't need a check for setupModules\n setupModules(to, data);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50612fd6806100206000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630d582f13146100e85780630ec78d9e146101355780632f54bf6e1461020b578063468721a714610266578063610b59251461031e578063694e80c31461036157806385e332cd1461038e5780638cff6355146103e5578063a0e67e2b1461043c578063a3f4df7e146104a8578063b2494df314610538578063e009cfde146105a4578063e318b52b14610607578063e75235b81461068a578063f8dc5dd9146106b5578063ffa1ad7414610722575b005b3480156100f457600080fd5b50610133600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107b2565b005b34801561014157600080fd5b506102096004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610bb8565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bd2565b604051808215151515815260200191505060405180910390f35b34801561027257600080fd5b50610304600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610c54565b604051808215151515815260200191505060405180910390f35b34801561032a57600080fd5b5061035f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d7f565b005b34801561036d57600080fd5b5061038c60048036038101908080359060200190929190505050611159565b005b34801561039a57600080fd5b506103a361136b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103f157600080fd5b506103fa611370565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561044857600080fd5b50610451611375565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610494578082015181840152602081019050610479565b505050509050019250505060405180910390f35b3480156104b457600080fd5b506104bd611510565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104fd5780820151818401526020810190506104e2565b50505050905090810190601f16801561052a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561054457600080fd5b5061054d611549565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610590578082015181840152602081019050610575565b505050509050019250505060405180910390f35b3480156105b057600080fd5b50610605600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117ec565b005b34801561061357600080fd5b50610688600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c01565b005b34801561069657600080fd5b5061069f61224e565b6040518082815260200191505060405180910390f35b3480156106c157600080fd5b50610720600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612258565b005b34801561072e57600080fd5b5061073761273d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561077757808201518184015260208101905061075c565b50505050905090810190601f1680156107a45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561087b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156108cf5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060026000815480929190600101919050555080600354141515610bb457610bb381611159565b5b5050565b610bc28484612776565b610bcc8282612c35565b50505050565b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610d68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b610d75858585855a612e6b565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610e9c5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610f10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ffc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611222576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60025481111515156112c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018110151515611361576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060038190555050565b600181565b600181565b6060806000806002546040519080825280602002602001820160405280156113ac5781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156115075780838381518110151561145c57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611417565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561165b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506115b7565b8260405190808252806020026020018201604052801561168a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156117e35781818481518110151561173957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506116f4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156119095750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611aa4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611cca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015611d1e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611d92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611ed35750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611f47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561206f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600354905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600160025403101515156123c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156124185750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561248c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156125b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060026000815480929190600190039190505550806003541415156127385761273781611159565b5b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000806003541415156127f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518411151515612893576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018410151515612932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b8451821015612ba157848281518110151561295257fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156129b25750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612a26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550809250818060010192505061293b565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508451600281905550836003819055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612d48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612e6757612df282825a612f68565b1515612e66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b60008060006002811115612e7b57fe5b846002811115612e8757fe5b1415612ea057612e9987878786612f7f565b9150612f5e565b60016002811115612ead57fe5b846002811115612eb957fe5b1415612ed157612eca878685612f68565b9150612f5d565b612eda85612f98565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b60008060008451602086018786f490509392505050565b6000806000845160208601878987f19050949350505050565b60008151602083016000f090509190505600a165627a7a72305820185229e665ad79a5dd08f65fba0b9c14bbf98145167f3cc26543abb51bc9fb7b0029", + "deployedBytecode": "0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630d582f13146100e85780630ec78d9e146101355780632f54bf6e1461020b578063468721a714610266578063610b59251461031e578063694e80c31461036157806385e332cd1461038e5780638cff6355146103e5578063a0e67e2b1461043c578063a3f4df7e146104a8578063b2494df314610538578063e009cfde146105a4578063e318b52b14610607578063e75235b81461068a578063f8dc5dd9146106b5578063ffa1ad7414610722575b005b3480156100f457600080fd5b50610133600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107b2565b005b34801561014157600080fd5b506102096004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610bb8565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bd2565b604051808215151515815260200191505060405180910390f35b34801561027257600080fd5b50610304600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610c54565b604051808215151515815260200191505060405180910390f35b34801561032a57600080fd5b5061035f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d7f565b005b34801561036d57600080fd5b5061038c60048036038101908080359060200190929190505050611159565b005b34801561039a57600080fd5b506103a361136b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103f157600080fd5b506103fa611370565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561044857600080fd5b50610451611375565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610494578082015181840152602081019050610479565b505050509050019250505060405180910390f35b3480156104b457600080fd5b506104bd611510565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104fd5780820151818401526020810190506104e2565b50505050905090810190601f16801561052a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561054457600080fd5b5061054d611549565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610590578082015181840152602081019050610575565b505050509050019250505060405180910390f35b3480156105b057600080fd5b50610605600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117ec565b005b34801561061357600080fd5b50610688600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c01565b005b34801561069657600080fd5b5061069f61224e565b6040518082815260200191505060405180910390f35b3480156106c157600080fd5b50610720600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612258565b005b34801561072e57600080fd5b5061073761273d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561077757808201518184015260208101905061075c565b50505050905090810190601f1680156107a45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561087b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156108cf5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060026000815480929190600101919050555080600354141515610bb457610bb381611159565b5b5050565b610bc28484612776565b610bcc8282612c35565b50505050565b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610d68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b610d75858585855a612e6b565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610e9c5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610f10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ffc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611222576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60025481111515156112c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018110151515611361576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060038190555050565b600181565b600181565b6060806000806002546040519080825280602002602001820160405280156113ac5781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156115075780838381518110151561145c57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611417565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561165b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506115b7565b8260405190808252806020026020018201604052801561168a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156117e35781818481518110151561173957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506116f4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156119095750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611aa4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611cca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015611d1e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611d92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611ed35750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611f47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561206f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600354905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600160025403101515156123c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156124185750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561248c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156125b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060026000815480929190600190039190505550806003541415156127385761273781611159565b5b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000806003541415156127f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518411151515612893576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018410151515612932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b8451821015612ba157848281518110151561295257fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156129b25750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612a26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550809250818060010192505061293b565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508451600281905550836003819055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612d48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612e6757612df282825a612f68565b1515612e66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b60008060006002811115612e7b57fe5b846002811115612e8757fe5b1415612ea057612e9987878786612f7f565b9150612f5e565b60016002811115612ead57fe5b846002811115612eb957fe5b1415612ed157612eca878685612f68565b9150612f5d565b612eda85612f98565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b60008060008451602086018786f490509392505050565b6000806000845160208601878987f19050949350505050565b60008151602083016000f090509190505600a165627a7a72305820185229e665ad79a5dd08f65fba0b9c14bbf98145167f3cc26543abb51bc9fb7b0029", + "sourceMap": "322:676:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;322:676:2;;;;;;;", + "deployedSourceMap": "322:676:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:595:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2093:595:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;693:303:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:303:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5613:129:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5613:129:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2841:429:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2841:429:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:459;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:459:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;5087:399:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5087:399:11;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:9;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:11;;;;;;;;;;;;;;;;;;;;;;;;;;;5824:458;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5824:458:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5824:458:11;;;;;;;;;;;;;;;;;401:46:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;401:46:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4794:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4794:738:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4794:738:9;;;;;;;;;;;;;;;;;2031:474;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:474:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4147:751:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4147:751:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5492:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5492:115:11;;;;;;;;;;;;;;;;;;;;;;;3030:783;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3030:783:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;453:40:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:595:11;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2265:1:11;2256:5;:10;;;;:38;;;;;337:3;2270:24;;:5;:24;;;;2256:38;2248:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2404:1;2387:6;:13;2394:5;2387:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2379:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2463:6;:23;337:3;2463:23;;;;;;;;;;;;;;;;;;;;;;;;;2447:6;:13;2454:5;2447:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2522:5;2496:6;:23;337:3;2496:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2537:10;;:12;;;;;;;;;;;;;2630:10;2617:9;;:23;;2613:68;;;2654:27;2670:10;2654:15;:27::i;:::-;2613:68;2093:595;;:::o;693:303:2:-;800:32;812:7;821:10;800:11;:32::i;:::-;967:22;980:2;984:4;967:12;:22::i;:::-;693:303;;;;:::o;5613:129:11:-;5690:4;5734:1;5717:6;:13;5724:5;5717:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;5710:25;;5613:129;;;:::o;2841:429:9:-;2973:12;3081:1;3058:7;:19;3066:10;3058:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;3050:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3217:46;3225:2;3229:5;3236:4;3242:9;3253;3217:7;:46::i;:::-;3207:56;;2841:429;;;;;;:::o;1311:459::-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:1:9;1466:6;1458:20;;;;:59;;;;;550:3;1482:35;;1490:6;1482:35;;;;1458:59;1450:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1631:1;1612:7;:15;1620:6;1612:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1604:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:7;:25;550:3;1694:25;;;;;;;;;;;;;;;;;;;;;;;;;1676:7;:15;1684:6;1676:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1757:6;1729:7;:25;550:3;1729:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1311:459;:::o;5087:399:11:-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5271:10:11;;5257;:24;;5249:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5405:1;5391:10;:15;;5383:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5469:10;5457:9;:22;;;;5087:399;:::o;499:55:9:-;550:3;499:55;:::o;287:54:11:-;337:3;287:54;:::o;5824:458::-;5890:9;5915:22;6009:13;6036:20;5954:10;;5940:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5940:25:11;;;;5915:50;;6025:1;6009:17;;6059:6;:23;337:3;6059:23;;;;;;;;;;;;;;;;;;;;;;;;;6036:46;;6092:162;337:3;6098:31;;:12;:31;;;;6092:162;;;6160:12;6145:5;6151;6145:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;6201:6;:20;6208:12;6201:20;;;;;;;;;;;;;;;;;;;;;;;;;6186:35;;6235:8;;;;;;;6092:162;;;6270:5;6263:12;;5824:458;;;;:::o;401:46:9:-;;;;;;;;;;;;;;;;;;;;:::o;4794:738::-;4861:9;4920:19;4953:21;5153:22;4942:1;4920:23;;4977:7;:25;550:3;4977:25;;;;;;;;;;;;;;;;;;;;;;;;;4953:49;;5012:132;550:3;5018:33;;:13;:33;;;;5012:132;;;5083:7;:22;5091:13;5083:22;;;;;;;;;;;;;;;;;;;;;;;;;5067:38;;5119:14;;;;;;;5012:132;;;5192:11;5178:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5178:26:9;;;;5153:51;;5262:1;5248:15;;5289:7;:25;550:3;5289:25;;;;;;;;;;;;;;;;;;;;;;;;;5273:41;;5324:180;550:3;5330:33;;:13;:33;;;;5324:180;;;5400:13;5379:5;5385:11;5379:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5443:7;:22;5451:13;5443:22;;;;;;;;;;;;;;;;;;;;;;;;;5427:38;;5479:14;;;;;;;5324:180;;;5520:5;5513:12;;4794:738;;;;:::o;2031:474::-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:1:9;2234:6;2226:20;;;;:59;;;;;550:3;2250:35;;2258:6;2250:35;;;;2226:59;2218:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2370:6;2339:38;;:7;:19;2347:10;2339:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2331:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2454:7;:15;2462:6;2454:15;;;;;;;;;;;;;;;;;;;;;;;;;2432:7;:19;2440:10;2432:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2497:1;2479:7;:15;2487:6;2479:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;2031:474;;:::o;4147:751:11:-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4330:1:11;4318:8;:13;;;;:44;;;;;337:3;4335:27;;:8;:27;;;;4318:44;4310:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4475:1;4455:6;:16;4462:8;4455:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;4447:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4621:1;4609:8;:13;;;;:44;;;;;337:3;4626:27;;:8;:27;;;;4609:44;4601:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4727:8;4706:29;;:6;:17;4713:9;4706:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4698:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4807:6;:16;4814:8;4807:16;;;;;;;;;;;;;;;;;;;;;;;;;4788:6;:16;4795:8;4788:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4853:8;4833:6;:17;4840:9;4833:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4890:1;4871:6;:16;4878:8;4871:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4147:751;;;:::o;5492:115::-;5561:7;5591:9;;5584:16;;5492:115;:::o;3030:783::-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3256:10:11;3251:1;3238:10;;:14;:28;;3230:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3431:1;3422:5;:10;;;;:38;;;;;337:3;3436:24;;:5;:24;;;;3422:38;3414:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:5;3513:26;;:6;:17;3520:9;3513:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3505:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:6;:13;3619:5;3612:13;;;;;;;;;;;;;;;;;;;;;;;;;3592:6;:17;3599:9;3592:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3651:1;3635:6;:13;3642:5;3635:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3662:10;;:12;;;;;;;;;;;;;;3755:10;3742:9;;:23;;3738:68;;;3779:27;3795:10;3779:15;:27::i;:::-;3738:68;3030:783;;;:::o;453:40:9:-;;;;;;;;;;;;;;;;;;;;:::o;643:1210:11:-;1249:20;1302:9;1401:13;879:1;866:9;;:14;858:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1022:7;:14;1008:10;:28;;1000:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1160:1;1146:10;:15;;1138:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;337:3;1249:38;;1314:1;1302:13;;1297:433;1321:7;:14;1317:1;:18;1297:433;;;1417:7;1425:1;1417:10;;;;;;;;;;;;;;;;;;1401:26;;1458:1;1449:5;:10;;;;:38;;;;;337:3;1463:24;;:5;:24;;;;1449:38;1441:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1605:1;1588:6;:13;1595:5;1588:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1580:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1680:5;1657:6;:20;1664:12;1657:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1714:5;1699:20;;1337:3;;;;;;;1297:433;;;337:3;1739:6;:20;1746:12;1739:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1800:7;:14;1787:10;:27;;;;1836:10;1824:9;:22;;;;643:1210;;;;;:::o;735:409:9:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;550:3;902:7;:25;550:3;902:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;966:1;960:2;:7;;;;956:181;;;1061:40;1081:2;1085:4;1091:9;1061:19;:40::i;:::-;1053:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;956:181;735:409;;:::o;3276:548::-;3407:12;3678:19;3452;3439:32;;;;;;;;:9;:32;;;;;;;;;3435:383;;;3495:35;3507:2;3511:5;3518:4;3524:5;3495:11;:35::i;:::-;3485:45;;3435:383;;;3562:27;3549:40;;;;;;;;:9;:40;;;;;;;;;3545:273;;;3613:36;3633:2;3637:4;3643:5;3613:19;:36::i;:::-;3603:46;;3545:273;;;3700:19;3714:4;3700:13;:19::i;:::-;3678:41;;3758:1;3743:11;:16;;;;3733:26;;3778:29;3795:11;3778:29;;;;;;;;;;;;;;;;;;;;;;3545:273;3435:383;3276:548;;;;;;;;:::o;4145:303::-;4247:12;4430:1;4427;4420:4;4414:11;4407:4;4401;4397:15;4393:2;4386:5;4373:59;4362:70;;4348:94;;;;;:::o;3830:309::-;3939:12;4121:1;4118;4111:4;4105:11;4098:4;4092;4088:15;4081:5;4077:2;4070:5;4065:58;4054:69;;4040:93;;;;;;:::o;4454:261::-;4523:19;4693:4;4687:11;4680:4;4674;4670:15;4667:1;4660:39;4645:54;;4631:78;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./Module.sol\";\nimport \"./ModuleManager.sol\";\nimport \"./OwnerManager.sol\";\n\n\n/// @title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n/// @author Stefan George - \ncontract GnosisSafe is ModuleManager, OwnerManager {\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function setup(address[] _owners, uint256 _threshold, address to, bytes data)\n public\n {\n setupOwners(_owners, _threshold);\n // As setupOwners can only be called if the contract has not been initialized we don't need a check for setupModules\n setupModules(to, data);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "exportedSymbols": { "GnosisSafe": [ - 39 + 63 ] }, - "id": 40, + "id": 64, "nodeType": "SourceUnit", "nodes": [ { - "id": 8, + "id": 32, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:1" + "src": "0:23:2" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 9, + "id": 33, "nodeType": "ImportDirective", - "scope": 40, - "sourceUnit": 652, - "src": "24:22:1", + "scope": 64, + "sourceUnit": 1862, + "src": "24:22:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 10, + "id": 34, "nodeType": "ImportDirective", - "scope": 40, - "sourceUnit": 1023, - "src": "47:29:1", + "scope": 64, + "sourceUnit": 2233, + "src": "47:29:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "./OwnerManager.sol", - "id": 11, + "id": 35, "nodeType": "ImportDirective", - "scope": 40, - "sourceUnit": 1433, - "src": "77:28:1", + "scope": 64, + "sourceUnit": 2889, + "src": "77:28:2", "symbolAliases": [], "unitAlias": "" }, @@ -366,62 +366,62 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 12, + "id": 36, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1022, - "src": "345:13:1", + "referencedDeclaration": 2232, + "src": "345:13:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, - "id": 13, + "id": 37, "nodeType": "InheritanceSpecifier", - "src": "345:13:1" + "src": "345:13:2" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 14, + "id": 38, "name": "OwnerManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1432, - "src": "360:12:1", + "referencedDeclaration": 2888, + "src": "360:12:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1432", + "typeIdentifier": "t_contract$_OwnerManager_$2888", "typeString": "contract OwnerManager" } }, - "id": 15, + "id": 39, "nodeType": "InheritanceSpecifier", - "src": "360:12:1" + "src": "360:12:2" } ], "contractDependencies": [ - 1022, - 1432, - 1449 + 2232, + 2888, + 3065 ], "contractKind": "contract", "documentation": "@title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n @author Stefan George - ", "fullyImplemented": true, - "id": 39, + "id": 63, "linearizedBaseContracts": [ - 39, - 1432, - 1022, - 1449 + 63, + 2888, + 2232, + 3065 ], "name": "GnosisSafe", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 37, + "id": 61, "nodeType": "Block", - "src": "788:206:1", + "src": "790:206:2", "statements": [ { "expression": { @@ -429,12 +429,12 @@ "arguments": [ { "argumentTypes": null, - "id": 28, + "id": 52, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "810:7:1", + "referencedDeclaration": 42, + "src": "812:7:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" @@ -442,15 +442,15 @@ }, { "argumentTypes": null, - "id": 29, + "id": 53, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 20, - "src": "819:10:1", + "referencedDeclaration": 44, + "src": "821:10:2", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], @@ -461,22 +461,22 @@ "typeString": "address[] memory" }, { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 27, + "id": 51, "name": "setupOwners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1139, - "src": "798:11:1", + "referencedDeclaration": 2597, + "src": "800:11:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", - "typeString": "function (address[] memory,uint8)" + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (address[] memory,uint256)" } }, - "id": 30, + "id": 54, "isConstant": false, "isLValue": false, "isPure": false, @@ -484,15 +484,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "798:32:1", + "src": "800:32:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 31, + "id": 55, "nodeType": "ExpressionStatement", - "src": "798:32:1" + "src": "800:32:2" }, { "expression": { @@ -500,12 +500,12 @@ "arguments": [ { "argumentTypes": null, - "id": 33, + "id": 57, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 22, - "src": "978:2:1", + "referencedDeclaration": 46, + "src": "980:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -513,12 +513,12 @@ }, { "argumentTypes": null, - "id": 34, + "id": 58, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 24, - "src": "982:4:1", + "referencedDeclaration": 48, + "src": "984:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -536,18 +536,18 @@ "typeString": "bytes memory" } ], - "id": 32, + "id": 56, "name": "setupModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 718, - "src": "965:12:1", + "referencedDeclaration": 1928, + "src": "967:12:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,bytes memory)" } }, - "id": 35, + "id": 59, "isConstant": false, "isLValue": false, "isPure": false, @@ -555,20 +555,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "965:22:1", + "src": "967:22:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 36, + "id": 60, "nodeType": "ExpressionStatement", - "src": "965:22:1" + "src": "967:22:2" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.\n @param to Contract address for optional delegate call.\n @param data Data payload for optional delegate call.", - "id": 38, + "id": 62, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -576,16 +576,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 25, + "id": 49, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 18, + "id": 42, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "708:17:1", + "scope": 62, + "src": "708:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -594,19 +594,19 @@ }, "typeName": { "baseType": { - "id": 16, + "id": 40, "name": "address", "nodeType": "ElementaryTypeName", - "src": "708:7:1", + "src": "708:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 17, + "id": 41, "length": null, "nodeType": "ArrayTypeName", - "src": "708:9:1", + "src": "708:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -617,25 +617,25 @@ }, { "constant": false, - "id": 20, + "id": 44, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "727:16:1", + "scope": 62, + "src": "727:18:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 19, - "name": "uint8", + "id": 43, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "727:5:1", + "src": "727:7:2", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, @@ -643,11 +643,11 @@ }, { "constant": false, - "id": 22, + "id": 46, "name": "to", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "745:10:1", + "scope": 62, + "src": "747:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -655,10 +655,10 @@ "typeString": "address" }, "typeName": { - "id": 21, + "id": 45, "name": "address", "nodeType": "ElementaryTypeName", - "src": "745:7:1", + "src": "747:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -669,11 +669,11 @@ }, { "constant": false, - "id": 24, + "id": 48, "name": "data", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "757:10:1", + "scope": 62, + "src": "759:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -681,10 +681,10 @@ "typeString": "bytes" }, "typeName": { - "id": 23, + "id": 47, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "757:5:1", + "src": "759:5:2", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -694,78 +694,78 @@ "visibility": "internal" } ], - "src": "707:61:1" + "src": "707:63:2" }, "payable": false, "returnParameters": { - "id": 26, + "id": 50, "nodeType": "ParameterList", "parameters": [], - "src": "788:0:1" + "src": "790:0:2" }, - "scope": 39, - "src": "693:301:1", + "scope": 63, + "src": "693:303:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 40, - "src": "322:674:1" + "scope": 64, + "src": "322:676:2" } ], - "src": "0:997:1" + "src": "0:999:2" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "exportedSymbols": { "GnosisSafe": [ - 39 + 63 ] }, - "id": 40, + "id": 64, "nodeType": "SourceUnit", "nodes": [ { - "id": 8, + "id": 32, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:1" + "src": "0:23:2" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 9, + "id": 33, "nodeType": "ImportDirective", - "scope": 40, - "sourceUnit": 652, - "src": "24:22:1", + "scope": 64, + "sourceUnit": 1862, + "src": "24:22:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 10, + "id": 34, "nodeType": "ImportDirective", - "scope": 40, - "sourceUnit": 1023, - "src": "47:29:1", + "scope": 64, + "sourceUnit": 2233, + "src": "47:29:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "./OwnerManager.sol", - "id": 11, + "id": 35, "nodeType": "ImportDirective", - "scope": 40, - "sourceUnit": 1433, - "src": "77:28:1", + "scope": 64, + "sourceUnit": 2889, + "src": "77:28:2", "symbolAliases": [], "unitAlias": "" }, @@ -775,62 +775,62 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 12, + "id": 36, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1022, - "src": "345:13:1", + "referencedDeclaration": 2232, + "src": "345:13:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, - "id": 13, + "id": 37, "nodeType": "InheritanceSpecifier", - "src": "345:13:1" + "src": "345:13:2" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 14, + "id": 38, "name": "OwnerManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1432, - "src": "360:12:1", + "referencedDeclaration": 2888, + "src": "360:12:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1432", + "typeIdentifier": "t_contract$_OwnerManager_$2888", "typeString": "contract OwnerManager" } }, - "id": 15, + "id": 39, "nodeType": "InheritanceSpecifier", - "src": "360:12:1" + "src": "360:12:2" } ], "contractDependencies": [ - 1022, - 1432, - 1449 + 2232, + 2888, + 3065 ], "contractKind": "contract", "documentation": "@title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n @author Stefan George - ", "fullyImplemented": true, - "id": 39, + "id": 63, "linearizedBaseContracts": [ - 39, - 1432, - 1022, - 1449 + 63, + 2888, + 2232, + 3065 ], "name": "GnosisSafe", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 37, + "id": 61, "nodeType": "Block", - "src": "788:206:1", + "src": "790:206:2", "statements": [ { "expression": { @@ -838,12 +838,12 @@ "arguments": [ { "argumentTypes": null, - "id": 28, + "id": 52, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "810:7:1", + "referencedDeclaration": 42, + "src": "812:7:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" @@ -851,15 +851,15 @@ }, { "argumentTypes": null, - "id": 29, + "id": 53, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 20, - "src": "819:10:1", + "referencedDeclaration": 44, + "src": "821:10:2", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], @@ -870,22 +870,22 @@ "typeString": "address[] memory" }, { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 27, + "id": 51, "name": "setupOwners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1139, - "src": "798:11:1", + "referencedDeclaration": 2597, + "src": "800:11:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", - "typeString": "function (address[] memory,uint8)" + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (address[] memory,uint256)" } }, - "id": 30, + "id": 54, "isConstant": false, "isLValue": false, "isPure": false, @@ -893,15 +893,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "798:32:1", + "src": "800:32:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 31, + "id": 55, "nodeType": "ExpressionStatement", - "src": "798:32:1" + "src": "800:32:2" }, { "expression": { @@ -909,12 +909,12 @@ "arguments": [ { "argumentTypes": null, - "id": 33, + "id": 57, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 22, - "src": "978:2:1", + "referencedDeclaration": 46, + "src": "980:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -922,12 +922,12 @@ }, { "argumentTypes": null, - "id": 34, + "id": 58, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 24, - "src": "982:4:1", + "referencedDeclaration": 48, + "src": "984:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -945,18 +945,18 @@ "typeString": "bytes memory" } ], - "id": 32, + "id": 56, "name": "setupModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 718, - "src": "965:12:1", + "referencedDeclaration": 1928, + "src": "967:12:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,bytes memory)" } }, - "id": 35, + "id": 59, "isConstant": false, "isLValue": false, "isPure": false, @@ -964,20 +964,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "965:22:1", + "src": "967:22:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 36, + "id": 60, "nodeType": "ExpressionStatement", - "src": "965:22:1" + "src": "967:22:2" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.\n @param to Contract address for optional delegate call.\n @param data Data payload for optional delegate call.", - "id": 38, + "id": 62, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -985,16 +985,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 25, + "id": 49, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 18, + "id": 42, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "708:17:1", + "scope": 62, + "src": "708:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1003,19 +1003,19 @@ }, "typeName": { "baseType": { - "id": 16, + "id": 40, "name": "address", "nodeType": "ElementaryTypeName", - "src": "708:7:1", + "src": "708:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 17, + "id": 41, "length": null, "nodeType": "ArrayTypeName", - "src": "708:9:1", + "src": "708:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -1026,25 +1026,25 @@ }, { "constant": false, - "id": 20, + "id": 44, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "727:16:1", + "scope": 62, + "src": "727:18:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 19, - "name": "uint8", + "id": 43, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "727:5:1", + "src": "727:7:2", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, @@ -1052,11 +1052,11 @@ }, { "constant": false, - "id": 22, + "id": 46, "name": "to", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "745:10:1", + "scope": 62, + "src": "747:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1064,10 +1064,10 @@ "typeString": "address" }, "typeName": { - "id": 21, + "id": 45, "name": "address", "nodeType": "ElementaryTypeName", - "src": "745:7:1", + "src": "747:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1078,11 +1078,11 @@ }, { "constant": false, - "id": 24, + "id": 48, "name": "data", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "757:10:1", + "scope": 62, + "src": "759:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1090,10 +1090,10 @@ "typeString": "bytes" }, "typeName": { - "id": 23, + "id": 47, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "757:5:1", + "src": "759:5:2", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1103,27 +1103,27 @@ "visibility": "internal" } ], - "src": "707:61:1" + "src": "707:63:2" }, "payable": false, "returnParameters": { - "id": 26, + "id": 50, "nodeType": "ParameterList", "parameters": [], - "src": "788:0:1" + "src": "790:0:2" }, - "scope": 39, - "src": "693:301:1", + "scope": 63, + "src": "693:303:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 40, - "src": "322:674:1" + "scope": 64, + "src": "322:676:2" } ], - "src": "0:997:1" + "src": "0:999:2" }, "compiler": { "name": "solc", @@ -1131,5 +1131,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-20T07:57:26.986Z" + "updatedAt": "2018-06-29T09:01:22.054Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json index 01594b42a1..4c42670218 100644 --- a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json +++ b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json @@ -1,6 +1,50 @@ { "contractName": "GnosisSafePersonalEdition", "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint256" + } + ], + "name": "addOwnerWithThreshold", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_owners", + "type": "address[]" + }, + { + "name": "_threshold", + "type": "uint256" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "setup", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": true, "inputs": [ @@ -66,30 +110,17 @@ "type": "function" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "txHash", - "type": "bytes32" - }, - { - "name": "messageSignature", - "type": "bytes" - }, - { - "name": "pos", + "name": "_threshold", "type": "uint256" } ], - "name": "recoverKey", - "outputs": [ - { - "name": "", - "type": "address" - } - ], + "name": "changeThreshold", + "outputs": [], "payable": false, - "stateMutability": "pure", + "stateMutability": "nonpayable", "type": "function" }, { @@ -120,28 +151,6 @@ "stateMutability": "view", "type": "function" }, - { - "constant": false, - "inputs": [ - { - "name": "prevOwner", - "type": "address" - }, - { - "name": "owner", - "type": "address" - }, - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "removeOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { "constant": true, "inputs": [], @@ -156,32 +165,6 @@ "stateMutability": "view", "type": "function" }, - { - "constant": false, - "inputs": [ - { - "name": "_owners", - "type": "address[]" - }, - { - "name": "_threshold", - "type": "uint8" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "setup", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { "constant": true, "inputs": [], @@ -238,69 +221,6 @@ "stateMutability": "view", "type": "function" }, - { - "constant": false, - "inputs": [ - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "changeThreshold", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "signatures", - "type": "bytes" - }, - { - "name": "pos", - "type": "uint256" - } - ], - "name": "signatureSplit", - "outputs": [ - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - }, - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "addOwnerWithThreshold", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { "constant": false, "inputs": [ @@ -348,13 +268,35 @@ "outputs": [ { "name": "", - "type": "uint8" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, + { + "constant": false, + "inputs": [ + { + "name": "prevOwner", + "type": "address" + }, + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint256" + } + ], + "name": "removeOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": true, "inputs": [], @@ -532,73 +474,73 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061422d806100206000396000f300608060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806309529334146101355780632f54bf6e14610271578063468721a7146102cc578063610b59251461038457806363f44b59146103c75780637de7edef1461048857806385e332cd146104cb57806386040aa9146105225780638cff635514610592578063a04222e1146105e9578063a0e67e2b146106c2578063a3f4df7e1461072e578063affed0e0146107be578063b2494df3146107e9578063b7f3358d14610855578063b817dcc214610885578063b91a667f14610930578063ba08ea2414610980578063c4ca3a9c14610a84578063e009cfde14610b38578063e318b52b14610b9b578063e75235b814610c1e578063ffa1ad7414610c4f575b005b34801561014157600080fd5b50610257600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610cdf565b604051808215151515815260200191505060405180910390f35b34801561027d57600080fd5b506102b2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110b8565b604051808215151515815260200191505060405180910390f35b3480156102d857600080fd5b5061036a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919050505061113a565b604051808215151515815260200191505060405180910390f35b34801561039057600080fd5b506103c5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611266565b005b3480156103d357600080fd5b506104466004803603810190808035600019169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050611644565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561049457600080fd5b506104c9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ed565b005b3480156104d757600080fd5b506104e06118ae565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052e57600080fd5b50610590600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506118b3565b005b34801561059e57600080fd5b506105a7611d9e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105f557600080fd5b506106c060048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611da3565b005b3480156106ce57600080fd5b506106d7611dbd565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561071a5780820151818401526020810190506106ff565b505050509050019250505060405180910390f35b34801561073a57600080fd5b50610743611f58565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610783578082015181840152602081019050610768565b50505050905090810190601f1680156107b05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107ca57600080fd5b506107d3611f91565b6040518082815260200191505060405180910390f35b3480156107f557600080fd5b506107fe611f97565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610841578082015181840152602081019050610826565b505050509050019250505060405180910390f35b34801561086157600080fd5b50610883600480360381019080803560ff16906020019092919050505061223e565b005b34801561089157600080fd5b506108f6600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050612459565b604051808460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001935050505060405180910390f35b34801561093c57600080fd5b5061097e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050612488565b005b34801561098c57600080fd5b50610a66600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612891565b60405180826000191660001916815260200191505060405180910390f35b348015610a9057600080fd5b50610b22600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050612b78565b6040518082815260200191505060405180910390f35b348015610b4457600080fd5b50610b99600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d27565b005b348015610ba757600080fd5b50610c1c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613140565b005b348015610c2a57600080fd5b50610c3361378d565b604051808260ff1660ff16815260200191505060405180910390f35b348015610c5b57600080fd5b50610c64613797565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ca4578082015181840152602081019050610c89565b50505050905090810190601f168015610cd15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060008060005a9350610cfd8e8e8e8e8e8e8e8e600554612891565b9250610d0983876137d0565b600560008154809291906001019190505550895a10151515610db9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f4e6f7420656e6f7567682067617320746f20657865637574652073616665207481526020017f72616e73616374696f6e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610dc68e8e8e8e8e6139c2565b9450841515610e0f577fabfd711ecdd15ae3a6b3ad16ff2e9d81aec026a39d16725ee164be4fbf857a7c8360405180826000191660001916815260200191505060405180910390a15b60008811156110a757885a85030191508782029050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415610f2d573273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610f28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f74207061792067617320636f73747320776974682065746881526020017f657200000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6110a6565b8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb32836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610fd057600080fd5b505af1158015610fe4573d6000803e3d6000fd5b505050506040513d6020811015610ffa57600080fd5b810190808051906020019092919050505015156110a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f74207061792067617320636f737473207769746820746f6b81526020017f656e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b5b505050509998505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561124f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b61125c858585855a6139c2565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156113835750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156113f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156114e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000806116548686612459565b809350819450829550505050600187848484604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156116d7573d6000803e3d6000fd5b5050506020604051035193505050509392505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561186b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660016003540310151515611a22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611a765750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611aea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600454141515611d9957611d988161223e565b5b505050565b600181565b611dad8484613abf565b611db78282613f88565b50505050565b606080600080600354604051908082528060200260200182016040528015611df45781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611f4f57808383815181101515611ea457fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611e5f565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156120ab57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050612006565b826040519080825280602002602001820160405280156120da5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156122355781818481518110151561218a57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050612145565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612307576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6003548160ff16111515156123aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff161015151561244c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660048190555050565b60008060008360410260208101860151925060408101860151915060ff60418201870151169350509250925092565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156125a55750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612706576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff1660045414151561288d5761288c8161223e565b5b5050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308c8c8c8c8c8c8c8c8c604051602001808d7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189815260200188805190602001908083835b602083101515612a395780518252602082019150602081019050602083039250612a14565b6001836020036101000a038019825116818451168082178552505050505050905001876002811115612a6757fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019c505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515612b3c5780518252602082019150602081019050602083039250612b17565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090509998505050505050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b5a9150612c56878787875a6139c2565b1515612c6157600080fd5b5a8203905080604051602001808281526020019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cec578082015181840152602081019050612cd1565b50505050905090810190601f168015612d195780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612df0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015612e445750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612eb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612fe0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561325d5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156132d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156133be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156134125750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515613486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156135ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600454905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b6004548110156139bb576137f2858583611644565b91506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156138e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5369676e6174757265206e6f742070726f7669646564206279206f776e65720081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161115156139ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f5369676e61747572657320617265206e6f74206f726465726564206279206f7781526020017f6e6572206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b81925080806001019150506137dd565b5050505050565b600080600060028111156139d257fe5b8460028111156139de57fe5b14156139f7576139f0878787866141bf565b9150613ab5565b60016002811115613a0457fe5b846002811115613a1057fe5b1415613a2857613a218786856141d8565b9150613ab4565b613a31856141ef565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600454141515613b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518460ff1611151515613bdf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018460ff1610151515613c81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b8451821015613ef0578482815181101515613ca157fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015613d015750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515613d75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613e62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050613c8a565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084516003819055508360ff166004819055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561409c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff161415156141bb5761414682825a6141d8565b15156141ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a7230582040746efbba11d2b2a6cb2765acef4d46e0c586ec4ba25941eee03135cebf9ca80029", - "deployedBytecode": "0x608060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806309529334146101355780632f54bf6e14610271578063468721a7146102cc578063610b59251461038457806363f44b59146103c75780637de7edef1461048857806385e332cd146104cb57806386040aa9146105225780638cff635514610592578063a04222e1146105e9578063a0e67e2b146106c2578063a3f4df7e1461072e578063affed0e0146107be578063b2494df3146107e9578063b7f3358d14610855578063b817dcc214610885578063b91a667f14610930578063ba08ea2414610980578063c4ca3a9c14610a84578063e009cfde14610b38578063e318b52b14610b9b578063e75235b814610c1e578063ffa1ad7414610c4f575b005b34801561014157600080fd5b50610257600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610cdf565b604051808215151515815260200191505060405180910390f35b34801561027d57600080fd5b506102b2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110b8565b604051808215151515815260200191505060405180910390f35b3480156102d857600080fd5b5061036a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919050505061113a565b604051808215151515815260200191505060405180910390f35b34801561039057600080fd5b506103c5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611266565b005b3480156103d357600080fd5b506104466004803603810190808035600019169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050611644565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561049457600080fd5b506104c9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ed565b005b3480156104d757600080fd5b506104e06118ae565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052e57600080fd5b50610590600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506118b3565b005b34801561059e57600080fd5b506105a7611d9e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105f557600080fd5b506106c060048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611da3565b005b3480156106ce57600080fd5b506106d7611dbd565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561071a5780820151818401526020810190506106ff565b505050509050019250505060405180910390f35b34801561073a57600080fd5b50610743611f58565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610783578082015181840152602081019050610768565b50505050905090810190601f1680156107b05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107ca57600080fd5b506107d3611f91565b6040518082815260200191505060405180910390f35b3480156107f557600080fd5b506107fe611f97565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610841578082015181840152602081019050610826565b505050509050019250505060405180910390f35b34801561086157600080fd5b50610883600480360381019080803560ff16906020019092919050505061223e565b005b34801561089157600080fd5b506108f6600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050612459565b604051808460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001935050505060405180910390f35b34801561093c57600080fd5b5061097e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050612488565b005b34801561098c57600080fd5b50610a66600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612891565b60405180826000191660001916815260200191505060405180910390f35b348015610a9057600080fd5b50610b22600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050612b78565b6040518082815260200191505060405180910390f35b348015610b4457600080fd5b50610b99600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d27565b005b348015610ba757600080fd5b50610c1c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613140565b005b348015610c2a57600080fd5b50610c3361378d565b604051808260ff1660ff16815260200191505060405180910390f35b348015610c5b57600080fd5b50610c64613797565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ca4578082015181840152602081019050610c89565b50505050905090810190601f168015610cd15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060008060005a9350610cfd8e8e8e8e8e8e8e8e600554612891565b9250610d0983876137d0565b600560008154809291906001019190505550895a10151515610db9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f4e6f7420656e6f7567682067617320746f20657865637574652073616665207481526020017f72616e73616374696f6e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610dc68e8e8e8e8e6139c2565b9450841515610e0f577fabfd711ecdd15ae3a6b3ad16ff2e9d81aec026a39d16725ee164be4fbf857a7c8360405180826000191660001916815260200191505060405180910390a15b60008811156110a757885a85030191508782029050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415610f2d573273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610f28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f74207061792067617320636f73747320776974682065746881526020017f657200000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6110a6565b8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb32836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610fd057600080fd5b505af1158015610fe4573d6000803e3d6000fd5b505050506040513d6020811015610ffa57600080fd5b810190808051906020019092919050505015156110a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f74207061792067617320636f737473207769746820746f6b81526020017f656e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b5b505050509998505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561124f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b61125c858585855a6139c2565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156113835750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156113f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156114e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000806116548686612459565b809350819450829550505050600187848484604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156116d7573d6000803e3d6000fd5b5050506020604051035193505050509392505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561186b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660016003540310151515611a22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611a765750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611aea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600454141515611d9957611d988161223e565b5b505050565b600181565b611dad8484613abf565b611db78282613f88565b50505050565b606080600080600354604051908082528060200260200182016040528015611df45781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611f4f57808383815181101515611ea457fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611e5f565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156120ab57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050612006565b826040519080825280602002602001820160405280156120da5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156122355781818481518110151561218a57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050612145565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612307576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6003548160ff16111515156123aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff161015151561244c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660048190555050565b60008060008360410260208101860151925060408101860151915060ff60418201870151169350509250925092565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156125a55750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612706576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff1660045414151561288d5761288c8161223e565b5b5050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308c8c8c8c8c8c8c8c8c604051602001808d7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189815260200188805190602001908083835b602083101515612a395780518252602082019150602081019050602083039250612a14565b6001836020036101000a038019825116818451168082178552505050505050905001876002811115612a6757fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019c505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515612b3c5780518252602082019150602081019050602083039250612b17565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090509998505050505050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b5a9150612c56878787875a6139c2565b1515612c6157600080fd5b5a8203905080604051602001808281526020019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cec578082015181840152602081019050612cd1565b50505050905090810190601f168015612d195780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612df0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015612e445750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612eb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612fe0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561325d5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156132d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156133be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156134125750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515613486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156135ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600454905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b6004548110156139bb576137f2858583611644565b91506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156138e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5369676e6174757265206e6f742070726f7669646564206279206f776e65720081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161115156139ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f5369676e61747572657320617265206e6f74206f726465726564206279206f7781526020017f6e6572206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b81925080806001019150506137dd565b5050505050565b600080600060028111156139d257fe5b8460028111156139de57fe5b14156139f7576139f0878787866141bf565b9150613ab5565b60016002811115613a0457fe5b846002811115613a1057fe5b1415613a2857613a218786856141d8565b9150613ab4565b613a31856141ef565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600454141515613b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518460ff1611151515613bdf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018460ff1610151515613c81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b8451821015613ef0578482815181101515613ca157fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015613d015750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515613d75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613e62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050613c8a565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084516003819055508360ff166004819055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561409c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff161415156141bb5761414682825a6141d8565b15156141ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a7230582040746efbba11d2b2a6cb2765acef4d46e0c586ec4ba25941eee03135cebf9ca80029", - "sourceMap": "484:5887:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;484:5887:2;;;;;;;", - "deployedSourceMap": "484:5887:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1656:1551;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1656:1551:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5610:129:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5610:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2841:429:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2841:429:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:459;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:459:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;477:328:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;477:328:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;3026:781:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3026:781:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:7;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5821:458:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5821:458:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5821:458:7;;;;;;;;;;;;;;;;;572:60:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;572:60:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;572:60:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;733:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;733:20:2;;;;;;;;;;;;;;;;;;;;;;;4794:738:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4794:738:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4794:738:6;;;;;;;;;;;;;;;;;5081:397:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5081:397:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;982:912:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;982:912:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:593:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2091:593:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5869:500:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5869:500:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4134:523;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4134:523:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2031:474:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:474:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4141:751:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4141:751:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5484:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5484:120:7;;;;;;;;;;;;;;;;;;;;;;;;;;;638:40:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;638:40:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;638:40:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1656:1551;1965:12;1993:16;2031:14;2659:16;2724:14;2012:9;1993:28;;2048:93;2067:2;2071:5;2078:4;2084:9;2095;2106:7;2115:8;2125;2135:5;;2048:18;:93::i;:::-;2031:110;;2151:29;2161:6;2169:10;2151:9;:29::i;:::-;2241:5;;:7;;;;;;;;;;;;;2279:9;2266;:22;;2258:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2355:46;2363:2;2367:5;2374:4;2380:9;2391;2355:7;:46::i;:::-;2345:56;;2416:7;2415:8;2411:67;;;2444:23;2460:6;2444:23;;;;;;;;;;;;;;;;;;;;;;;;2411:67;2642:1;2631:8;:12;2627:572;;;2703:7;2690:9;2679:8;:20;2678:32;2659:51;;2752:8;2741;:19;2724:36;;2798:1;2778:22;;:8;:22;;;2774:415;;;2912:9;:14;;:22;2927:6;2912:22;;;;;;;;;;;;;;;;;;;;;;;2904:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2774:415;;;3098:8;3087:29;;;3117:9;3128:6;3087:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3087:48:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3087:48:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3087:48:2;;;;;;;;;;;;;;;;3079:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2774:415;2627:572;1656:1551;;;;;;;;;;;;;;;:::o;5610:129:7:-;5687:4;5731:1;5714:6;:13;5721:5;5714:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;5707:25;;5610:129;;;:::o;2841:429:6:-;2973:12;3081:1;3058:7;:19;3066:10;3058:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;3050:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3217:46;3225:2;3229:5;3236:4;3242:9;3253;3217:7;:46::i;:::-;3207:56;;2841:429;;;;;;:::o;1311:459::-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:1:6;1466:6;1458:20;;;;:59;;;;;550:3;1482:35;;1490:6;1482:35;;;;1458:59;1450:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1631:1;1612:7;:15;1620:6;1612:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1604:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:7;:25;550:3;1694:25;;;;;;;;;;;;;;;;;;;;;;;;;1676:7;:15;1684:6;1676:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1757:6;1729:7;:25;550:3;1729:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1311:459;:::o;477:328:9:-;627:7;651;668:9;687;718:37;733:16;751:3;718:14;:37::i;:::-;706:49;;;;;;;;;;;;772:26;782:6;790:1;793;796;772:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;772:26:9;;;;;;;;765:33;;477:328;;;;;;;;:::o;626:248:4:-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:4;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;499:55:6:-;550:3;499:55;:::o;3026:781:7:-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3250:10:7;3232:28;;3245:1;3232:10;;:14;:28;;3224:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3425:1;3416:5;:10;;;;:38;;;;;337:3;3430:24;;:5;:24;;;;3416:38;3408:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3528:5;3507:26;;:6;:17;3514:9;3507:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3499:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3606:6;:13;3613:5;3606:13;;;;;;;;;;;;;;;;;;;;;;;;;3586:6;:17;3593:9;3586:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3645:1;3629:6;:13;3636:5;3629:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3656:10;;:12;;;;;;;;;;;;;;3749:10;3736:23;;:9;;:23;;3732:68;;;3773:27;3789:10;3773:15;:27::i;:::-;3732:68;3026:781;;;:::o;287:54::-;337:3;287:54;:::o;693:301:1:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5821:458:7:-;5887:9;5912:22;6006:13;6033:20;5951:10;;5937:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5937:25:7;;;;5912:50;;6022:1;6006:17;;6056:6;:23;337:3;6056:23;;;;;;;;;;;;;;;;;;;;;;;;;6033:46;;6089:162;337:3;6095:31;;:12;:31;;;;6089:162;;;6157:12;6142:5;6148;6142:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;6198:6;:20;6205:12;6198:20;;;;;;;;;;;;;;;;;;;;;;;;;6183:35;;6232:8;;;;;;;6089:162;;;6267:5;6260:12;;5821:458;;;;:::o;572:60:2:-;;;;;;;;;;;;;;;;;;;;:::o;733:20::-;;;;:::o;4794:738:6:-;4861:9;4920:19;4953:21;5153:22;4942:1;4920:23;;4977:7;:25;550:3;4977:25;;;;;;;;;;;;;;;;;;;;;;;;;4953:49;;5012:132;550:3;5018:33;;:13;:33;;;;5012:132;;;5083:7;:22;5091:13;5083:22;;;;;;;;;;;;;;;;;;;;;;;;;5067:38;;5119:14;;;;;;;5012:132;;;5192:11;5178:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5178:26:6;;;;5153:51;;5262:1;5248:15;;5289:7;:25;550:3;5289:25;;;;;;;;;;;;;;;;;;;;;;;;;5273:41;;5324:180;550:3;5330:33;;:13;:33;;;;5324:180;;;5400:13;5379:5;5385:11;5379:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5443:7;:22;5451:13;5443:22;;;;;;;;;;;;;;;;;;;;;;;;;5427:38;;5479:14;;;;;;;5324:180;;;5520:5;5513:12;;4794:738;;;;:::o;5081:397:7:-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5263:10:7;;5249;:24;;;;5241:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5397:1;5383:10;:15;;;;5375:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5461:10;5449:22;;:9;:22;;;;5081:397;:::o;982:912:9:-;1082:7;1091:9;1102;1402:3;1396:4;1392:14;1464:4;1450:12;1446:23;1434:10;1430:40;1424:47;1419:52;;1529:4;1515:12;1511:23;1499:10;1495:40;1489:47;1484:52;;1873:4;1864;1850:12;1846:23;1834:10;1830:40;1824:47;1820:58;1815:63;;1358:530;;;;;;:::o;2091:593:7:-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2261:1:7;2252:5;:10;;;;:38;;;;;337:3;2266:24;;:5;:24;;;;2252:38;2244:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2400:1;2383:6;:13;2390:5;2383:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2375:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2459:6;:23;337:3;2459:23;;;;;;;;;;;;;;;;;;;;;;;;;2443:6;:13;2450:5;2443:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2518:5;2492:6;:23;337:3;2492:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2533:10;;:12;;;;;;;;;;;;;2626:10;2613:23;;:9;;:23;;2609:68;;;2650:27;2666:10;2650:15;:27::i;:::-;2609:68;2091:593;;:::o;5869:500:2:-;6180:7;6255:4;6250:10;;6267:1;6262:7;;6271:4;6277:2;6281:5;6288:4;6294:9;6305;6316:7;6325:8;6335;6345:6;6233:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6233:119:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6233:119:2;;;6210:152;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6210:152:2;;;;;;;;;;;;;;;;6203:159;;5869:500;;;;;;;;;;;:::o;4134:523::-;4273:7;4296:16;4486:19;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4315:9:2;4296:28;;4429:46;4437:2;4441:5;4448:4;4454:9;4465;4429:7;:46::i;:::-;4421:55;;;;;;;;4519:9;4508:8;:20;4486:42;;4636:11;4619:29;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4619:29:2;;;4605:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4605:45:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2031:474:6;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:1:6;2234:6;2226:20;;;;:59;;;;;550:3;2250:35;;2258:6;2250:35;;;;2226:59;2218:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2370:6;2339:38;;:7;:19;2347:10;2339:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2331:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2454:7;:15;2462:6;2454:15;;;;;;;;;;;;;;;;;;;;;;;;;2432:7;:19;2440:10;2432:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2497:1;2479:7;:15;2487:6;2479:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;2031:474;;:::o;4141:751:7:-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4324:1:7;4312:8;:13;;;;:44;;;;;337:3;4329:27;;:8;:27;;;;4312:44;4304:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4469:1;4449:6;:16;4456:8;4449:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;4441:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4615:1;4603:8;:13;;;;:44;;;;;337:3;4620:27;;:8;:27;;;;4603:44;4595:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4721:8;4700:29;;:6;:17;4707:9;4700:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4692:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4801:6;:16;4808:8;4801:16;;;;;;;;;;;;;;;;;;;;;;;;;4782:6;:16;4789:8;4782:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4847:8;4827:6;:17;4834:9;4827:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4884:1;4865:6;:16;4872:8;4865:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4141:751;;;:::o;5484:120::-;5553:5;5587:9;;5574:23;;5484:120;:::o;638:40:2:-;;;;;;;;;;;;;;;;;;;;:::o;4663:606::-;4812:17;4852:20;4882:9;4840:1;4812:30;;4952:1;4948:5;;4943:320;4959:9;;4955:1;:13;4943:320;;;5004:33;5015:6;5023:10;5035:1;5004:10;:33::i;:::-;4989:48;;5083:1;5059:6;:20;5066:12;5059:20;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;5051:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5157:9;5142:24;;:12;:24;;;5134:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5240:12;5228:24;;4970:3;;;;;;;4943:320;;;4663:606;;;;;:::o;3276:548:6:-;3407:12;3678:19;3452;3439:32;;;;;;;;:9;:32;;;;;;;;;3435:383;;;3495:35;3507:2;3511:5;3518:4;3524:5;3495:11;:35::i;:::-;3485:45;;3435:383;;;3562:27;3549:40;;;;;;;;:9;:40;;;;;;;;;3545:273;;;3613:36;3633:2;3637:4;3643:5;3613:19;:36::i;:::-;3603:46;;3545:273;;;3700:19;3714:4;3700:13;:19::i;:::-;3678:41;;3758:1;3743:11;:16;;;;3733:26;;3778:29;3795:11;3778:29;;;;;;;;;;;;;;;;;;;;;;3545:273;3435:383;3276:548;;;;;;;;:::o;643:1208:7:-;1247:20;1300:9;1399:13;877:1;864:9;;:14;856:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1020:7;:14;1006:10;:28;;;;998:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1158:1;1144:10;:15;;;;1136:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;337:3;1247:38;;1312:1;1300:13;;1295:433;1319:7;:14;1315:1;:18;1295:433;;;1415:7;1423:1;1415:10;;;;;;;;;;;;;;;;;;1399:26;;1456:1;1447:5;:10;;;;:38;;;;;337:3;1461:24;;:5;:24;;;;1447:38;1439:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1603:1;1586:6;:13;1593:5;1586:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1578:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1678:5;1655:6;:20;1662:12;1655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1712:5;1697:20;;1335:3;;;;;;;1295:433;;;337:3;1737:6;:20;1744:12;1737:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1798:7;:14;1785:10;:27;;;;1834:10;1822:22;;:9;:22;;;;643:1208;;;;;:::o;735:409:6:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;550:3;902:7;:25;550:3;902:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;966:1;960:2;:7;;;;956:181;;;1061:40;1081:2;1085:4;1091:9;1061:19;:40::i;:::-;1053:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;956:181;735:409;;:::o;3830:309::-;3939:12;4121:1;4118;4111:4;4105:11;4098:4;4092;4088:15;4081:5;4077:2;4070:5;4065:58;4054:69;;4040:93;;;;;;:::o;4145:303::-;4247:12;4430:1;4427;4420:4;4414:11;4407:4;4401;4397:15;4393:2;4386:5;4373:59;4362:70;;4348:94;;;;;:::o;4454:261::-;4523:19;4693:4;4687:11;4680:4;4674;4670:15;4667:1;4660:39;4645:54;;4631:78;;;:::o", - "source": "pragma solidity 0.4.24;\nimport \"./interfaces/ERC20Token.sol\";\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\nimport \"./SignatureValidator.sol\";\n\n\n/// @title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - \n/// @author Richard Meissner - \n/// @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment\ncontract GnosisSafePersonalEdition is MasterCopy, GnosisSafe, SignatureValidator {\n\n string public constant NAME = \"Gnosis Safe Personal Edition\";\n string public constant VERSION = \"0.0.1\";\n \n event ExecutionFailed(bytes32 txHash);\n\n uint256 public nonce;\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners and then pays the account that submitted the transaction.\n /// Note: The fees are always transfered, even if the user transaction fails. \n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param safeTxGas Gas that should be used for the Safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction and to pay the payment transfer\n /// @param gasPrice Gas price that should be used for the payment calculation.\n /// @param gasToken Token address (or 0 if ETH) that is used for the payment.\n /// @param signatures Packed signature data ({bytes32 r}{bytes32 s}{uint8 v})\n function execTransactionAndPaySubmitter(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas,\n uint256 dataGas,\n uint256 gasPrice,\n address gasToken,\n bytes signatures\n )\n public\n returns (bool success)\n {\n uint256 startGas = gasleft();\n bytes32 txHash = getTransactionHash(to, value, data, operation, safeTxGas, dataGas, gasPrice, gasToken, nonce);\n checkHash(txHash, signatures);\n // Increase nonce and execute transaction.\n nonce++;\n require(gasleft() >= safeTxGas, \"Not enough gas to execute safe transaction\");\n success = execute(to, value, data, operation, safeTxGas);\n if (!success) {\n emit ExecutionFailed(txHash);\n }\n \n // We transfer the calculated tx costs to the tx.origin to avoid sending it to intermediate contracts that have made calls\n if (gasPrice > 0) {\n uint256 gasCosts = (startGas - gasleft()) + dataGas;\n uint256 amount = gasCosts * gasPrice;\n if (gasToken == address(0)) {\n // solium-disable-next-line security/no-tx-origin,security/no-send\n require(tx.origin.send(amount), \"Could not pay gas costs with ether\");\n } else {\n // solium-disable-next-line security/no-tx-origin\n require(ERC20Token(gasToken).transfer(tx.origin, amount), \"Could not pay gas costs with token\");\n }\n } \n }\n\n /// @dev Allows to estimate a Safe transaction. \n /// This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n /// 1.) The method can only be called from the safe itself\n /// 2.) The response is returned with a revert\n /// When estimating set `from` to the address of the safe.\n /// Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execTransactionAndPaySubmitter`\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).\n function requiredTxGas(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n authorized\n returns (uint256)\n {\n uint256 startGas = gasleft();\n // We don't provide an error message here, as we use it to return the estimate\n require(execute(to, value, data, operation, gasleft()));\n uint256 requiredGas = startGas - gasleft();\n // Convert response to string and return via error message\n revert(string(abi.encodePacked(requiredGas)));\n }\n\n function checkHash(bytes32 txHash, bytes signatures)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = recoverKey(txHash, signatures, i);\n require(owners[currentOwner] != 0, \"Signature not provided by owner\");\n require(currentOwner > lastOwner, \"Signatures are not ordered by owner address\");\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param safeTxGas Fas that should be used for the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Maximum gas price that should be used for this transaction.\n /// @param gasToken Token address (or 0 if ETH) that is used for the payment.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas, \n uint256 dataGas, \n uint256 gasPrice, \n address gasToken,\n uint256 _nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(\n abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, safeTxGas, dataGas, gasPrice, gasToken, _nonce)\n );\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b506140c4806100206000396000f30060806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095293341461011f5780630d582f131461025b5780630ec78d9e146102a85780632f54bf6e1461037e578063468721a7146103d9578063610b592514610491578063694e80c3146104d45780637de7edef1461050157806385e332cd146105445780638cff63551461059b578063a0e67e2b146105f2578063a3f4df7e1461065e578063affed0e0146106ee578063b2494df314610719578063ba08ea2414610785578063c4ca3a9c14610889578063e009cfde1461093d578063e318b52b146109a0578063e75235b814610a23578063f8dc5dd914610a4e578063ffa1ad7414610abb575b005b34801561012b57600080fd5b50610241600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610b4b565b604051808215151515815260200191505060405180910390f35b34801561026757600080fd5b506102a6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e51565b005b3480156102b457600080fd5b5061037c6004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611257565b005b34801561038a57600080fd5b506103bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611271565b604051808215151515815260200191505060405180910390f35b3480156103e557600080fd5b50610477600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506112f3565b604051808215151515815260200191505060405180910390f35b34801561049d57600080fd5b506104d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061141f565b005b3480156104e057600080fd5b506104ff600480360381019080803590602001909291905050506117fd565b005b34801561050d57600080fd5b50610542600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a0f565b005b34801561055057600080fd5b50610559611bd0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105a757600080fd5b506105b0611bd5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105fe57600080fd5b50610607611bda565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561064a57808201518184015260208101905061062f565b505050509050019250505060405180910390f35b34801561066a57600080fd5b50610673611d75565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106b3578082015181840152602081019050610698565b50505050905090810190601f1680156106e05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106fa57600080fd5b50610703611dae565b6040518082815260200191505060405180910390f35b34801561072557600080fd5b5061072e611db4565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610771578082015181840152602081019050610756565b505050509050019250505060405180910390f35b34801561079157600080fd5b5061086b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061205b565b60405180826000191660001916815260200191505060405180910390f35b34801561089557600080fd5b50610927600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050612342565b6040518082815260200191505060405180910390f35b34801561094957600080fd5b5061099e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124f1565b005b3480156109ac57600080fd5b50610a21600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061290a565b005b348015610a2f57600080fd5b50610a38612f57565b6040518082815260200191505060405180910390f35b348015610a5a57600080fd5b50610ab9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612f61565b005b348015610ac757600080fd5b50610ad0613446565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b10578082015181840152602081019050610af5565b50505050905090810190601f168015610b3d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060008060005a9350610b698e8e8e8e8e8e8e8e60055461205b565b9250610b75838761347f565b600560008154809291906001019190505550895a10151515610c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f4e6f7420656e6f7567682067617320746f20657865637574652073616665207481526020017f72616e73616374696f6e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610c328e8e8e8e8e613671565b9450841515610c7b577fabfd711ecdd15ae3a6b3ad16ff2e9d81aec026a39d16725ee164be4fbf857a7c8360405180826000191660001916815260200191505060405180910390a15b6000881115610e4057885a85030191508782029050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415610d99573273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610d94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f74207061792067617320636f73747320776974682065746881526020017f657200000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610e3f565b610da487328361376e565b1515610e3e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f74207061792067617320636f737473207769746820746f6b81526020017f656e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b5b505050509998505050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015610f6e5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515610fe2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156110cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060045414151561125357611252816117fd565b5b5050565b6112618484613887565b61126b8282613d47565b50505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b611415858585855a613671565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561153c5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156115b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561169d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6003548111151515611966576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018110151515611a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060048190555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ad8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515611b8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b600181565b606080600080600354604051908082528060200260200182016040528015611c115781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611d6c57808383815181101515611cc157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611c7c565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611ec857600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611e23565b82604051908082528060200260200182016040528015611ef75781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561205257818184815181101515611fa757fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611f62565b80935050505090565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308c8c8c8c8c8c8c8c8c604051602001808d7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189815260200188805190602001908083835b60208310151561220357805182526020820191506020810190506020830392506121de565b6001836020036101000a03801982511681845116808217855250505050505090500187600281111561223157fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019c505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b60208310151561230657805182526020820191506020810190506020830392506122e1565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090509998505050505050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b5a9150612420878787875a613671565b151561242b57600080fd5b5a8203905080604051602001808281526020019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124b657808201518184015260208101905061249b565b50505050905090810190601f1680156124e35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561260e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156127aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015612a275750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612a9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015612bdc5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612c50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612d78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600454905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561302a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600160035403101515156130cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156131215750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515613195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156132bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060045414151561344157613440816117fd565b5b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b60045481101561366a576134a1858583613f7e565b91506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515613591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5369676e6174757265206e6f742070726f7669646564206279206f776e65720081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1611151561365a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f5369676e61747572657320617265206e6f74206f726465726564206279206f7781526020017f6e6572206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b819250808060010191505061348c565b5050505050565b6000806000600281111561368157fe5b84600281111561368d57fe5b14156136a65761369f87878786614027565b9150613764565b600160028111156136b357fe5b8460028111156136bf57fe5b14156136d7576136d0878685614040565b9150613763565b6136e085614057565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600060608383604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506000808251602084016000896127105a03f16040513d6000823e3d6000811461386a5760208114613872576000945061387c565b82945061387c565b8151158315171594505b505050509392505050565b600080600080600454141515613905576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b845184111515156139a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018410151515613a43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b8451821015613cb2578482815181101515613a6357fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015613ac35750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515613b37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613c24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050613a4c565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508451600381905550836004819055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613e5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515613f7a57613f0582825a614040565b1515613f79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b600080600080613f8e8686614069565b809350819450829550505050600187848484604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015614011573d6000803e3d6000fd5b5050506020604051035193505050509392505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b60008060008360410260208101860151925060408101860151915060ff604182018701511693505092509250925600a165627a7a72305820606a4e209e1e90df13cf1902af9e45183ce83535399924987f1a6033df3a4b9d0029", + "deployedBytecode": "0x60806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095293341461011f5780630d582f131461025b5780630ec78d9e146102a85780632f54bf6e1461037e578063468721a7146103d9578063610b592514610491578063694e80c3146104d45780637de7edef1461050157806385e332cd146105445780638cff63551461059b578063a0e67e2b146105f2578063a3f4df7e1461065e578063affed0e0146106ee578063b2494df314610719578063ba08ea2414610785578063c4ca3a9c14610889578063e009cfde1461093d578063e318b52b146109a0578063e75235b814610a23578063f8dc5dd914610a4e578063ffa1ad7414610abb575b005b34801561012b57600080fd5b50610241600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610b4b565b604051808215151515815260200191505060405180910390f35b34801561026757600080fd5b506102a6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e51565b005b3480156102b457600080fd5b5061037c6004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611257565b005b34801561038a57600080fd5b506103bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611271565b604051808215151515815260200191505060405180910390f35b3480156103e557600080fd5b50610477600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506112f3565b604051808215151515815260200191505060405180910390f35b34801561049d57600080fd5b506104d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061141f565b005b3480156104e057600080fd5b506104ff600480360381019080803590602001909291905050506117fd565b005b34801561050d57600080fd5b50610542600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a0f565b005b34801561055057600080fd5b50610559611bd0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105a757600080fd5b506105b0611bd5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105fe57600080fd5b50610607611bda565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561064a57808201518184015260208101905061062f565b505050509050019250505060405180910390f35b34801561066a57600080fd5b50610673611d75565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106b3578082015181840152602081019050610698565b50505050905090810190601f1680156106e05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106fa57600080fd5b50610703611dae565b6040518082815260200191505060405180910390f35b34801561072557600080fd5b5061072e611db4565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610771578082015181840152602081019050610756565b505050509050019250505060405180910390f35b34801561079157600080fd5b5061086b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061205b565b60405180826000191660001916815260200191505060405180910390f35b34801561089557600080fd5b50610927600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050612342565b6040518082815260200191505060405180910390f35b34801561094957600080fd5b5061099e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124f1565b005b3480156109ac57600080fd5b50610a21600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061290a565b005b348015610a2f57600080fd5b50610a38612f57565b6040518082815260200191505060405180910390f35b348015610a5a57600080fd5b50610ab9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612f61565b005b348015610ac757600080fd5b50610ad0613446565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b10578082015181840152602081019050610af5565b50505050905090810190601f168015610b3d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060008060005a9350610b698e8e8e8e8e8e8e8e60055461205b565b9250610b75838761347f565b600560008154809291906001019190505550895a10151515610c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f4e6f7420656e6f7567682067617320746f20657865637574652073616665207481526020017f72616e73616374696f6e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610c328e8e8e8e8e613671565b9450841515610c7b577fabfd711ecdd15ae3a6b3ad16ff2e9d81aec026a39d16725ee164be4fbf857a7c8360405180826000191660001916815260200191505060405180910390a15b6000881115610e4057885a85030191508782029050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415610d99573273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610d94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f74207061792067617320636f73747320776974682065746881526020017f657200000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610e3f565b610da487328361376e565b1515610e3e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f74207061792067617320636f737473207769746820746f6b81526020017f656e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b5b505050509998505050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015610f6e5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515610fe2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156110cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060045414151561125357611252816117fd565b5b5050565b6112618484613887565b61126b8282613d47565b50505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b611415858585855a613671565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561153c5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156115b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561169d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6003548111151515611966576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018110151515611a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060048190555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ad8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515611b8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b600181565b606080600080600354604051908082528060200260200182016040528015611c115781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611d6c57808383815181101515611cc157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611c7c565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611ec857600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611e23565b82604051908082528060200260200182016040528015611ef75781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561205257818184815181101515611fa757fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611f62565b80935050505090565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308c8c8c8c8c8c8c8c8c604051602001808d7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189815260200188805190602001908083835b60208310151561220357805182526020820191506020810190506020830392506121de565b6001836020036101000a03801982511681845116808217855250505050505090500187600281111561223157fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019c505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b60208310151561230657805182526020820191506020810190506020830392506122e1565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090509998505050505050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b5a9150612420878787875a613671565b151561242b57600080fd5b5a8203905080604051602001808281526020019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124b657808201518184015260208101905061249b565b50505050905090810190601f1680156124e35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561260e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156127aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015612a275750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612a9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015612bdc5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612c50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612d78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600454905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561302a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600160035403101515156130cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156131215750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515613195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156132bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060045414151561344157613440816117fd565b5b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b60045481101561366a576134a1858583613f7e565b91506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515613591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5369676e6174757265206e6f742070726f7669646564206279206f776e65720081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1611151561365a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f5369676e61747572657320617265206e6f74206f726465726564206279206f7781526020017f6e6572206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b819250808060010191505061348c565b5050505050565b6000806000600281111561368157fe5b84600281111561368d57fe5b14156136a65761369f87878786614027565b9150613764565b600160028111156136b357fe5b8460028111156136bf57fe5b14156136d7576136d0878685614040565b9150613763565b6136e085614057565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600060608383604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506000808251602084016000896127105a03f16040513d6000823e3d6000811461386a5760208114613872576000945061387c565b82945061387c565b8151158315171594505b505050509392505050565b600080600080600454141515613905576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b845184111515156139a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018410151515613a43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b8451821015613cb2578482815181101515613a6357fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015613ac35750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515613b37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613c24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050613a4c565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508451600381905550836004819055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613e5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515613f7a57613f0582825a614040565b1515613f79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b600080600080613f8e8686614069565b809350819450829550505050600187848484604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015614011573d6000803e3d6000fd5b5050506020604051035193505050509392505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b60008060008360410260208101860151925060408101860151915060ff604182018701511693505092509250925600a165627a7a72305820606a4e209e1e90df13cf1902af9e45183ce83535399924987f1a6033df3a4b9d0029", + "sourceMap": "483:5903:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;483:5903:3;;;;;;;", + "deployedSourceMap": "483:5903:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1677:1545;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1677:1545:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:595:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2093:595:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;693:303:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:303:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5613:129:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5613:129:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2841:429:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2841:429:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:459;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:459:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;5087:399:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5087:399:11;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:9;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:11;;;;;;;;;;;;;;;;;;;;;;;;;;;5824:458;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5824:458:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5824:458:11;;;;;;;;;;;;;;;;;593:60:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;593:60:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;593:60:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;754:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;754:20:3;;;;;;;;;;;;;;;;;;;;;;;4794:738:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4794:738:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4794:738:9;;;;;;;;;;;;;;;;;5884:500:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5884:500:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4149:523;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4149:523:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2031:474:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:474:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4147:751:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4147:751:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5492:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5492:115:11;;;;;;;;;;;;;;;;;;;;;;;3030:783;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3030:783:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;659:40:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;659:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;659:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1677:1545;1986:12;2014:16;2052:14;2680:16;2745:14;2033:9;2014:28;;2069:93;2088:2;2092:5;2099:4;2105:9;2116;2127:7;2136:8;2146;2156:5;;2069:18;:93::i;:::-;2052:110;;2172:29;2182:6;2190:10;2172:9;:29::i;:::-;2262:5;;:7;;;;;;;;;;;;;2300:9;2287;:22;;2279:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2376:46;2384:2;2388:5;2395:4;2401:9;2412;2376:7;:46::i;:::-;2366:56;;2437:7;2436:8;2432:67;;;2465:23;2481:6;2465:23;;;;;;;;;;;;;;;;;;;;;;;;2432:67;2663:1;2652:8;:12;2648:566;;;2724:7;2711:9;2700:8;:20;2699:32;2680:51;;2773:8;2762;:19;2745:36;;2819:1;2799:22;;:8;:22;;;2795:409;;;2933:9;:14;;:22;2948:6;2933:22;;;;;;;;;;;;;;;;;;;;;;;2925:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2795:409;;;3108:42;3122:8;3132:9;3143:6;3108:13;:42::i;:::-;3100:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2795:409;2648:566;1677:1545;;;;;;;;;;;;;;;:::o;2093:595:11:-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2265:1:11;2256:5;:10;;;;:38;;;;;337:3;2270:24;;:5;:24;;;;2256:38;2248:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2404:1;2387:6;:13;2394:5;2387:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2379:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2463:6;:23;337:3;2463:23;;;;;;;;;;;;;;;;;;;;;;;;;2447:6;:13;2454:5;2447:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2522:5;2496:6;:23;337:3;2496:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2537:10;;:12;;;;;;;;;;;;;2630:10;2617:9;;:23;;2613:68;;;2654:27;2670:10;2654:15;:27::i;:::-;2613:68;2093:595;;:::o;693:303:2:-;800:32;812:7;821:10;800:11;:32::i;:::-;967:22;980:2;984:4;967:12;:22::i;:::-;693:303;;;;:::o;5613:129:11:-;5690:4;5734:1;5717:6;:13;5724:5;5717:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;5710:25;;5613:129;;;:::o;2841:429:9:-;2973:12;3081:1;3058:7;:19;3066:10;3058:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;3050:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3217:46;3225:2;3229:5;3236:4;3242:9;3253;3217:7;:46::i;:::-;3207:56;;2841:429;;;;;;:::o;1311:459::-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:1:9;1466:6;1458:20;;;;:59;;;;;550:3;1482:35;;1490:6;1482:35;;;;1458:59;1450:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1631:1;1612:7;:15;1620:6;1612:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1604:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:7;:25;550:3;1694:25;;;;;;;;;;;;;;;;;;;;;;;;;1676:7;:15;1684:6;1676:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1757:6;1729:7;:25;550:3;1729:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1311:459;:::o;5087:399:11:-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5271:10:11;;5257;:24;;5249:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5405:1;5391:10;:15;;5383:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5469:10;5457:9;:22;;;;5087:399;:::o;626:248:5:-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;499:55:9:-;550:3;499:55;:::o;287:54:11:-;337:3;287:54;:::o;5824:458::-;5890:9;5915:22;6009:13;6036:20;5954:10;;5940:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5940:25:11;;;;5915:50;;6025:1;6009:17;;6059:6;:23;337:3;6059:23;;;;;;;;;;;;;;;;;;;;;;;;;6036:46;;6092:162;337:3;6098:31;;:12;:31;;;;6092:162;;;6160:12;6145:5;6151;6145:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;6201:6;:20;6208:12;6201:20;;;;;;;;;;;;;;;;;;;;;;;;;6186:35;;6235:8;;;;;;;6092:162;;;6270:5;6263:12;;5824:458;;;;:::o;593:60:3:-;;;;;;;;;;;;;;;;;;;;:::o;754:20::-;;;;:::o;4794:738:9:-;4861:9;4920:19;4953:21;5153:22;4942:1;4920:23;;4977:7;:25;550:3;4977:25;;;;;;;;;;;;;;;;;;;;;;;;;4953:49;;5012:132;550:3;5018:33;;:13;:33;;;;5012:132;;;5083:7;:22;5091:13;5083:22;;;;;;;;;;;;;;;;;;;;;;;;;5067:38;;5119:14;;;;;;;5012:132;;;5192:11;5178:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5178:26:9;;;;5153:51;;5262:1;5248:15;;5289:7;:25;550:3;5289:25;;;;;;;;;;;;;;;;;;;;;;;;;5273:41;;5324:180;550:3;5330:33;;:13;:33;;;;5324:180;;;5400:13;5379:5;5385:11;5379:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5443:7;:22;5451:13;5443:22;;;;;;;;;;;;;;;;;;;;;;;;;5427:38;;5479:14;;;;;;;5324:180;;;5520:5;5513:12;;4794:738;;;;:::o;5884:500:3:-;6195:7;6270:4;6265:10;;6282:1;6277:7;;6286:4;6292:2;6296:5;6303:4;6309:9;6320;6331:7;6340:8;6350;6360:6;6248:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6248:119:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6248:119:3;;;6225:152;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6225:152:3;;;;;;;;;;;;;;;;6218:159;;5884:500;;;;;;;;;;;:::o;4149:523::-;4288:7;4311:16;4501:19;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4330:9:3;4311:28;;4444:46;4452:2;4456:5;4463:4;4469:9;4480;4444:7;:46::i;:::-;4436:55;;;;;;;;4534:9;4523:8;:20;4501:42;;4651:11;4634:29;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4634:29:3;;;4620:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4620:45:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2031:474:9;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:1:9;2234:6;2226:20;;;;:59;;;;;550:3;2250:35;;2258:6;2250:35;;;;2226:59;2218:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2370:6;2339:38;;:7;:19;2347:10;2339:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2331:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2454:7;:15;2462:6;2454:15;;;;;;;;;;;;;;;;;;;;;;;;;2432:7;:19;2440:10;2432:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2497:1;2479:7;:15;2487:6;2479:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;2031:474;;:::o;4147:751:11:-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4330:1:11;4318:8;:13;;;;:44;;;;;337:3;4335:27;;:8;:27;;;;4318:44;4310:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4475:1;4455:6;:16;4462:8;4455:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;4447:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4621:1;4609:8;:13;;;;:44;;;;;337:3;4626:27;;:8;:27;;;;4609:44;4601:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4727:8;4706:29;;:6;:17;4713:9;4706:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4698:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4807:6;:16;4814:8;4807:16;;;;;;;;;;;;;;;;;;;;;;;;;4788:6;:16;4795:8;4788:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4853:8;4833:6;:17;4840:9;4833:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4890:1;4871:6;:16;4878:8;4871:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4147:751;;;:::o;5492:115::-;5561:7;5591:9;;5584:16;;5492:115;:::o;3030:783::-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3256:10:11;3251:1;3238:10;;:14;:28;;3230:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3431:1;3422:5;:10;;;;:38;;;;;337:3;3436:24;;:5;:24;;;;3422:38;3414:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:5;3513:26;;:6;:17;3520:9;3513:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3505:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:6;:13;3619:5;3612:13;;;;;;;;;;;;;;;;;;;;;;;;;3592:6;:17;3599:9;3592:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3651:1;3635:6;:13;3642:5;3635:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3662:10;;:12;;;;;;;;;;;;;;3755:10;3742:9;;:23;;3738:68;;;3779:27;3795:10;3779:15;:27::i;:::-;3738:68;3030:783;;;:::o;659:40:3:-;;;;;;;;;;;;;;;;;;;;:::o;4678:606::-;4827:17;4867:20;4897:9;4855:1;4827:30;;4967:1;4963:5;;4958:320;4974:9;;4970:1;:13;4958:320;;;5019:33;5030:6;5038:10;5050:1;5019:10;:33::i;:::-;5004:48;;5098:1;5074:6;:20;5081:12;5074:20;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;5066:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5172:9;5157:24;;:12;:24;;;5149:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5255:12;5243:24;;4985:3;;;;;;;4958:320;;;4678:606;;;;;:::o;3276:548:9:-;3407:12;3678:19;3452;3439:32;;;;;;;;:9;:32;;;;;;;;;3435:383;;;3495:35;3507:2;3511:5;3518:4;3524:5;3495:11;:35::i;:::-;3485:45;;3435:383;;;3562:27;3549:40;;;;;;;;:9;:40;;;;;;;;;3545:273;;;3613:36;3633:2;3637:4;3643:5;3613:19;:36::i;:::-;3603:46;;3545:273;;;3700:19;3714:4;3700:13;:19::i;:::-;3678:41;;3758:1;3743:11;:16;;;;3733:26;;3778:29;3795:11;3778:29;;;;;;;;;;;;;;;;;;;;;;3545:273;3435:383;3276:548;;;;;;;;:::o;430:752:15:-;568:16;600:17;673:8;683:6;620:70;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;620:70:15;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;620:70:15;600:90;;867:1;864;857:4;851:11;844:4;838;834:15;831:1;824:5;816;811:3;807:15;802:67;899:4;893:11;940:14;937:1;932:3;917:38;975:14;1008:1;1003:33;;;;1054:4;1049:76;;;;1163:1;1148:16;;968:198;;1003:33;1027:7;1012:22;;1003:33;;1049:76;1116:3;1110:10;1103:18;1093:7;1086:15;1083:39;1076:47;1061:62;;968:198;;773:403;;;;;;;;:::o;643:1210:11:-;1249:20;1302:9;1401:13;879:1;866:9;;:14;858:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1022:7;:14;1008:10;:28;;1000:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1160:1;1146:10;:15;;1138:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;337:3;1249:38;;1314:1;1302:13;;1297:433;1321:7;:14;1317:1;:18;1297:433;;;1417:7;1425:1;1417:10;;;;;;;;;;;;;;;;;;1401:26;;1458:1;1449:5;:10;;;;:38;;;;;337:3;1463:24;;:5;:24;;;;1449:38;1441:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1605:1;1588:6;:13;1595:5;1588:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1580:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1680:5;1657:6;:20;1664:12;1657:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1714:5;1699:20;;1337:3;;;;;;;1297:433;;;337:3;1739:6;:20;1746:12;1739:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1800:7;:14;1787:10;:27;;;;1836:10;1824:9;:22;;;;643:1210;;;;;:::o;735:409:9:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;550:3;902:7;:25;550:3;902:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;966:1;960:2;:7;;;;956:181;;;1061:40;1081:2;1085:4;1091:9;1061:19;:40::i;:::-;1053:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;956:181;735:409;;:::o;477:330:17:-;629:7;653;670:9;689;720:37;735:16;753:3;720:14;:37::i;:::-;708:49;;;;;;;;;;;;774:26;784:6;792:1;795;798;774:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;774:26:17;;;;;;;;767:33;;477:330;;;;;;;;:::o;3830:309:9:-;3939:12;4121:1;4118;4111:4;4105:11;4098:4;4092;4088:15;4081:5;4077:2;4070:5;4065:58;4054:69;;4040:93;;;;;;:::o;4145:303::-;4247:12;4430:1;4427;4420:4;4414:11;4407:4;4401;4397:15;4393:2;4386:5;4373:59;4362:70;;4348:94;;;;;:::o;4454:261::-;4523:19;4693:4;4687:11;4680:4;4674;4670:15;4667:1;4660:39;4645:54;;4631:78;;;:::o;984:914:17:-;1086:7;1095:9;1106;1406:3;1400:4;1396:14;1468:4;1454:12;1450:23;1438:10;1434:40;1428:47;1423:52;;1533:4;1519:12;1515:23;1503:10;1499:40;1493:47;1488:52;;1877:4;1868;1854:12;1850:23;1838:10;1834:40;1828:47;1824:58;1819:63;;1362:530;;;;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\nimport \"./SignatureValidator.sol\";\nimport \"./SecuredTokenTransfer.sol\";\n\n\n/// @title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - \n/// @author Richard Meissner - \n/// @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment\ncontract GnosisSafePersonalEdition is MasterCopy, GnosisSafe, SignatureValidator, SecuredTokenTransfer {\n\n string public constant NAME = \"Gnosis Safe Personal Edition\";\n string public constant VERSION = \"0.0.1\";\n \n event ExecutionFailed(bytes32 txHash);\n\n uint256 public nonce;\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners and then pays the account that submitted the transaction.\n /// Note: The fees are always transfered, even if the user transaction fails. \n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param safeTxGas Gas that should be used for the Safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction and to pay the payment transfer\n /// @param gasPrice Gas price that should be used for the payment calculation.\n /// @param gasToken Token address (or 0 if ETH) that is used for the payment.\n /// @param signatures Packed signature data ({bytes32 r}{bytes32 s}{uint8 v})\n function execTransactionAndPaySubmitter(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas,\n uint256 dataGas,\n uint256 gasPrice,\n address gasToken,\n bytes signatures\n )\n public\n returns (bool success)\n {\n uint256 startGas = gasleft();\n bytes32 txHash = getTransactionHash(to, value, data, operation, safeTxGas, dataGas, gasPrice, gasToken, nonce);\n checkHash(txHash, signatures);\n // Increase nonce and execute transaction.\n nonce++;\n require(gasleft() >= safeTxGas, \"Not enough gas to execute safe transaction\");\n success = execute(to, value, data, operation, safeTxGas);\n if (!success) {\n emit ExecutionFailed(txHash);\n }\n \n // We transfer the calculated tx costs to the tx.origin to avoid sending it to intermediate contracts that have made calls\n if (gasPrice > 0) {\n uint256 gasCosts = (startGas - gasleft()) + dataGas;\n uint256 amount = gasCosts * gasPrice;\n if (gasToken == address(0)) {\n // solium-disable-next-line security/no-tx-origin,security/no-send\n require(tx.origin.send(amount), \"Could not pay gas costs with ether\");\n } else {\n // solium-disable-next-line security/no-tx-origin\n require(transferToken(gasToken, tx.origin, amount), \"Could not pay gas costs with token\");\n }\n } \n }\n\n /// @dev Allows to estimate a Safe transaction. \n /// This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n /// 1.) The method can only be called from the safe itself\n /// 2.) The response is returned with a revert\n /// When estimating set `from` to the address of the safe.\n /// Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execTransactionAndPaySubmitter`\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).\n function requiredTxGas(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n authorized\n returns (uint256)\n {\n uint256 startGas = gasleft();\n // We don't provide an error message here, as we use it to return the estimate\n require(execute(to, value, data, operation, gasleft()));\n uint256 requiredGas = startGas - gasleft();\n // Convert response to string and return via error message\n revert(string(abi.encodePacked(requiredGas)));\n }\n\n function checkHash(bytes32 txHash, bytes signatures)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = recoverKey(txHash, signatures, i);\n require(owners[currentOwner] != 0, \"Signature not provided by owner\");\n require(currentOwner > lastOwner, \"Signatures are not ordered by owner address\");\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param safeTxGas Fas that should be used for the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Maximum gas price that should be used for this transaction.\n /// @param gasToken Token address (or 0 if ETH) that is used for the payment.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas, \n uint256 dataGas, \n uint256 gasPrice, \n address gasToken,\n uint256 _nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(\n abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, safeTxGas, dataGas, gasPrice, gasToken, _nonce)\n );\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "exportedSymbols": { "GnosisSafePersonalEdition": [ - 345 + 369 ] }, - "id": 346, + "id": 370, "nodeType": "SourceUnit", "nodes": [ { - "id": 41, + "id": 65, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:2" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", - "file": "./interfaces/ERC20Token.sol", - "id": 42, - "nodeType": "ImportDirective", - "scope": 346, - "sourceUnit": 1572, - "src": "24:37:2", - "symbolAliases": [], - "unitAlias": "" + "src": "0:23:3" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 43, + "id": 66, "nodeType": "ImportDirective", - "scope": 346, - "sourceUnit": 40, - "src": "62:26:2", + "scope": 370, + "sourceUnit": 64, + "src": "24:26:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 44, + "id": 67, "nodeType": "ImportDirective", - "scope": 346, - "sourceUnit": 609, - "src": "89:26:2", + "scope": 370, + "sourceUnit": 633, + "src": "51:26:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SignatureValidator.sol", "file": "./SignatureValidator.sol", - "id": 45, + "id": 68, + "nodeType": "ImportDirective", + "scope": 370, + "sourceUnit": 3122, + "src": "78:34:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SecuredTokenTransfer.sol", + "file": "./SecuredTokenTransfer.sol", + "id": 69, "nodeType": "ImportDirective", - "scope": 346, - "sourceUnit": 1506, - "src": "116:34:2", + "scope": 370, + "sourceUnit": 3049, + "src": "113:36:3", "symbolAliases": [], "unitAlias": "" }, @@ -608,88 +550,108 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 46, + "id": 70, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 608, - "src": "522:10:2", + "referencedDeclaration": 632, + "src": "521:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$608", + "typeIdentifier": "t_contract$_MasterCopy_$632", "typeString": "contract MasterCopy" } }, - "id": 47, + "id": 71, "nodeType": "InheritanceSpecifier", - "src": "522:10:2" + "src": "521:10:3" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 48, + "id": 72, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 39, - "src": "534:10:2", + "referencedDeclaration": 63, + "src": "533:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$39", + "typeIdentifier": "t_contract$_GnosisSafe_$63", "typeString": "contract GnosisSafe" } }, - "id": 49, + "id": 73, "nodeType": "InheritanceSpecifier", - "src": "534:10:2" + "src": "533:10:3" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 50, + "id": 74, "name": "SignatureValidator", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1505, - "src": "546:18:2", + "referencedDeclaration": 3121, + "src": "545:18:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_SignatureValidator_$1505", + "typeIdentifier": "t_contract$_SignatureValidator_$3121", "typeString": "contract SignatureValidator" } }, - "id": 51, + "id": 75, "nodeType": "InheritanceSpecifier", - "src": "546:18:2" + "src": "545:18:3" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 76, + "name": "SecuredTokenTransfer", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3048, + "src": "565:20:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SecuredTokenTransfer_$3048", + "typeString": "contract SecuredTokenTransfer" + } + }, + "id": 77, + "nodeType": "InheritanceSpecifier", + "src": "565:20:3" } ], "contractDependencies": [ - 39, - 608, - 1022, - 1432, - 1449, - 1505 + 63, + 632, + 2232, + 2888, + 3048, + 3065, + 3121 ], "contractKind": "contract", "documentation": "@title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - \n @author Richard Meissner - \n @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment", "fullyImplemented": true, - "id": 345, + "id": 369, "linearizedBaseContracts": [ - 345, - 1505, - 39, - 1432, - 1022, - 608, - 1449 + 369, + 3048, + 3121, + 63, + 2888, + 2232, + 632, + 3065 ], "name": "GnosisSafePersonalEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 54, + "id": 80, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "572:60:2", + "scope": 369, + "src": "593:60:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -697,10 +659,10 @@ "typeString": "string" }, "typeName": { - "id": 52, + "id": 78, "name": "string", "nodeType": "ElementaryTypeName", - "src": "572:6:2", + "src": "593:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -709,14 +671,14 @@ "value": { "argumentTypes": null, "hexValue": "476e6f736973205361666520506572736f6e616c2045646974696f6e", - "id": 53, + "id": 79, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "602:30:2", + "src": "623:30:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b657d2895d137bf089ce1df776b732639b1ebc2a3aec3bd837e225e9e0965154", @@ -728,11 +690,11 @@ }, { "constant": true, - "id": 57, + "id": 83, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "638:40:2", + "scope": 369, + "src": "659:40:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -740,10 +702,10 @@ "typeString": "string" }, "typeName": { - "id": 55, + "id": 81, "name": "string", "nodeType": "ElementaryTypeName", - "src": "638:6:2", + "src": "659:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -752,14 +714,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 56, + "id": 82, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "671:7:2", + "src": "692:7:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -772,21 +734,21 @@ { "anonymous": false, "documentation": null, - "id": 61, + "id": 87, "name": "ExecutionFailed", "nodeType": "EventDefinition", "parameters": { - "id": 60, + "id": 86, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 59, + "id": 85, "indexed": false, "name": "txHash", "nodeType": "VariableDeclaration", - "scope": 61, - "src": "711:14:2", + "scope": 87, + "src": "732:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -794,10 +756,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 58, + "id": 84, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "711:7:2", + "src": "732:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -807,17 +769,17 @@ "visibility": "internal" } ], - "src": "710:16:2" + "src": "731:16:3" }, - "src": "689:38:2" + "src": "710:38:3" }, { "constant": false, - "id": 63, + "id": 89, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "733:20:2", + "scope": 369, + "src": "754:20:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -825,10 +787,10 @@ "typeString": "uint256" }, "typeName": { - "id": 62, + "id": 88, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "733:7:2", + "src": "754:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -839,22 +801,22 @@ }, { "body": { - "id": 189, + "id": 213, "nodeType": "Block", - "src": "1983:1224:2", + "src": "2004:1218:3", "statements": [ { "assignments": [ - 87 + 113 ], "declarations": [ { "constant": false, - "id": 87, + "id": 113, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1993:16:2", + "scope": 214, + "src": "2014:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -862,10 +824,10 @@ "typeString": "uint256" }, "typeName": { - "id": 86, + "id": 112, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1993:7:2", + "src": "2014:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -875,24 +837,24 @@ "visibility": "internal" } ], - "id": 90, + "id": 116, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 88, + "id": 114, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1766, - "src": "2012:7:2", + "referencedDeclaration": 4029, + "src": "2033:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 89, + "id": 115, "isConstant": false, "isLValue": false, "isPure": false, @@ -900,27 +862,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2012:9:2", + "src": "2033:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1993:28:2" + "src": "2014:28:3" }, { "assignments": [ - 92 + 118 ], "declarations": [ { "constant": false, - "id": 92, + "id": 118, "name": "txHash", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "2031:14:2", + "scope": 214, + "src": "2052:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -928,10 +890,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 91, + "id": 117, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2031:7:2", + "src": "2052:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -941,18 +903,18 @@ "visibility": "internal" } ], - "id": 104, + "id": 130, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 94, + "id": 120, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 65, - "src": "2067:2:2", + "referencedDeclaration": 91, + "src": "2088:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -960,12 +922,12 @@ }, { "argumentTypes": null, - "id": 95, + "id": 121, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67, - "src": "2071:5:2", + "referencedDeclaration": 93, + "src": "2092:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -973,12 +935,12 @@ }, { "argumentTypes": null, - "id": 96, + "id": 122, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "2078:4:2", + "referencedDeclaration": 95, + "src": "2099:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -986,25 +948,25 @@ }, { "argumentTypes": null, - "id": 97, + "id": 123, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "2084:9:2", + "referencedDeclaration": 97, + "src": "2105:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 98, + "id": 124, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "2095:9:2", + "referencedDeclaration": 99, + "src": "2116:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1012,12 +974,12 @@ }, { "argumentTypes": null, - "id": 99, + "id": 125, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "2106:7:2", + "referencedDeclaration": 101, + "src": "2127:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1025,12 +987,12 @@ }, { "argumentTypes": null, - "id": 100, + "id": 126, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "2115:8:2", + "referencedDeclaration": 103, + "src": "2136:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1038,12 +1000,12 @@ }, { "argumentTypes": null, - "id": 101, + "id": 127, "name": "gasToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 79, - "src": "2125:8:2", + "referencedDeclaration": 105, + "src": "2146:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1051,12 +1013,12 @@ }, { "argumentTypes": null, - "id": 102, + "id": 128, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 63, - "src": "2135:5:2", + "referencedDeclaration": 89, + "src": "2156:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1078,7 +1040,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -1102,18 +1064,18 @@ "typeString": "uint256" } ], - "id": 93, + "id": 119, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 344, - "src": "2048:18:2", + "referencedDeclaration": 368, + "src": "2069:18:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,address,uint256) view returns (bytes32)" } }, - "id": 103, + "id": 129, "isConstant": false, "isLValue": false, "isPure": false, @@ -1121,14 +1083,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2048:93:2", + "src": "2069:93:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2031:110:2" + "src": "2052:110:3" }, { "expression": { @@ -1136,12 +1098,12 @@ "arguments": [ { "argumentTypes": null, - "id": 106, + "id": 132, "name": "txHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 92, - "src": "2161:6:2", + "referencedDeclaration": 118, + "src": "2182:6:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1149,12 +1111,12 @@ }, { "argumentTypes": null, - "id": 107, + "id": 133, "name": "signatures", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 81, - "src": "2169:10:2", + "referencedDeclaration": 107, + "src": "2190:10:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1172,18 +1134,18 @@ "typeString": "bytes memory" } ], - "id": 105, + "id": 131, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, - "src": "2151:9:2", + "referencedDeclaration": 322, + "src": "2172:9:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes32,bytes memory) view" } }, - "id": 108, + "id": 134, "isConstant": false, "isLValue": false, "isPure": false, @@ -1191,20 +1153,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2151:29:2", + "src": "2172:29:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 109, + "id": 135, "nodeType": "ExpressionStatement", - "src": "2151:29:2" + "src": "2172:29:3" }, { "expression": { "argumentTypes": null, - "id": 111, + "id": 137, "isConstant": false, "isLValue": false, "isPure": false, @@ -1212,15 +1174,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2241:7:2", + "src": "2262:7:3", "subExpression": { "argumentTypes": null, - "id": 110, + "id": 136, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 63, - "src": "2241:5:2", + "referencedDeclaration": 89, + "src": "2262:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1231,9 +1193,9 @@ "typeString": "uint256" } }, - "id": 112, + "id": 138, "nodeType": "ExpressionStatement", - "src": "2241:7:2" + "src": "2262:7:3" }, { "expression": { @@ -1245,7 +1207,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 117, + "id": 143, "isConstant": false, "isLValue": false, "isPure": false, @@ -1255,18 +1217,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 114, + "id": 140, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1766, - "src": "2266:7:2", + "referencedDeclaration": 4029, + "src": "2287:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 115, + "id": 141, "isConstant": false, "isLValue": false, "isPure": false, @@ -1274,7 +1236,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2266:9:2", + "src": "2287:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1284,18 +1246,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 116, + "id": 142, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "2279:9:2", + "referencedDeclaration": 99, + "src": "2300:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2266:22:2", + "src": "2287:22:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1304,14 +1266,14 @@ { "argumentTypes": null, "hexValue": "4e6f7420656e6f7567682067617320746f20657865637574652073616665207472616e73616374696f6e", - "id": 118, + "id": 144, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2290:44:2", + "src": "2311:44:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e7ccb05a0f2c66d12451cdfc6bbab488c38ab704d0f6af9ad18763542e9e5f18", @@ -1331,21 +1293,21 @@ "typeString": "literal_string \"Not enough gas to execute safe transaction\"" } ], - "id": 113, + "id": 139, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2258:7:2", + "referencedDeclaration": 4040, + "src": "2279:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 119, + "id": 145, "isConstant": false, "isLValue": false, "isPure": false, @@ -1353,32 +1315,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2258:77:2", + "src": "2279:77:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 120, + "id": 146, "nodeType": "ExpressionStatement", - "src": "2258:77:2" + "src": "2279:77:3" }, { "expression": { "argumentTypes": null, - "id": 129, + "id": 155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 121, + "id": 147, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 84, - "src": "2345:7:2", + "referencedDeclaration": 110, + "src": "2366:7:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1391,12 +1353,12 @@ "arguments": [ { "argumentTypes": null, - "id": 123, + "id": 149, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 65, - "src": "2363:2:2", + "referencedDeclaration": 91, + "src": "2384:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1404,12 +1366,12 @@ }, { "argumentTypes": null, - "id": 124, + "id": 150, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67, - "src": "2367:5:2", + "referencedDeclaration": 93, + "src": "2388:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1417,12 +1379,12 @@ }, { "argumentTypes": null, - "id": 125, + "id": 151, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "2374:4:2", + "referencedDeclaration": 95, + "src": "2395:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1430,25 +1392,25 @@ }, { "argumentTypes": null, - "id": 126, + "id": 152, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "2380:9:2", + "referencedDeclaration": 97, + "src": "2401:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 127, + "id": 153, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "2391:9:2", + "referencedDeclaration": 99, + "src": "2412:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1470,7 +1432,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -1478,18 +1440,18 @@ "typeString": "uint256" } ], - "id": 122, + "id": 148, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "2355:7:2", + "referencedDeclaration": 2121, + "src": "2376:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 128, + "id": 154, "isConstant": false, "isLValue": false, "isPure": false, @@ -1497,26 +1459,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2355:46:2", + "src": "2376:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2345:56:2", + "src": "2366:56:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 130, + "id": 156, "nodeType": "ExpressionStatement", - "src": "2345:56:2" + "src": "2366:56:3" }, { "condition": { "argumentTypes": null, - "id": 132, + "id": 158, "isConstant": false, "isLValue": false, "isPure": false, @@ -1524,15 +1486,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2415:8:2", + "src": "2436:8:3", "subExpression": { "argumentTypes": null, - "id": 131, + "id": 157, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 84, - "src": "2416:7:2", + "referencedDeclaration": 110, + "src": "2437:7:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1544,13 +1506,13 @@ } }, "falseBody": null, - "id": 138, + "id": 164, "nodeType": "IfStatement", - "src": "2411:67:2", + "src": "2432:67:3", "trueBody": { - "id": 137, + "id": 163, "nodeType": "Block", - "src": "2425:53:2", + "src": "2446:53:3", "statements": [ { "eventCall": { @@ -1558,12 +1520,12 @@ "arguments": [ { "argumentTypes": null, - "id": 134, + "id": 160, "name": "txHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 92, - "src": "2460:6:2", + "referencedDeclaration": 118, + "src": "2481:6:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1577,18 +1539,18 @@ "typeString": "bytes32" } ], - "id": 133, + "id": 159, "name": "ExecutionFailed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "2444:15:2", + "referencedDeclaration": 87, + "src": "2465:15:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$", "typeString": "function (bytes32)" } }, - "id": 135, + "id": 161, "isConstant": false, "isLValue": false, "isPure": false, @@ -1596,15 +1558,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2444:23:2", + "src": "2465:23:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 136, + "id": 162, "nodeType": "EmitStatement", - "src": "2439:28:2" + "src": "2460:28:3" } ] } @@ -1616,19 +1578,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 141, + "id": 167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 139, + "id": 165, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "2631:8:2", + "referencedDeclaration": 103, + "src": "2652:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1639,14 +1601,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 140, + "id": 166, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2642:1:2", + "src": "2663:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1654,33 +1616,33 @@ }, "value": "0" }, - "src": "2631:12:2", + "src": "2652:12:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 188, + "id": 212, "nodeType": "IfStatement", - "src": "2627:572:2", + "src": "2648:566:3", "trueBody": { - "id": 187, + "id": 211, "nodeType": "Block", - "src": "2645:554:2", + "src": "2666:548:3", "statements": [ { "assignments": [ - 143 + 169 ], "declarations": [ { "constant": false, - "id": 143, + "id": 169, "name": "gasCosts", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "2659:16:2", + "scope": 214, + "src": "2680:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1688,10 +1650,10 @@ "typeString": "uint256" }, "typeName": { - "id": 142, + "id": 168, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2659:7:2", + "src": "2680:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1701,14 +1663,14 @@ "visibility": "internal" } ], - "id": 151, + "id": 177, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 150, + "id": 176, "isConstant": false, "isLValue": false, "isPure": false, @@ -1722,19 +1684,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 147, + "id": 173, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 144, + "id": 170, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 87, - "src": "2679:8:2", + "referencedDeclaration": 113, + "src": "2700:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1747,18 +1709,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 145, + "id": 171, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1766, - "src": "2690:7:2", + "referencedDeclaration": 4029, + "src": "2711:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 146, + "id": 172, "isConstant": false, "isLValue": false, "isPure": false, @@ -1766,27 +1728,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2690:9:2", + "src": "2711:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2679:20:2", + "src": "2700:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 148, + "id": 174, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "2678:22:2", + "src": "2699:22:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1796,38 +1758,38 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 149, + "id": 175, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "2703:7:2", + "referencedDeclaration": 101, + "src": "2724:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2678:32:2", + "src": "2699:32:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2659:51:2" + "src": "2680:51:3" }, { "assignments": [ - 153 + 179 ], "declarations": [ { "constant": false, - "id": 153, + "id": 179, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "2724:14:2", + "scope": 214, + "src": "2745:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1835,10 +1797,10 @@ "typeString": "uint256" }, "typeName": { - "id": 152, + "id": 178, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2724:7:2", + "src": "2745:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1848,26 +1810,26 @@ "visibility": "internal" } ], - "id": 157, + "id": 183, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 156, + "id": 182, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 154, + "id": 180, "name": "gasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 143, - "src": "2741:8:2", + "referencedDeclaration": 169, + "src": "2762:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1877,25 +1839,25 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 155, + "id": 181, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "2752:8:2", + "referencedDeclaration": 103, + "src": "2773:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2741:19:2", + "src": "2762:19:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2724:36:2" + "src": "2745:36:3" }, { "condition": { @@ -1904,19 +1866,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 162, + "id": 188, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 158, + "id": 184, "name": "gasToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 79, - "src": "2778:8:2", + "referencedDeclaration": 105, + "src": "2799:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1930,14 +1892,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 160, + "id": 186, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2798:1:2", + "src": "2819:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1953,20 +1915,20 @@ "typeString": "int_const 0" } ], - "id": 159, + "id": 185, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2790:7:2", + "src": "2811:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 161, + "id": 187, "isConstant": false, "isLValue": false, "isPure": true, @@ -1974,22 +1936,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2790:10:2", + "src": "2811:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2778:22:2", + "src": "2799:22:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 185, + "id": 209, "nodeType": "Block", - "src": "2994:195:2", + "src": "3015:189:3", "statements": [ { "expression": { @@ -1998,22 +1960,35 @@ { "argumentTypes": null, "arguments": [ + { + "argumentTypes": null, + "id": 201, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "3122:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 178, + "id": 202, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1785, - "src": "3117:2:2", + "referencedDeclaration": 4048, + "src": "3132:2:3", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", "typeString": "tx" } }, - "id": 179, + "id": 203, "isConstant": false, "isLValue": false, "isPure": false, @@ -2021,7 +1996,7 @@ "memberName": "origin", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3117:9:2", + "src": "3132:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2029,12 +2004,12 @@ }, { "argumentTypes": null, - "id": 180, + "id": 204, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "3128:6:2", + "referencedDeclaration": 179, + "src": "3143:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2043,6 +2018,10 @@ ], "expression": { "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, { "typeIdentifier": "t_address", "typeString": "address" @@ -2052,70 +2031,18 @@ "typeString": "uint256" } ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 175, - "name": "gasToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 79, - "src": "3098:8:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 174, - "name": "ERC20Token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1571, - "src": "3087:10:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1571_$", - "typeString": "type(contract ERC20Token)" - } - }, - "id": 176, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3087:20:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Token_$1571", - "typeString": "contract ERC20Token" - } - }, - "id": 177, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 1525, - "src": "3087:29:2", + "id": 200, + "name": "transferToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3047, + "src": "3108:13:3", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) external returns (bool)" + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) returns (bool)" } }, - "id": 181, + "id": 205, "isConstant": false, "isLValue": false, "isPure": false, @@ -2123,7 +2050,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3087:48:2", + "src": "3108:42:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2132,14 +2059,14 @@ { "argumentTypes": null, "hexValue": "436f756c64206e6f74207061792067617320636f737473207769746820746f6b656e", - "id": 182, + "id": 206, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3137:36:2", + "src": "3152:36:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8560a13547eca5648355c8db1a9f8653b6f657d31d476c36bca25e47b45b08f4", @@ -2159,21 +2086,21 @@ "typeString": "literal_string \"Could not pay gas costs with token\"" } ], - "id": 173, + "id": 199, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "3079:7:2", + "referencedDeclaration": 4040, + "src": "3100:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 183, + "id": 207, "isConstant": false, "isLValue": false, "isPure": false, @@ -2181,25 +2108,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3079:95:2", + "src": "3100:89:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 184, + "id": 208, "nodeType": "ExpressionStatement", - "src": "3079:95:2" + "src": "3100:89:3" } ] }, - "id": 186, + "id": 210, "nodeType": "IfStatement", - "src": "2774:415:2", + "src": "2795:409:3", "trueBody": { - "id": 172, + "id": 198, "nodeType": "Block", - "src": "2802:186:2", + "src": "2823:186:3", "statements": [ { "expression": { @@ -2210,12 +2137,12 @@ "arguments": [ { "argumentTypes": null, - "id": 167, + "id": 193, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "2927:6:2", + "referencedDeclaration": 179, + "src": "2948:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2233,18 +2160,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 164, + "id": 190, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1785, - "src": "2912:2:2", + "referencedDeclaration": 4048, + "src": "2933:2:3", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", "typeString": "tx" } }, - "id": 165, + "id": 191, "isConstant": false, "isLValue": false, "isPure": false, @@ -2252,13 +2179,13 @@ "memberName": "origin", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2912:9:2", + "src": "2933:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 166, + "id": 192, "isConstant": false, "isLValue": false, "isPure": false, @@ -2266,13 +2193,13 @@ "memberName": "send", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2912:14:2", + "src": "2933:14:3", "typeDescriptions": { "typeIdentifier": "t_function_send_nonpayable$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) returns (bool)" } }, - "id": 168, + "id": 194, "isConstant": false, "isLValue": false, "isPure": false, @@ -2280,7 +2207,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2912:22:2", + "src": "2933:22:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2289,14 +2216,14 @@ { "argumentTypes": null, "hexValue": "436f756c64206e6f74207061792067617320636f7374732077697468206574686572", - "id": 169, + "id": 195, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2936:36:2", + "src": "2957:36:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e2a11e15f7be1214c1340779ad55027af8aa33aee6cb521776a28a0a44aea377", @@ -2316,21 +2243,21 @@ "typeString": "literal_string \"Could not pay gas costs with ether\"" } ], - "id": 163, + "id": 189, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2904:7:2", + "referencedDeclaration": 4040, + "src": "2925:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 170, + "id": 196, "isConstant": false, "isLValue": false, "isPure": false, @@ -2338,15 +2265,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2904:69:2", + "src": "2925:69:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 171, + "id": 197, "nodeType": "ExpressionStatement", - "src": "2904:69:2" + "src": "2925:69:3" } ] } @@ -2357,7 +2284,7 @@ ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners and then pays the account that submitted the transaction.\n Note: The fees are always transfered, even if the user transaction fails. \n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction and to pay the payment transfer\n @param gasPrice Gas price that should be used for the payment calculation.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param signatures Packed signature data ({bytes32 r}{bytes32 s}{uint8 v})", - "id": 190, + "id": 214, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2365,16 +2292,16 @@ "name": "execTransactionAndPaySubmitter", "nodeType": "FunctionDefinition", "parameters": { - "id": 82, + "id": 108, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 65, + "id": 91, "name": "to", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1705:10:2", + "scope": 214, + "src": "1726:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2382,10 +2309,10 @@ "typeString": "address" }, "typeName": { - "id": 64, + "id": 90, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1705:7:2", + "src": "1726:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2396,11 +2323,11 @@ }, { "constant": false, - "id": 67, + "id": 93, "name": "value", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1726:13:2", + "scope": 214, + "src": "1747:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2408,10 +2335,10 @@ "typeString": "uint256" }, "typeName": { - "id": 66, + "id": 92, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1726:7:2", + "src": "1747:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2422,11 +2349,11 @@ }, { "constant": false, - "id": 69, + "id": 95, "name": "data", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1750:10:2", + "scope": 214, + "src": "1771:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2434,10 +2361,10 @@ "typeString": "bytes" }, "typeName": { - "id": 68, + "id": 94, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1750:5:2", + "src": "1771:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2448,26 +2375,26 @@ }, { "constant": false, - "id": 71, + "id": 97, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1771:24:2", + "scope": 214, + "src": "1792:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 70, + "id": 96, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "1771:14:2", + "referencedDeclaration": 29, + "src": "1792:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2476,11 +2403,11 @@ }, { "constant": false, - "id": 73, + "id": 99, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1806:17:2", + "scope": 214, + "src": "1827:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2488,10 +2415,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72, + "id": 98, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1806:7:2", + "src": "1827:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2502,11 +2429,11 @@ }, { "constant": false, - "id": 75, + "id": 101, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1833:15:2", + "scope": 214, + "src": "1854:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2514,10 +2441,10 @@ "typeString": "uint256" }, "typeName": { - "id": 74, + "id": 100, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1833:7:2", + "src": "1854:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2528,11 +2455,11 @@ }, { "constant": false, - "id": 77, + "id": 103, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1858:16:2", + "scope": 214, + "src": "1879:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2540,10 +2467,10 @@ "typeString": "uint256" }, "typeName": { - "id": 76, + "id": 102, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1858:7:2", + "src": "1879:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2554,11 +2481,11 @@ }, { "constant": false, - "id": 79, + "id": 105, "name": "gasToken", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1884:16:2", + "scope": 214, + "src": "1905:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2566,10 +2493,10 @@ "typeString": "address" }, "typeName": { - "id": 78, + "id": 104, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1884:7:2", + "src": "1905:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2580,11 +2507,11 @@ }, { "constant": false, - "id": 81, + "id": 107, "name": "signatures", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1910:16:2", + "scope": 214, + "src": "1931:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2592,10 +2519,10 @@ "typeString": "bytes" }, "typeName": { - "id": 80, + "id": 106, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1910:5:2", + "src": "1931:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2605,20 +2532,20 @@ "visibility": "internal" } ], - "src": "1695:237:2" + "src": "1716:237:3" }, "payable": false, "returnParameters": { - "id": 85, + "id": 111, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 84, + "id": 110, "name": "success", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1965:12:2", + "scope": 214, + "src": "1986:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2626,10 +2553,10 @@ "typeString": "bool" }, "typeName": { - "id": 83, + "id": 109, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1965:4:2", + "src": "1986:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2639,32 +2566,32 @@ "visibility": "internal" } ], - "src": "1964:14:2" + "src": "1985:14:3" }, - "scope": 345, - "src": "1656:1551:2", + "scope": 369, + "src": "1677:1545:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 237, + "id": 261, "nodeType": "Block", - "src": "4286:371:2", + "src": "4301:371:3", "statements": [ { "assignments": [ - 206 + 230 ], "declarations": [ { "constant": false, - "id": 206, + "id": 230, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 238, - "src": "4296:16:2", + "scope": 262, + "src": "4311:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2672,10 +2599,10 @@ "typeString": "uint256" }, "typeName": { - "id": 205, + "id": 229, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4296:7:2", + "src": "4311:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2685,24 +2612,24 @@ "visibility": "internal" } ], - "id": 209, + "id": 233, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 207, + "id": 231, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1766, - "src": "4315:7:2", + "referencedDeclaration": 4029, + "src": "4330:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 208, + "id": 232, "isConstant": false, "isLValue": false, "isPure": false, @@ -2710,14 +2637,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4315:9:2", + "src": "4330:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4296:28:2" + "src": "4311:28:3" }, { "expression": { @@ -2728,12 +2655,12 @@ "arguments": [ { "argumentTypes": null, - "id": 212, + "id": 236, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 192, - "src": "4437:2:2", + "referencedDeclaration": 216, + "src": "4452:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2741,12 +2668,12 @@ }, { "argumentTypes": null, - "id": 213, + "id": 237, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 194, - "src": "4441:5:2", + "referencedDeclaration": 218, + "src": "4456:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2754,12 +2681,12 @@ }, { "argumentTypes": null, - "id": 214, + "id": 238, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 196, - "src": "4448:4:2", + "referencedDeclaration": 220, + "src": "4463:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2767,14 +2694,14 @@ }, { "argumentTypes": null, - "id": 215, + "id": 239, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 198, - "src": "4454:9:2", + "referencedDeclaration": 222, + "src": "4469:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2783,18 +2710,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 216, + "id": 240, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1766, - "src": "4465:7:2", + "referencedDeclaration": 4029, + "src": "4480:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 217, + "id": 241, "isConstant": false, "isLValue": false, "isPure": false, @@ -2802,7 +2729,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4465:9:2", + "src": "4480:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2824,7 +2751,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -2832,18 +2759,18 @@ "typeString": "uint256" } ], - "id": 211, + "id": 235, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "4429:7:2", + "referencedDeclaration": 2121, + "src": "4444:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 218, + "id": 242, "isConstant": false, "isLValue": false, "isPure": false, @@ -2851,7 +2778,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4429:46:2", + "src": "4444:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2865,21 +2792,21 @@ "typeString": "bool" } ], - "id": 210, + "id": 234, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1776, - "src": "4421:7:2", + "referencedDeclaration": 4039, + "src": "4436:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 219, + "id": 243, "isConstant": false, "isLValue": false, "isPure": false, @@ -2887,28 +2814,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4421:55:2", + "src": "4436:55:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 220, + "id": 244, "nodeType": "ExpressionStatement", - "src": "4421:55:2" + "src": "4436:55:3" }, { "assignments": [ - 222 + 246 ], "declarations": [ { "constant": false, - "id": 222, + "id": 246, "name": "requiredGas", "nodeType": "VariableDeclaration", - "scope": 238, - "src": "4486:19:2", + "scope": 262, + "src": "4501:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2916,10 +2843,10 @@ "typeString": "uint256" }, "typeName": { - "id": 221, + "id": 245, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4486:7:2", + "src": "4501:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2929,26 +2856,26 @@ "visibility": "internal" } ], - "id": 227, + "id": 251, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 226, + "id": 250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 223, + "id": 247, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 206, - "src": "4508:8:2", + "referencedDeclaration": 230, + "src": "4523:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2961,18 +2888,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 224, + "id": 248, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1766, - "src": "4519:7:2", + "referencedDeclaration": 4029, + "src": "4534:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 225, + "id": 249, "isConstant": false, "isLValue": false, "isPure": false, @@ -2980,20 +2907,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4519:9:2", + "src": "4534:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4508:20:2", + "src": "4523:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4486:42:2" + "src": "4501:42:3" }, { "expression": { @@ -3007,12 +2934,12 @@ "arguments": [ { "argumentTypes": null, - "id": 232, + "id": 256, "name": "requiredGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 222, - "src": "4636:11:2", + "referencedDeclaration": 246, + "src": "4651:11:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3028,18 +2955,18 @@ ], "expression": { "argumentTypes": null, - "id": 230, + "id": 254, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1760, - "src": "4619:3:2", + "referencedDeclaration": 4023, + "src": "4634:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 231, + "id": 255, "isConstant": false, "isLValue": false, "isPure": true, @@ -3047,13 +2974,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4619:16:2", + "src": "4634:16:3", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 233, + "id": 257, "isConstant": false, "isLValue": false, "isPure": false, @@ -3061,7 +2988,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4619:29:2", + "src": "4634:29:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3075,20 +3002,20 @@ "typeString": "bytes memory" } ], - "id": 229, + "id": 253, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4612:6:2", + "src": "4627:6:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": "string" }, - "id": 234, + "id": 258, "isConstant": false, "isLValue": false, "isPure": false, @@ -3096,7 +3023,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4612:37:2", + "src": "4627:37:3", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string memory" @@ -3110,21 +3037,21 @@ "typeString": "string memory" } ], - "id": 228, + "id": 252, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 1778, - 1779 + 4041, + 4042 ], - "referencedDeclaration": 1779, - "src": "4605:6:2", + "referencedDeclaration": 4042, + "src": "4620:6:3", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 235, + "id": 259, "isConstant": false, "isLValue": false, "isPure": false, @@ -3132,57 +3059,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4605:45:2", + "src": "4620:45:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 236, + "id": 260, "nodeType": "ExpressionStatement", - "src": "4605:45:2" + "src": "4620:45:3" } ] }, "documentation": "@dev Allows to estimate a Safe transaction. \n This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n 1.) The method can only be called from the safe itself\n 2.) The response is returned with a revert\n When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execTransactionAndPaySubmitter`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).", - "id": 238, + "id": 262, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 201, + "id": 225, "modifierName": { "argumentTypes": null, - "id": 200, + "id": 224, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1448, - "src": "4245:10:2", + "referencedDeclaration": 3064, + "src": "4260:10:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4245:10:2" + "src": "4260:10:3" } ], "name": "requiredTxGas", "nodeType": "FunctionDefinition", "parameters": { - "id": 199, + "id": 223, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 192, + "id": 216, "name": "to", "nodeType": "VariableDeclaration", - "scope": 238, - "src": "4157:10:2", + "scope": 262, + "src": "4172:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3190,10 +3117,10 @@ "typeString": "address" }, "typeName": { - "id": 191, + "id": 215, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4157:7:2", + "src": "4172:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3204,11 +3131,11 @@ }, { "constant": false, - "id": 194, + "id": 218, "name": "value", "nodeType": "VariableDeclaration", - "scope": 238, - "src": "4169:13:2", + "scope": 262, + "src": "4184:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3216,10 +3143,10 @@ "typeString": "uint256" }, "typeName": { - "id": 193, + "id": 217, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4169:7:2", + "src": "4184:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3230,11 +3157,11 @@ }, { "constant": false, - "id": 196, + "id": 220, "name": "data", "nodeType": "VariableDeclaration", - "scope": 238, - "src": "4184:10:2", + "scope": 262, + "src": "4199:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3242,10 +3169,10 @@ "typeString": "bytes" }, "typeName": { - "id": 195, + "id": 219, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4184:5:2", + "src": "4199:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3256,26 +3183,26 @@ }, { "constant": false, - "id": 198, + "id": 222, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 238, - "src": "4196:24:2", + "scope": 262, + "src": "4211:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 197, + "id": 221, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "4196:14:2", + "referencedDeclaration": 29, + "src": "4211:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -3283,20 +3210,20 @@ "visibility": "internal" } ], - "src": "4156:65:2" + "src": "4171:65:3" }, "payable": false, "returnParameters": { - "id": 204, + "id": 228, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 203, + "id": 227, "name": "", "nodeType": "VariableDeclaration", - "scope": 238, - "src": "4273:7:2", + "scope": 262, + "src": "4288:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3304,10 +3231,10 @@ "typeString": "uint256" }, "typeName": { - "id": 202, + "id": 226, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4273:7:2", + "src": "4288:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3317,32 +3244,32 @@ "visibility": "internal" } ], - "src": "4272:9:2" + "src": "4287:9:3" }, - "scope": 345, - "src": "4134:523:2", + "scope": 369, + "src": "4149:523:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 297, + "id": 321, "nodeType": "Block", - "src": "4750:519:2", + "src": "4765:519:3", "statements": [ { "assignments": [ - 246 + 270 ], "declarations": [ { "constant": false, - "id": 246, + "id": 270, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 298, - "src": "4812:17:2", + "scope": 322, + "src": "4827:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3350,10 +3277,10 @@ "typeString": "address" }, "typeName": { - "id": 245, + "id": 269, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4812:7:2", + "src": "4827:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3363,21 +3290,21 @@ "visibility": "internal" } ], - "id": 250, + "id": 274, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 248, + "id": 272, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4840:1:2", + "src": "4855:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3393,20 +3320,20 @@ "typeString": "int_const 0" } ], - "id": 247, + "id": 271, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4832:7:2", + "src": "4847:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 249, + "id": 273, "isConstant": false, "isLValue": false, "isPure": true, @@ -3414,25 +3341,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4832:10:2", + "src": "4847:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4812:30:2" + "src": "4827:30:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 252, + "id": 276, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 298, - "src": "4852:20:2", + "scope": 322, + "src": "4867:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3440,10 +3367,10 @@ "typeString": "address" }, "typeName": { - "id": 251, + "id": 275, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4852:7:2", + "src": "4867:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3453,21 +3380,21 @@ "visibility": "internal" } ], - "id": 253, + "id": 277, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "4852:20:2" + "src": "4867:20:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 255, + "id": 279, "name": "i", "nodeType": "VariableDeclaration", - "scope": 298, - "src": "4882:9:2", + "scope": 322, + "src": "4897:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3475,10 +3402,10 @@ "typeString": "uint256" }, "typeName": { - "id": 254, + "id": 278, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4882:7:2", + "src": "4897:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3488,33 +3415,33 @@ "visibility": "internal" } ], - "id": 256, + "id": 280, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "4882:9:2" + "src": "4897:9:3" }, { "body": { - "id": 295, + "id": 319, "nodeType": "Block", - "src": "4975:288:2", + "src": "4990:288:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 273, + "id": 297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 267, + "id": 291, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "4989:12:2", + "referencedDeclaration": 276, + "src": "5004:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3527,12 +3454,12 @@ "arguments": [ { "argumentTypes": null, - "id": 269, + "id": 293, "name": "txHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 240, - "src": "5015:6:2", + "referencedDeclaration": 264, + "src": "5030:6:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3540,12 +3467,12 @@ }, { "argumentTypes": null, - "id": 270, + "id": 294, "name": "signatures", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 242, - "src": "5023:10:2", + "referencedDeclaration": 266, + "src": "5038:10:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3553,12 +3480,12 @@ }, { "argumentTypes": null, - "id": 271, + "id": 295, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 255, - "src": "5035:1:2", + "referencedDeclaration": 279, + "src": "5050:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3580,18 +3507,18 @@ "typeString": "uint256" } ], - "id": 268, + "id": 292, "name": "recoverKey", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "5004:10:2", + "referencedDeclaration": 3105, + "src": "5019:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$", "typeString": "function (bytes32,bytes memory,uint256) pure returns (address)" } }, - "id": 272, + "id": 296, "isConstant": false, "isLValue": false, "isPure": false, @@ -3599,21 +3526,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5004:33:2", + "src": "5019:33:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4989:48:2", + "src": "5004:48:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 274, + "id": 298, "nodeType": "ExpressionStatement", - "src": "4989:48:2" + "src": "5004:48:3" }, { "expression": { @@ -3625,7 +3552,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 280, + "id": 304, "isConstant": false, "isLValue": false, "isPure": false, @@ -3634,26 +3561,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 276, + "id": 300, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "5059:6:2", + "referencedDeclaration": 2494, + "src": "5074:6:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 278, + "id": 302, "indexExpression": { "argumentTypes": null, - "id": 277, + "id": 301, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "5066:12:2", + "referencedDeclaration": 276, + "src": "5081:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3664,7 +3591,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5059:20:2", + "src": "5074:20:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3675,14 +3602,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 279, + "id": 303, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5083:1:2", + "src": "5098:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3690,7 +3617,7 @@ }, "value": "0" }, - "src": "5059:25:2", + "src": "5074:25:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3699,14 +3626,14 @@ { "argumentTypes": null, "hexValue": "5369676e6174757265206e6f742070726f7669646564206279206f776e6572", - "id": 281, + "id": 305, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5086:33:2", + "src": "5101:33:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", @@ -3726,21 +3653,21 @@ "typeString": "literal_string \"Signature not provided by owner\"" } ], - "id": 275, + "id": 299, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "5051:7:2", + "referencedDeclaration": 4040, + "src": "5066:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 282, + "id": 306, "isConstant": false, "isLValue": false, "isPure": false, @@ -3748,15 +3675,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5051:69:2", + "src": "5066:69:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 283, + "id": 307, "nodeType": "ExpressionStatement", - "src": "5051:69:2" + "src": "5066:69:3" }, { "expression": { @@ -3768,19 +3695,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 287, + "id": 311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 285, + "id": 309, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "5142:12:2", + "referencedDeclaration": 276, + "src": "5157:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3790,18 +3717,18 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 286, + "id": 310, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 246, - "src": "5157:9:2", + "referencedDeclaration": 270, + "src": "5172:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5142:24:2", + "src": "5157:24:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3810,14 +3737,14 @@ { "argumentTypes": null, "hexValue": "5369676e61747572657320617265206e6f74206f726465726564206279206f776e65722061646472657373", - "id": 288, + "id": 312, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5168:45:2", + "src": "5183:45:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", @@ -3837,21 +3764,21 @@ "typeString": "literal_string \"Signatures are not ordered by owner address\"" } ], - "id": 284, + "id": 308, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "5134:7:2", + "referencedDeclaration": 4040, + "src": "5149:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 289, + "id": 313, "isConstant": false, "isLValue": false, "isPure": false, @@ -3859,32 +3786,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5134:80:2", + "src": "5149:80:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 290, + "id": 314, "nodeType": "ExpressionStatement", - "src": "5134:80:2" + "src": "5149:80:3" }, { "expression": { "argumentTypes": null, - "id": 293, + "id": 317, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 291, + "id": 315, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 246, - "src": "5228:9:2", + "referencedDeclaration": 270, + "src": "5243:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3894,26 +3821,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 292, + "id": 316, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "5240:12:2", + "referencedDeclaration": 276, + "src": "5255:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5228:24:2", + "src": "5243:24:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 294, + "id": 318, "nodeType": "ExpressionStatement", - "src": "5228:24:2" + "src": "5243:24:3" } ] }, @@ -3923,19 +3850,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 263, + "id": 287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 261, + "id": 285, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 255, - "src": "4955:1:2", + "referencedDeclaration": 279, + "src": "4970:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3945,40 +3872,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 262, + "id": 286, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "4959:9:2", + "referencedDeclaration": 2498, + "src": "4974:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4955:13:2", + "src": "4970:13:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 296, + "id": 320, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 259, + "id": 283, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 257, + "id": 281, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 255, - "src": "4948:1:2", + "referencedDeclaration": 279, + "src": "4963:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3989,14 +3916,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 258, + "id": 282, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4952:1:2", + "src": "4967:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4004,20 +3931,20 @@ }, "value": "0" }, - "src": "4948:5:2", + "src": "4963:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 260, + "id": 284, "nodeType": "ExpressionStatement", - "src": "4948:5:2" + "src": "4963:5:3" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 265, + "id": 289, "isConstant": false, "isLValue": false, "isPure": false, @@ -4025,15 +3952,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4970:3:2", + "src": "4985:3:3", "subExpression": { "argumentTypes": null, - "id": 264, + "id": 288, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 255, - "src": "4970:1:2", + "referencedDeclaration": 279, + "src": "4985:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4044,17 +3971,17 @@ "typeString": "uint256" } }, - "id": 266, + "id": 290, "nodeType": "ExpressionStatement", - "src": "4970:3:2" + "src": "4985:3:3" }, "nodeType": "ForStatement", - "src": "4943:320:2" + "src": "4958:320:3" } ] }, "documentation": null, - "id": 298, + "id": 322, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4062,16 +3989,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 243, + "id": 267, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 240, + "id": 264, "name": "txHash", "nodeType": "VariableDeclaration", - "scope": 298, - "src": "4682:14:2", + "scope": 322, + "src": "4697:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4079,10 +4006,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 239, + "id": 263, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4682:7:2", + "src": "4697:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4093,11 +4020,11 @@ }, { "constant": false, - "id": 242, + "id": 266, "name": "signatures", "nodeType": "VariableDeclaration", - "scope": 298, - "src": "4698:16:2", + "scope": 322, + "src": "4713:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4105,10 +4032,10 @@ "typeString": "bytes" }, "typeName": { - "id": 241, + "id": 265, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4698:5:2", + "src": "4713:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4118,26 +4045,26 @@ "visibility": "internal" } ], - "src": "4681:34:2" + "src": "4696:34:3" }, "payable": false, "returnParameters": { - "id": 244, + "id": 268, "nodeType": "ParameterList", "parameters": [], - "src": "4750:0:2" + "src": "4765:0:3" }, - "scope": 345, - "src": "4663:606:2", + "scope": 369, + "src": "4678:606:3", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 343, + "id": 367, "nodeType": "Block", - "src": "6193:176:2", + "src": "6208:176:3", "statements": [ { "expression": { @@ -4152,14 +4079,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 325, + "id": 349, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6255:4:2", + "src": "6270:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -4175,20 +4102,20 @@ "typeString": "int_const 25" } ], - "id": 324, + "id": 348, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6250:4:2", + "src": "6265:4:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 326, + "id": 350, "isConstant": false, "isLValue": false, "isPure": true, @@ -4196,7 +4123,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6250:10:2", + "src": "6265:10:3", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -4208,14 +4135,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 328, + "id": 352, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6267:1:2", + "src": "6282:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4231,20 +4158,20 @@ "typeString": "int_const 0" } ], - "id": 327, + "id": 351, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6262:4:2", + "src": "6277:4:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 329, + "id": 353, "isConstant": false, "isLValue": false, "isPure": true, @@ -4252,7 +4179,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6262:7:2", + "src": "6277:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -4260,25 +4187,25 @@ }, { "argumentTypes": null, - "id": 330, + "id": 354, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1804, - "src": "6271:4:2", + "referencedDeclaration": 4071, + "src": "6286:4:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$345", + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$369", "typeString": "contract GnosisSafePersonalEdition" } }, { "argumentTypes": null, - "id": 331, + "id": 355, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 300, - "src": "6277:2:2", + "referencedDeclaration": 324, + "src": "6292:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4286,12 +4213,12 @@ }, { "argumentTypes": null, - "id": 332, + "id": 356, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "6281:5:2", + "referencedDeclaration": 326, + "src": "6296:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4299,12 +4226,12 @@ }, { "argumentTypes": null, - "id": 333, + "id": 357, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 304, - "src": "6288:4:2", + "referencedDeclaration": 328, + "src": "6303:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4312,25 +4239,25 @@ }, { "argumentTypes": null, - "id": 334, + "id": 358, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 306, - "src": "6294:9:2", + "referencedDeclaration": 330, + "src": "6309:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 335, + "id": 359, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 308, - "src": "6305:9:2", + "referencedDeclaration": 332, + "src": "6320:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4338,12 +4265,12 @@ }, { "argumentTypes": null, - "id": 336, + "id": 360, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 310, - "src": "6316:7:2", + "referencedDeclaration": 334, + "src": "6331:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4351,12 +4278,12 @@ }, { "argumentTypes": null, - "id": 337, + "id": 361, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "6325:8:2", + "referencedDeclaration": 336, + "src": "6340:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4364,12 +4291,12 @@ }, { "argumentTypes": null, - "id": 338, + "id": 362, "name": "gasToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 314, - "src": "6335:8:2", + "referencedDeclaration": 338, + "src": "6350:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4377,12 +4304,12 @@ }, { "argumentTypes": null, - "id": 339, + "id": 363, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "6345:6:2", + "referencedDeclaration": 340, + "src": "6360:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4400,7 +4327,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$345", + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$369", "typeString": "contract GnosisSafePersonalEdition" }, { @@ -4416,7 +4343,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -4442,18 +4369,18 @@ ], "expression": { "argumentTypes": null, - "id": 322, + "id": 346, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1760, - "src": "6233:3:2", + "referencedDeclaration": 4023, + "src": "6248:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 323, + "id": 347, "isConstant": false, "isLValue": false, "isPure": true, @@ -4461,13 +4388,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "6233:16:2", + "src": "6248:16:3", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 340, + "id": 364, "isConstant": false, "isLValue": false, "isPure": false, @@ -4475,7 +4402,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6233:119:2", + "src": "6248:119:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4489,18 +4416,18 @@ "typeString": "bytes memory" } ], - "id": 321, + "id": 345, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1767, - "src": "6210:9:2", + "referencedDeclaration": 4030, + "src": "6225:9:3", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 341, + "id": 365, "isConstant": false, "isLValue": false, "isPure": false, @@ -4508,21 +4435,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6210:152:2", + "src": "6225:152:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 320, - "id": 342, + "functionReturnParameters": 344, + "id": 366, "nodeType": "Return", - "src": "6203:159:2" + "src": "6218:159:3" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param _nonce Transaction nonce.\n @return Transaction hash.", - "id": 344, + "id": 368, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4530,16 +4457,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 317, + "id": 341, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 300, + "id": 324, "name": "to", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "5906:10:2", + "scope": 368, + "src": "5921:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4547,10 +4474,10 @@ "typeString": "address" }, "typeName": { - "id": 299, + "id": 323, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5906:7:2", + "src": "5921:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4561,11 +4488,11 @@ }, { "constant": false, - "id": 302, + "id": 326, "name": "value", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "5927:13:2", + "scope": 368, + "src": "5942:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4573,10 +4500,10 @@ "typeString": "uint256" }, "typeName": { - "id": 301, + "id": 325, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5927:7:2", + "src": "5942:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4587,11 +4514,11 @@ }, { "constant": false, - "id": 304, + "id": 328, "name": "data", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "5951:10:2", + "scope": 368, + "src": "5966:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4599,10 +4526,10 @@ "typeString": "bytes" }, "typeName": { - "id": 303, + "id": 327, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "5951:5:2", + "src": "5966:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4613,26 +4540,26 @@ }, { "constant": false, - "id": 306, + "id": 330, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "5972:24:2", + "scope": 368, + "src": "5987:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 305, + "id": 329, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "5972:14:2", + "referencedDeclaration": 29, + "src": "5987:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -4641,11 +4568,11 @@ }, { "constant": false, - "id": 308, + "id": 332, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "6007:17:2", + "scope": 368, + "src": "6022:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4653,10 +4580,10 @@ "typeString": "uint256" }, "typeName": { - "id": 307, + "id": 331, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6007:7:2", + "src": "6022:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4667,11 +4594,11 @@ }, { "constant": false, - "id": 310, + "id": 334, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "6035:15:2", + "scope": 368, + "src": "6050:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4679,10 +4606,10 @@ "typeString": "uint256" }, "typeName": { - "id": 309, + "id": 333, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6035:7:2", + "src": "6050:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4693,11 +4620,11 @@ }, { "constant": false, - "id": 312, + "id": 336, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "6061:16:2", + "scope": 368, + "src": "6076:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4705,10 +4632,10 @@ "typeString": "uint256" }, "typeName": { - "id": 311, + "id": 335, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6061:7:2", + "src": "6076:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4719,11 +4646,11 @@ }, { "constant": false, - "id": 314, + "id": 338, "name": "gasToken", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "6088:16:2", + "scope": 368, + "src": "6103:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4731,10 +4658,10 @@ "typeString": "address" }, "typeName": { - "id": 313, + "id": 337, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6088:7:2", + "src": "6103:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4745,11 +4672,11 @@ }, { "constant": false, - "id": 316, + "id": 340, "name": "_nonce", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "6114:14:2", + "scope": 368, + "src": "6129:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4757,10 +4684,10 @@ "typeString": "uint256" }, "typeName": { - "id": 315, + "id": 339, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6114:7:2", + "src": "6129:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4770,20 +4697,20 @@ "visibility": "internal" } ], - "src": "5896:238:2" + "src": "5911:238:3" }, "payable": false, "returnParameters": { - "id": 320, + "id": 344, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 319, + "id": 343, "name": "", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "6180:7:2", + "scope": 368, + "src": "6195:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4791,10 +4718,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 318, + "id": 342, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "6180:7:2", + "src": "6195:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4804,82 +4731,82 @@ "visibility": "internal" } ], - "src": "6179:9:2" + "src": "6194:9:3" }, - "scope": 345, - "src": "5869:500:2", + "scope": 369, + "src": "5884:500:3", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 346, - "src": "484:5887:2" + "scope": 370, + "src": "483:5903:3" } ], - "src": "0:6372:2" + "src": "0:6387:3" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "exportedSymbols": { "GnosisSafePersonalEdition": [ - 345 + 369 ] }, - "id": 346, + "id": 370, "nodeType": "SourceUnit", "nodes": [ { - "id": 41, + "id": 65, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:2" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", - "file": "./interfaces/ERC20Token.sol", - "id": 42, - "nodeType": "ImportDirective", - "scope": 346, - "sourceUnit": 1572, - "src": "24:37:2", - "symbolAliases": [], - "unitAlias": "" + "src": "0:23:3" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 43, + "id": 66, "nodeType": "ImportDirective", - "scope": 346, - "sourceUnit": 40, - "src": "62:26:2", + "scope": 370, + "sourceUnit": 64, + "src": "24:26:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 44, + "id": 67, "nodeType": "ImportDirective", - "scope": 346, - "sourceUnit": 609, - "src": "89:26:2", + "scope": 370, + "sourceUnit": 633, + "src": "51:26:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SignatureValidator.sol", "file": "./SignatureValidator.sol", - "id": 45, + "id": 68, "nodeType": "ImportDirective", - "scope": 346, - "sourceUnit": 1506, - "src": "116:34:2", + "scope": 370, + "sourceUnit": 3122, + "src": "78:34:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SecuredTokenTransfer.sol", + "file": "./SecuredTokenTransfer.sol", + "id": 69, + "nodeType": "ImportDirective", + "scope": 370, + "sourceUnit": 3049, + "src": "113:36:3", "symbolAliases": [], "unitAlias": "" }, @@ -4889,88 +4816,108 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 46, + "id": 70, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 608, - "src": "522:10:2", + "referencedDeclaration": 632, + "src": "521:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$608", + "typeIdentifier": "t_contract$_MasterCopy_$632", "typeString": "contract MasterCopy" } }, - "id": 47, + "id": 71, "nodeType": "InheritanceSpecifier", - "src": "522:10:2" + "src": "521:10:3" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 48, + "id": 72, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 39, - "src": "534:10:2", + "referencedDeclaration": 63, + "src": "533:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$39", + "typeIdentifier": "t_contract$_GnosisSafe_$63", "typeString": "contract GnosisSafe" } }, - "id": 49, + "id": 73, "nodeType": "InheritanceSpecifier", - "src": "534:10:2" + "src": "533:10:3" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 50, + "id": 74, "name": "SignatureValidator", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1505, - "src": "546:18:2", + "referencedDeclaration": 3121, + "src": "545:18:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_SignatureValidator_$1505", + "typeIdentifier": "t_contract$_SignatureValidator_$3121", "typeString": "contract SignatureValidator" } }, - "id": 51, + "id": 75, "nodeType": "InheritanceSpecifier", - "src": "546:18:2" + "src": "545:18:3" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 76, + "name": "SecuredTokenTransfer", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3048, + "src": "565:20:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SecuredTokenTransfer_$3048", + "typeString": "contract SecuredTokenTransfer" + } + }, + "id": 77, + "nodeType": "InheritanceSpecifier", + "src": "565:20:3" } ], "contractDependencies": [ - 39, - 608, - 1022, - 1432, - 1449, - 1505 + 63, + 632, + 2232, + 2888, + 3048, + 3065, + 3121 ], "contractKind": "contract", "documentation": "@title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - \n @author Richard Meissner - \n @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment", "fullyImplemented": true, - "id": 345, + "id": 369, "linearizedBaseContracts": [ - 345, - 1505, - 39, - 1432, - 1022, - 608, - 1449 + 369, + 3048, + 3121, + 63, + 2888, + 2232, + 632, + 3065 ], "name": "GnosisSafePersonalEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 54, + "id": 80, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "572:60:2", + "scope": 369, + "src": "593:60:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4978,10 +4925,10 @@ "typeString": "string" }, "typeName": { - "id": 52, + "id": 78, "name": "string", "nodeType": "ElementaryTypeName", - "src": "572:6:2", + "src": "593:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4990,14 +4937,14 @@ "value": { "argumentTypes": null, "hexValue": "476e6f736973205361666520506572736f6e616c2045646974696f6e", - "id": 53, + "id": 79, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "602:30:2", + "src": "623:30:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b657d2895d137bf089ce1df776b732639b1ebc2a3aec3bd837e225e9e0965154", @@ -5009,11 +4956,11 @@ }, { "constant": true, - "id": 57, + "id": 83, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "638:40:2", + "scope": 369, + "src": "659:40:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5021,10 +4968,10 @@ "typeString": "string" }, "typeName": { - "id": 55, + "id": 81, "name": "string", "nodeType": "ElementaryTypeName", - "src": "638:6:2", + "src": "659:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -5033,14 +4980,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 56, + "id": 82, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "671:7:2", + "src": "692:7:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -5053,21 +5000,21 @@ { "anonymous": false, "documentation": null, - "id": 61, + "id": 87, "name": "ExecutionFailed", "nodeType": "EventDefinition", "parameters": { - "id": 60, + "id": 86, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 59, + "id": 85, "indexed": false, "name": "txHash", "nodeType": "VariableDeclaration", - "scope": 61, - "src": "711:14:2", + "scope": 87, + "src": "732:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5075,10 +5022,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 58, + "id": 84, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "711:7:2", + "src": "732:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5088,17 +5035,17 @@ "visibility": "internal" } ], - "src": "710:16:2" + "src": "731:16:3" }, - "src": "689:38:2" + "src": "710:38:3" }, { "constant": false, - "id": 63, + "id": 89, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "733:20:2", + "scope": 369, + "src": "754:20:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5106,10 +5053,10 @@ "typeString": "uint256" }, "typeName": { - "id": 62, + "id": 88, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "733:7:2", + "src": "754:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5120,22 +5067,22 @@ }, { "body": { - "id": 189, + "id": 213, "nodeType": "Block", - "src": "1983:1224:2", + "src": "2004:1218:3", "statements": [ { "assignments": [ - 87 + 113 ], "declarations": [ { "constant": false, - "id": 87, + "id": 113, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1993:16:2", + "scope": 214, + "src": "2014:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5143,10 +5090,10 @@ "typeString": "uint256" }, "typeName": { - "id": 86, + "id": 112, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1993:7:2", + "src": "2014:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5156,24 +5103,24 @@ "visibility": "internal" } ], - "id": 90, + "id": 116, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 88, + "id": 114, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1766, - "src": "2012:7:2", + "referencedDeclaration": 4029, + "src": "2033:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 89, + "id": 115, "isConstant": false, "isLValue": false, "isPure": false, @@ -5181,27 +5128,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2012:9:2", + "src": "2033:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1993:28:2" + "src": "2014:28:3" }, { "assignments": [ - 92 + 118 ], "declarations": [ { "constant": false, - "id": 92, + "id": 118, "name": "txHash", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "2031:14:2", + "scope": 214, + "src": "2052:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5209,10 +5156,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 91, + "id": 117, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2031:7:2", + "src": "2052:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5222,18 +5169,18 @@ "visibility": "internal" } ], - "id": 104, + "id": 130, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 94, + "id": 120, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 65, - "src": "2067:2:2", + "referencedDeclaration": 91, + "src": "2088:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5241,12 +5188,12 @@ }, { "argumentTypes": null, - "id": 95, + "id": 121, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67, - "src": "2071:5:2", + "referencedDeclaration": 93, + "src": "2092:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5254,12 +5201,12 @@ }, { "argumentTypes": null, - "id": 96, + "id": 122, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "2078:4:2", + "referencedDeclaration": 95, + "src": "2099:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5267,25 +5214,25 @@ }, { "argumentTypes": null, - "id": 97, + "id": 123, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "2084:9:2", + "referencedDeclaration": 97, + "src": "2105:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 98, + "id": 124, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "2095:9:2", + "referencedDeclaration": 99, + "src": "2116:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5293,12 +5240,12 @@ }, { "argumentTypes": null, - "id": 99, + "id": 125, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "2106:7:2", + "referencedDeclaration": 101, + "src": "2127:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5306,12 +5253,12 @@ }, { "argumentTypes": null, - "id": 100, + "id": 126, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "2115:8:2", + "referencedDeclaration": 103, + "src": "2136:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5319,12 +5266,12 @@ }, { "argumentTypes": null, - "id": 101, + "id": 127, "name": "gasToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 79, - "src": "2125:8:2", + "referencedDeclaration": 105, + "src": "2146:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5332,12 +5279,12 @@ }, { "argumentTypes": null, - "id": 102, + "id": 128, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 63, - "src": "2135:5:2", + "referencedDeclaration": 89, + "src": "2156:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5359,7 +5306,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -5383,18 +5330,18 @@ "typeString": "uint256" } ], - "id": 93, + "id": 119, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 344, - "src": "2048:18:2", + "referencedDeclaration": 368, + "src": "2069:18:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,address,uint256) view returns (bytes32)" } }, - "id": 103, + "id": 129, "isConstant": false, "isLValue": false, "isPure": false, @@ -5402,14 +5349,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2048:93:2", + "src": "2069:93:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2031:110:2" + "src": "2052:110:3" }, { "expression": { @@ -5417,12 +5364,12 @@ "arguments": [ { "argumentTypes": null, - "id": 106, + "id": 132, "name": "txHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 92, - "src": "2161:6:2", + "referencedDeclaration": 118, + "src": "2182:6:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5430,12 +5377,12 @@ }, { "argumentTypes": null, - "id": 107, + "id": 133, "name": "signatures", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 81, - "src": "2169:10:2", + "referencedDeclaration": 107, + "src": "2190:10:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5453,18 +5400,18 @@ "typeString": "bytes memory" } ], - "id": 105, + "id": 131, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, - "src": "2151:9:2", + "referencedDeclaration": 322, + "src": "2172:9:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes32,bytes memory) view" } }, - "id": 108, + "id": 134, "isConstant": false, "isLValue": false, "isPure": false, @@ -5472,20 +5419,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2151:29:2", + "src": "2172:29:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 109, + "id": 135, "nodeType": "ExpressionStatement", - "src": "2151:29:2" + "src": "2172:29:3" }, { "expression": { "argumentTypes": null, - "id": 111, + "id": 137, "isConstant": false, "isLValue": false, "isPure": false, @@ -5493,15 +5440,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2241:7:2", + "src": "2262:7:3", "subExpression": { "argumentTypes": null, - "id": 110, + "id": 136, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 63, - "src": "2241:5:2", + "referencedDeclaration": 89, + "src": "2262:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5512,9 +5459,9 @@ "typeString": "uint256" } }, - "id": 112, + "id": 138, "nodeType": "ExpressionStatement", - "src": "2241:7:2" + "src": "2262:7:3" }, { "expression": { @@ -5526,7 +5473,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 117, + "id": 143, "isConstant": false, "isLValue": false, "isPure": false, @@ -5536,18 +5483,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 114, + "id": 140, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1766, - "src": "2266:7:2", + "referencedDeclaration": 4029, + "src": "2287:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 115, + "id": 141, "isConstant": false, "isLValue": false, "isPure": false, @@ -5555,7 +5502,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2266:9:2", + "src": "2287:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5565,18 +5512,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 116, + "id": 142, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "2279:9:2", + "referencedDeclaration": 99, + "src": "2300:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2266:22:2", + "src": "2287:22:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5585,14 +5532,14 @@ { "argumentTypes": null, "hexValue": "4e6f7420656e6f7567682067617320746f20657865637574652073616665207472616e73616374696f6e", - "id": 118, + "id": 144, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2290:44:2", + "src": "2311:44:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e7ccb05a0f2c66d12451cdfc6bbab488c38ab704d0f6af9ad18763542e9e5f18", @@ -5612,21 +5559,21 @@ "typeString": "literal_string \"Not enough gas to execute safe transaction\"" } ], - "id": 113, + "id": 139, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2258:7:2", + "referencedDeclaration": 4040, + "src": "2279:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 119, + "id": 145, "isConstant": false, "isLValue": false, "isPure": false, @@ -5634,32 +5581,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2258:77:2", + "src": "2279:77:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 120, + "id": 146, "nodeType": "ExpressionStatement", - "src": "2258:77:2" + "src": "2279:77:3" }, { "expression": { "argumentTypes": null, - "id": 129, + "id": 155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 121, + "id": 147, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 84, - "src": "2345:7:2", + "referencedDeclaration": 110, + "src": "2366:7:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5672,12 +5619,12 @@ "arguments": [ { "argumentTypes": null, - "id": 123, + "id": 149, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 65, - "src": "2363:2:2", + "referencedDeclaration": 91, + "src": "2384:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5685,12 +5632,12 @@ }, { "argumentTypes": null, - "id": 124, + "id": 150, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67, - "src": "2367:5:2", + "referencedDeclaration": 93, + "src": "2388:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5698,12 +5645,12 @@ }, { "argumentTypes": null, - "id": 125, + "id": 151, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "2374:4:2", + "referencedDeclaration": 95, + "src": "2395:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5711,25 +5658,25 @@ }, { "argumentTypes": null, - "id": 126, + "id": 152, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "2380:9:2", + "referencedDeclaration": 97, + "src": "2401:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 127, + "id": 153, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "2391:9:2", + "referencedDeclaration": 99, + "src": "2412:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5751,7 +5698,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -5759,18 +5706,18 @@ "typeString": "uint256" } ], - "id": 122, + "id": 148, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "2355:7:2", + "referencedDeclaration": 2121, + "src": "2376:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 128, + "id": 154, "isConstant": false, "isLValue": false, "isPure": false, @@ -5778,26 +5725,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2355:46:2", + "src": "2376:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2345:56:2", + "src": "2366:56:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 130, + "id": 156, "nodeType": "ExpressionStatement", - "src": "2345:56:2" + "src": "2366:56:3" }, { "condition": { "argumentTypes": null, - "id": 132, + "id": 158, "isConstant": false, "isLValue": false, "isPure": false, @@ -5805,15 +5752,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2415:8:2", + "src": "2436:8:3", "subExpression": { "argumentTypes": null, - "id": 131, + "id": 157, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 84, - "src": "2416:7:2", + "referencedDeclaration": 110, + "src": "2437:7:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5825,13 +5772,13 @@ } }, "falseBody": null, - "id": 138, + "id": 164, "nodeType": "IfStatement", - "src": "2411:67:2", + "src": "2432:67:3", "trueBody": { - "id": 137, + "id": 163, "nodeType": "Block", - "src": "2425:53:2", + "src": "2446:53:3", "statements": [ { "eventCall": { @@ -5839,12 +5786,12 @@ "arguments": [ { "argumentTypes": null, - "id": 134, + "id": 160, "name": "txHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 92, - "src": "2460:6:2", + "referencedDeclaration": 118, + "src": "2481:6:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5858,18 +5805,18 @@ "typeString": "bytes32" } ], - "id": 133, + "id": 159, "name": "ExecutionFailed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "2444:15:2", + "referencedDeclaration": 87, + "src": "2465:15:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$", "typeString": "function (bytes32)" } }, - "id": 135, + "id": 161, "isConstant": false, "isLValue": false, "isPure": false, @@ -5877,15 +5824,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2444:23:2", + "src": "2465:23:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 136, + "id": 162, "nodeType": "EmitStatement", - "src": "2439:28:2" + "src": "2460:28:3" } ] } @@ -5897,19 +5844,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 141, + "id": 167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 139, + "id": 165, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "2631:8:2", + "referencedDeclaration": 103, + "src": "2652:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5920,14 +5867,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 140, + "id": 166, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2642:1:2", + "src": "2663:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5935,33 +5882,33 @@ }, "value": "0" }, - "src": "2631:12:2", + "src": "2652:12:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 188, + "id": 212, "nodeType": "IfStatement", - "src": "2627:572:2", + "src": "2648:566:3", "trueBody": { - "id": 187, + "id": 211, "nodeType": "Block", - "src": "2645:554:2", + "src": "2666:548:3", "statements": [ { "assignments": [ - 143 + 169 ], "declarations": [ { "constant": false, - "id": 143, + "id": 169, "name": "gasCosts", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "2659:16:2", + "scope": 214, + "src": "2680:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5969,10 +5916,10 @@ "typeString": "uint256" }, "typeName": { - "id": 142, + "id": 168, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2659:7:2", + "src": "2680:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5982,14 +5929,14 @@ "visibility": "internal" } ], - "id": 151, + "id": 177, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 150, + "id": 176, "isConstant": false, "isLValue": false, "isPure": false, @@ -6003,19 +5950,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 147, + "id": 173, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 144, + "id": 170, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 87, - "src": "2679:8:2", + "referencedDeclaration": 113, + "src": "2700:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6028,18 +5975,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 145, + "id": 171, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1766, - "src": "2690:7:2", + "referencedDeclaration": 4029, + "src": "2711:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 146, + "id": 172, "isConstant": false, "isLValue": false, "isPure": false, @@ -6047,27 +5994,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2690:9:2", + "src": "2711:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2679:20:2", + "src": "2700:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 148, + "id": 174, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "2678:22:2", + "src": "2699:22:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6077,38 +6024,38 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 149, + "id": 175, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "2703:7:2", + "referencedDeclaration": 101, + "src": "2724:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2678:32:2", + "src": "2699:32:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2659:51:2" + "src": "2680:51:3" }, { "assignments": [ - 153 + 179 ], "declarations": [ { "constant": false, - "id": 153, + "id": 179, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "2724:14:2", + "scope": 214, + "src": "2745:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6116,10 +6063,10 @@ "typeString": "uint256" }, "typeName": { - "id": 152, + "id": 178, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2724:7:2", + "src": "2745:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6129,26 +6076,26 @@ "visibility": "internal" } ], - "id": 157, + "id": 183, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 156, + "id": 182, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 154, + "id": 180, "name": "gasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 143, - "src": "2741:8:2", + "referencedDeclaration": 169, + "src": "2762:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6158,25 +6105,25 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 155, + "id": 181, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "2752:8:2", + "referencedDeclaration": 103, + "src": "2773:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2741:19:2", + "src": "2762:19:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2724:36:2" + "src": "2745:36:3" }, { "condition": { @@ -6185,19 +6132,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 162, + "id": 188, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 158, + "id": 184, "name": "gasToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 79, - "src": "2778:8:2", + "referencedDeclaration": 105, + "src": "2799:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6211,14 +6158,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 160, + "id": 186, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2798:1:2", + "src": "2819:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6234,20 +6181,20 @@ "typeString": "int_const 0" } ], - "id": 159, + "id": 185, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2790:7:2", + "src": "2811:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 161, + "id": 187, "isConstant": false, "isLValue": false, "isPure": true, @@ -6255,22 +6202,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2790:10:2", + "src": "2811:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2778:22:2", + "src": "2799:22:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 185, + "id": 209, "nodeType": "Block", - "src": "2994:195:2", + "src": "3015:189:3", "statements": [ { "expression": { @@ -6279,22 +6226,35 @@ { "argumentTypes": null, "arguments": [ + { + "argumentTypes": null, + "id": 201, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "3122:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 178, + "id": 202, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1785, - "src": "3117:2:2", + "referencedDeclaration": 4048, + "src": "3132:2:3", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", "typeString": "tx" } }, - "id": 179, + "id": 203, "isConstant": false, "isLValue": false, "isPure": false, @@ -6302,7 +6262,7 @@ "memberName": "origin", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3117:9:2", + "src": "3132:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6310,12 +6270,12 @@ }, { "argumentTypes": null, - "id": 180, + "id": 204, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "3128:6:2", + "referencedDeclaration": 179, + "src": "3143:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6324,6 +6284,10 @@ ], "expression": { "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, { "typeIdentifier": "t_address", "typeString": "address" @@ -6333,70 +6297,18 @@ "typeString": "uint256" } ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 175, - "name": "gasToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 79, - "src": "3098:8:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 174, - "name": "ERC20Token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1571, - "src": "3087:10:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1571_$", - "typeString": "type(contract ERC20Token)" - } - }, - "id": 176, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3087:20:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Token_$1571", - "typeString": "contract ERC20Token" - } - }, - "id": 177, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 1525, - "src": "3087:29:2", + "id": 200, + "name": "transferToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3047, + "src": "3108:13:3", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) external returns (bool)" + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) returns (bool)" } }, - "id": 181, + "id": 205, "isConstant": false, "isLValue": false, "isPure": false, @@ -6404,7 +6316,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3087:48:2", + "src": "3108:42:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6413,14 +6325,14 @@ { "argumentTypes": null, "hexValue": "436f756c64206e6f74207061792067617320636f737473207769746820746f6b656e", - "id": 182, + "id": 206, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3137:36:2", + "src": "3152:36:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8560a13547eca5648355c8db1a9f8653b6f657d31d476c36bca25e47b45b08f4", @@ -6440,21 +6352,21 @@ "typeString": "literal_string \"Could not pay gas costs with token\"" } ], - "id": 173, + "id": 199, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "3079:7:2", + "referencedDeclaration": 4040, + "src": "3100:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 183, + "id": 207, "isConstant": false, "isLValue": false, "isPure": false, @@ -6462,25 +6374,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3079:95:2", + "src": "3100:89:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 184, + "id": 208, "nodeType": "ExpressionStatement", - "src": "3079:95:2" + "src": "3100:89:3" } ] }, - "id": 186, + "id": 210, "nodeType": "IfStatement", - "src": "2774:415:2", + "src": "2795:409:3", "trueBody": { - "id": 172, + "id": 198, "nodeType": "Block", - "src": "2802:186:2", + "src": "2823:186:3", "statements": [ { "expression": { @@ -6491,12 +6403,12 @@ "arguments": [ { "argumentTypes": null, - "id": 167, + "id": 193, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "2927:6:2", + "referencedDeclaration": 179, + "src": "2948:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6514,18 +6426,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 164, + "id": 190, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1785, - "src": "2912:2:2", + "referencedDeclaration": 4048, + "src": "2933:2:3", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", "typeString": "tx" } }, - "id": 165, + "id": 191, "isConstant": false, "isLValue": false, "isPure": false, @@ -6533,13 +6445,13 @@ "memberName": "origin", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2912:9:2", + "src": "2933:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 166, + "id": 192, "isConstant": false, "isLValue": false, "isPure": false, @@ -6547,13 +6459,13 @@ "memberName": "send", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2912:14:2", + "src": "2933:14:3", "typeDescriptions": { "typeIdentifier": "t_function_send_nonpayable$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) returns (bool)" } }, - "id": 168, + "id": 194, "isConstant": false, "isLValue": false, "isPure": false, @@ -6561,7 +6473,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2912:22:2", + "src": "2933:22:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6570,14 +6482,14 @@ { "argumentTypes": null, "hexValue": "436f756c64206e6f74207061792067617320636f7374732077697468206574686572", - "id": 169, + "id": 195, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2936:36:2", + "src": "2957:36:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e2a11e15f7be1214c1340779ad55027af8aa33aee6cb521776a28a0a44aea377", @@ -6597,21 +6509,21 @@ "typeString": "literal_string \"Could not pay gas costs with ether\"" } ], - "id": 163, + "id": 189, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2904:7:2", + "referencedDeclaration": 4040, + "src": "2925:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 170, + "id": 196, "isConstant": false, "isLValue": false, "isPure": false, @@ -6619,15 +6531,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2904:69:2", + "src": "2925:69:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 171, + "id": 197, "nodeType": "ExpressionStatement", - "src": "2904:69:2" + "src": "2925:69:3" } ] } @@ -6638,7 +6550,7 @@ ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners and then pays the account that submitted the transaction.\n Note: The fees are always transfered, even if the user transaction fails. \n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction and to pay the payment transfer\n @param gasPrice Gas price that should be used for the payment calculation.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param signatures Packed signature data ({bytes32 r}{bytes32 s}{uint8 v})", - "id": 190, + "id": 214, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6646,16 +6558,16 @@ "name": "execTransactionAndPaySubmitter", "nodeType": "FunctionDefinition", "parameters": { - "id": 82, + "id": 108, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 65, + "id": 91, "name": "to", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1705:10:2", + "scope": 214, + "src": "1726:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6663,10 +6575,10 @@ "typeString": "address" }, "typeName": { - "id": 64, + "id": 90, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1705:7:2", + "src": "1726:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6677,11 +6589,11 @@ }, { "constant": false, - "id": 67, + "id": 93, "name": "value", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1726:13:2", + "scope": 214, + "src": "1747:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6689,10 +6601,10 @@ "typeString": "uint256" }, "typeName": { - "id": 66, + "id": 92, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1726:7:2", + "src": "1747:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6703,11 +6615,11 @@ }, { "constant": false, - "id": 69, + "id": 95, "name": "data", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1750:10:2", + "scope": 214, + "src": "1771:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6715,10 +6627,10 @@ "typeString": "bytes" }, "typeName": { - "id": 68, + "id": 94, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1750:5:2", + "src": "1771:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6729,26 +6641,26 @@ }, { "constant": false, - "id": 71, + "id": 97, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1771:24:2", + "scope": 214, + "src": "1792:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 70, + "id": 96, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "1771:14:2", + "referencedDeclaration": 29, + "src": "1792:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -6757,11 +6669,11 @@ }, { "constant": false, - "id": 73, + "id": 99, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1806:17:2", + "scope": 214, + "src": "1827:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6769,10 +6681,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72, + "id": 98, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1806:7:2", + "src": "1827:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6783,11 +6695,11 @@ }, { "constant": false, - "id": 75, + "id": 101, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1833:15:2", + "scope": 214, + "src": "1854:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6795,10 +6707,10 @@ "typeString": "uint256" }, "typeName": { - "id": 74, + "id": 100, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1833:7:2", + "src": "1854:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6809,11 +6721,11 @@ }, { "constant": false, - "id": 77, + "id": 103, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1858:16:2", + "scope": 214, + "src": "1879:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6821,10 +6733,10 @@ "typeString": "uint256" }, "typeName": { - "id": 76, + "id": 102, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1858:7:2", + "src": "1879:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6835,11 +6747,11 @@ }, { "constant": false, - "id": 79, + "id": 105, "name": "gasToken", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1884:16:2", + "scope": 214, + "src": "1905:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6847,10 +6759,10 @@ "typeString": "address" }, "typeName": { - "id": 78, + "id": 104, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1884:7:2", + "src": "1905:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6861,11 +6773,11 @@ }, { "constant": false, - "id": 81, + "id": 107, "name": "signatures", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1910:16:2", + "scope": 214, + "src": "1931:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6873,10 +6785,10 @@ "typeString": "bytes" }, "typeName": { - "id": 80, + "id": 106, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1910:5:2", + "src": "1931:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6886,20 +6798,20 @@ "visibility": "internal" } ], - "src": "1695:237:2" + "src": "1716:237:3" }, "payable": false, "returnParameters": { - "id": 85, + "id": 111, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 84, + "id": 110, "name": "success", "nodeType": "VariableDeclaration", - "scope": 190, - "src": "1965:12:2", + "scope": 214, + "src": "1986:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6907,10 +6819,10 @@ "typeString": "bool" }, "typeName": { - "id": 83, + "id": 109, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1965:4:2", + "src": "1986:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6920,32 +6832,32 @@ "visibility": "internal" } ], - "src": "1964:14:2" + "src": "1985:14:3" }, - "scope": 345, - "src": "1656:1551:2", + "scope": 369, + "src": "1677:1545:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 237, + "id": 261, "nodeType": "Block", - "src": "4286:371:2", + "src": "4301:371:3", "statements": [ { "assignments": [ - 206 + 230 ], "declarations": [ { "constant": false, - "id": 206, + "id": 230, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 238, - "src": "4296:16:2", + "scope": 262, + "src": "4311:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6953,10 +6865,10 @@ "typeString": "uint256" }, "typeName": { - "id": 205, + "id": 229, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4296:7:2", + "src": "4311:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6966,24 +6878,24 @@ "visibility": "internal" } ], - "id": 209, + "id": 233, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 207, + "id": 231, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1766, - "src": "4315:7:2", + "referencedDeclaration": 4029, + "src": "4330:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 208, + "id": 232, "isConstant": false, "isLValue": false, "isPure": false, @@ -6991,14 +6903,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4315:9:2", + "src": "4330:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4296:28:2" + "src": "4311:28:3" }, { "expression": { @@ -7009,12 +6921,12 @@ "arguments": [ { "argumentTypes": null, - "id": 212, + "id": 236, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 192, - "src": "4437:2:2", + "referencedDeclaration": 216, + "src": "4452:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7022,12 +6934,12 @@ }, { "argumentTypes": null, - "id": 213, + "id": 237, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 194, - "src": "4441:5:2", + "referencedDeclaration": 218, + "src": "4456:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7035,12 +6947,12 @@ }, { "argumentTypes": null, - "id": 214, + "id": 238, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 196, - "src": "4448:4:2", + "referencedDeclaration": 220, + "src": "4463:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7048,14 +6960,14 @@ }, { "argumentTypes": null, - "id": 215, + "id": 239, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 198, - "src": "4454:9:2", + "referencedDeclaration": 222, + "src": "4469:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -7064,18 +6976,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 216, + "id": 240, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1766, - "src": "4465:7:2", + "referencedDeclaration": 4029, + "src": "4480:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 217, + "id": 241, "isConstant": false, "isLValue": false, "isPure": false, @@ -7083,7 +6995,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4465:9:2", + "src": "4480:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7105,7 +7017,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -7113,18 +7025,18 @@ "typeString": "uint256" } ], - "id": 211, + "id": 235, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "4429:7:2", + "referencedDeclaration": 2121, + "src": "4444:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 218, + "id": 242, "isConstant": false, "isLValue": false, "isPure": false, @@ -7132,7 +7044,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4429:46:2", + "src": "4444:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7146,21 +7058,21 @@ "typeString": "bool" } ], - "id": 210, + "id": 234, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1776, - "src": "4421:7:2", + "referencedDeclaration": 4039, + "src": "4436:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 219, + "id": 243, "isConstant": false, "isLValue": false, "isPure": false, @@ -7168,28 +7080,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4421:55:2", + "src": "4436:55:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 220, + "id": 244, "nodeType": "ExpressionStatement", - "src": "4421:55:2" + "src": "4436:55:3" }, { "assignments": [ - 222 + 246 ], "declarations": [ { "constant": false, - "id": 222, + "id": 246, "name": "requiredGas", "nodeType": "VariableDeclaration", - "scope": 238, - "src": "4486:19:2", + "scope": 262, + "src": "4501:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7197,10 +7109,10 @@ "typeString": "uint256" }, "typeName": { - "id": 221, + "id": 245, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4486:7:2", + "src": "4501:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7210,26 +7122,26 @@ "visibility": "internal" } ], - "id": 227, + "id": 251, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 226, + "id": 250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 223, + "id": 247, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 206, - "src": "4508:8:2", + "referencedDeclaration": 230, + "src": "4523:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7242,18 +7154,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 224, + "id": 248, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1766, - "src": "4519:7:2", + "referencedDeclaration": 4029, + "src": "4534:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 225, + "id": 249, "isConstant": false, "isLValue": false, "isPure": false, @@ -7261,20 +7173,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4519:9:2", + "src": "4534:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4508:20:2", + "src": "4523:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4486:42:2" + "src": "4501:42:3" }, { "expression": { @@ -7288,12 +7200,12 @@ "arguments": [ { "argumentTypes": null, - "id": 232, + "id": 256, "name": "requiredGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 222, - "src": "4636:11:2", + "referencedDeclaration": 246, + "src": "4651:11:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7309,18 +7221,18 @@ ], "expression": { "argumentTypes": null, - "id": 230, + "id": 254, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1760, - "src": "4619:3:2", + "referencedDeclaration": 4023, + "src": "4634:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 231, + "id": 255, "isConstant": false, "isLValue": false, "isPure": true, @@ -7328,13 +7240,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4619:16:2", + "src": "4634:16:3", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 233, + "id": 257, "isConstant": false, "isLValue": false, "isPure": false, @@ -7342,7 +7254,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4619:29:2", + "src": "4634:29:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7356,20 +7268,20 @@ "typeString": "bytes memory" } ], - "id": 229, + "id": 253, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4612:6:2", + "src": "4627:6:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": "string" }, - "id": 234, + "id": 258, "isConstant": false, "isLValue": false, "isPure": false, @@ -7377,7 +7289,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4612:37:2", + "src": "4627:37:3", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string memory" @@ -7391,21 +7303,21 @@ "typeString": "string memory" } ], - "id": 228, + "id": 252, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 1778, - 1779 + 4041, + 4042 ], - "referencedDeclaration": 1779, - "src": "4605:6:2", + "referencedDeclaration": 4042, + "src": "4620:6:3", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 235, + "id": 259, "isConstant": false, "isLValue": false, "isPure": false, @@ -7413,57 +7325,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4605:45:2", + "src": "4620:45:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 236, + "id": 260, "nodeType": "ExpressionStatement", - "src": "4605:45:2" + "src": "4620:45:3" } ] }, "documentation": "@dev Allows to estimate a Safe transaction. \n This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n 1.) The method can only be called from the safe itself\n 2.) The response is returned with a revert\n When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execTransactionAndPaySubmitter`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).", - "id": 238, + "id": 262, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 201, + "id": 225, "modifierName": { "argumentTypes": null, - "id": 200, + "id": 224, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1448, - "src": "4245:10:2", + "referencedDeclaration": 3064, + "src": "4260:10:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4245:10:2" + "src": "4260:10:3" } ], "name": "requiredTxGas", "nodeType": "FunctionDefinition", "parameters": { - "id": 199, + "id": 223, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 192, + "id": 216, "name": "to", "nodeType": "VariableDeclaration", - "scope": 238, - "src": "4157:10:2", + "scope": 262, + "src": "4172:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7471,10 +7383,10 @@ "typeString": "address" }, "typeName": { - "id": 191, + "id": 215, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4157:7:2", + "src": "4172:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7485,11 +7397,11 @@ }, { "constant": false, - "id": 194, + "id": 218, "name": "value", "nodeType": "VariableDeclaration", - "scope": 238, - "src": "4169:13:2", + "scope": 262, + "src": "4184:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7497,10 +7409,10 @@ "typeString": "uint256" }, "typeName": { - "id": 193, + "id": 217, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4169:7:2", + "src": "4184:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7511,11 +7423,11 @@ }, { "constant": false, - "id": 196, + "id": 220, "name": "data", "nodeType": "VariableDeclaration", - "scope": 238, - "src": "4184:10:2", + "scope": 262, + "src": "4199:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7523,10 +7435,10 @@ "typeString": "bytes" }, "typeName": { - "id": 195, + "id": 219, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4184:5:2", + "src": "4199:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -7537,26 +7449,26 @@ }, { "constant": false, - "id": 198, + "id": 222, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 238, - "src": "4196:24:2", + "scope": 262, + "src": "4211:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 197, + "id": 221, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "4196:14:2", + "referencedDeclaration": 29, + "src": "4211:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -7564,20 +7476,20 @@ "visibility": "internal" } ], - "src": "4156:65:2" + "src": "4171:65:3" }, "payable": false, "returnParameters": { - "id": 204, + "id": 228, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 203, + "id": 227, "name": "", "nodeType": "VariableDeclaration", - "scope": 238, - "src": "4273:7:2", + "scope": 262, + "src": "4288:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7585,10 +7497,10 @@ "typeString": "uint256" }, "typeName": { - "id": 202, + "id": 226, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4273:7:2", + "src": "4288:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7598,32 +7510,32 @@ "visibility": "internal" } ], - "src": "4272:9:2" + "src": "4287:9:3" }, - "scope": 345, - "src": "4134:523:2", + "scope": 369, + "src": "4149:523:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 297, + "id": 321, "nodeType": "Block", - "src": "4750:519:2", + "src": "4765:519:3", "statements": [ { "assignments": [ - 246 + 270 ], "declarations": [ { "constant": false, - "id": 246, + "id": 270, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 298, - "src": "4812:17:2", + "scope": 322, + "src": "4827:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7631,10 +7543,10 @@ "typeString": "address" }, "typeName": { - "id": 245, + "id": 269, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4812:7:2", + "src": "4827:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7644,21 +7556,21 @@ "visibility": "internal" } ], - "id": 250, + "id": 274, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 248, + "id": 272, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4840:1:2", + "src": "4855:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7674,20 +7586,20 @@ "typeString": "int_const 0" } ], - "id": 247, + "id": 271, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4832:7:2", + "src": "4847:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 249, + "id": 273, "isConstant": false, "isLValue": false, "isPure": true, @@ -7695,25 +7607,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4832:10:2", + "src": "4847:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4812:30:2" + "src": "4827:30:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 252, + "id": 276, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 298, - "src": "4852:20:2", + "scope": 322, + "src": "4867:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7721,10 +7633,10 @@ "typeString": "address" }, "typeName": { - "id": 251, + "id": 275, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4852:7:2", + "src": "4867:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7734,21 +7646,21 @@ "visibility": "internal" } ], - "id": 253, + "id": 277, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "4852:20:2" + "src": "4867:20:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 255, + "id": 279, "name": "i", "nodeType": "VariableDeclaration", - "scope": 298, - "src": "4882:9:2", + "scope": 322, + "src": "4897:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7756,10 +7668,10 @@ "typeString": "uint256" }, "typeName": { - "id": 254, + "id": 278, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4882:7:2", + "src": "4897:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7769,33 +7681,33 @@ "visibility": "internal" } ], - "id": 256, + "id": 280, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "4882:9:2" + "src": "4897:9:3" }, { "body": { - "id": 295, + "id": 319, "nodeType": "Block", - "src": "4975:288:2", + "src": "4990:288:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 273, + "id": 297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 267, + "id": 291, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "4989:12:2", + "referencedDeclaration": 276, + "src": "5004:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7808,12 +7720,12 @@ "arguments": [ { "argumentTypes": null, - "id": 269, + "id": 293, "name": "txHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 240, - "src": "5015:6:2", + "referencedDeclaration": 264, + "src": "5030:6:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -7821,12 +7733,12 @@ }, { "argumentTypes": null, - "id": 270, + "id": 294, "name": "signatures", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 242, - "src": "5023:10:2", + "referencedDeclaration": 266, + "src": "5038:10:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7834,12 +7746,12 @@ }, { "argumentTypes": null, - "id": 271, + "id": 295, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 255, - "src": "5035:1:2", + "referencedDeclaration": 279, + "src": "5050:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7861,18 +7773,18 @@ "typeString": "uint256" } ], - "id": 268, + "id": 292, "name": "recoverKey", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "5004:10:2", + "referencedDeclaration": 3105, + "src": "5019:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$", "typeString": "function (bytes32,bytes memory,uint256) pure returns (address)" } }, - "id": 272, + "id": 296, "isConstant": false, "isLValue": false, "isPure": false, @@ -7880,21 +7792,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5004:33:2", + "src": "5019:33:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4989:48:2", + "src": "5004:48:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 274, + "id": 298, "nodeType": "ExpressionStatement", - "src": "4989:48:2" + "src": "5004:48:3" }, { "expression": { @@ -7906,7 +7818,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 280, + "id": 304, "isConstant": false, "isLValue": false, "isPure": false, @@ -7915,26 +7827,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 276, + "id": 300, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "5059:6:2", + "referencedDeclaration": 2494, + "src": "5074:6:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 278, + "id": 302, "indexExpression": { "argumentTypes": null, - "id": 277, + "id": 301, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "5066:12:2", + "referencedDeclaration": 276, + "src": "5081:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7945,7 +7857,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5059:20:2", + "src": "5074:20:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7956,14 +7868,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 279, + "id": 303, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5083:1:2", + "src": "5098:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7971,7 +7883,7 @@ }, "value": "0" }, - "src": "5059:25:2", + "src": "5074:25:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7980,14 +7892,14 @@ { "argumentTypes": null, "hexValue": "5369676e6174757265206e6f742070726f7669646564206279206f776e6572", - "id": 281, + "id": 305, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5086:33:2", + "src": "5101:33:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", @@ -8007,21 +7919,21 @@ "typeString": "literal_string \"Signature not provided by owner\"" } ], - "id": 275, + "id": 299, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "5051:7:2", + "referencedDeclaration": 4040, + "src": "5066:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 282, + "id": 306, "isConstant": false, "isLValue": false, "isPure": false, @@ -8029,15 +7941,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5051:69:2", + "src": "5066:69:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 283, + "id": 307, "nodeType": "ExpressionStatement", - "src": "5051:69:2" + "src": "5066:69:3" }, { "expression": { @@ -8049,19 +7961,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 287, + "id": 311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 285, + "id": 309, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "5142:12:2", + "referencedDeclaration": 276, + "src": "5157:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8071,18 +7983,18 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 286, + "id": 310, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 246, - "src": "5157:9:2", + "referencedDeclaration": 270, + "src": "5172:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5142:24:2", + "src": "5157:24:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8091,14 +8003,14 @@ { "argumentTypes": null, "hexValue": "5369676e61747572657320617265206e6f74206f726465726564206279206f776e65722061646472657373", - "id": 288, + "id": 312, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5168:45:2", + "src": "5183:45:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", @@ -8118,21 +8030,21 @@ "typeString": "literal_string \"Signatures are not ordered by owner address\"" } ], - "id": 284, + "id": 308, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "5134:7:2", + "referencedDeclaration": 4040, + "src": "5149:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 289, + "id": 313, "isConstant": false, "isLValue": false, "isPure": false, @@ -8140,32 +8052,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5134:80:2", + "src": "5149:80:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 290, + "id": 314, "nodeType": "ExpressionStatement", - "src": "5134:80:2" + "src": "5149:80:3" }, { "expression": { "argumentTypes": null, - "id": 293, + "id": 317, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 291, + "id": 315, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 246, - "src": "5228:9:2", + "referencedDeclaration": 270, + "src": "5243:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8175,26 +8087,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 292, + "id": 316, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "5240:12:2", + "referencedDeclaration": 276, + "src": "5255:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5228:24:2", + "src": "5243:24:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 294, + "id": 318, "nodeType": "ExpressionStatement", - "src": "5228:24:2" + "src": "5243:24:3" } ] }, @@ -8204,19 +8116,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 263, + "id": 287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 261, + "id": 285, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 255, - "src": "4955:1:2", + "referencedDeclaration": 279, + "src": "4970:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8226,40 +8138,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 262, + "id": 286, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "4959:9:2", + "referencedDeclaration": 2498, + "src": "4974:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4955:13:2", + "src": "4970:13:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 296, + "id": 320, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 259, + "id": 283, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 257, + "id": 281, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 255, - "src": "4948:1:2", + "referencedDeclaration": 279, + "src": "4963:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8270,14 +8182,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 258, + "id": 282, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4952:1:2", + "src": "4967:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8285,20 +8197,20 @@ }, "value": "0" }, - "src": "4948:5:2", + "src": "4963:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 260, + "id": 284, "nodeType": "ExpressionStatement", - "src": "4948:5:2" + "src": "4963:5:3" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 265, + "id": 289, "isConstant": false, "isLValue": false, "isPure": false, @@ -8306,15 +8218,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4970:3:2", + "src": "4985:3:3", "subExpression": { "argumentTypes": null, - "id": 264, + "id": 288, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 255, - "src": "4970:1:2", + "referencedDeclaration": 279, + "src": "4985:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8325,17 +8237,17 @@ "typeString": "uint256" } }, - "id": 266, + "id": 290, "nodeType": "ExpressionStatement", - "src": "4970:3:2" + "src": "4985:3:3" }, "nodeType": "ForStatement", - "src": "4943:320:2" + "src": "4958:320:3" } ] }, "documentation": null, - "id": 298, + "id": 322, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8343,16 +8255,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 243, + "id": 267, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 240, + "id": 264, "name": "txHash", "nodeType": "VariableDeclaration", - "scope": 298, - "src": "4682:14:2", + "scope": 322, + "src": "4697:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8360,10 +8272,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 239, + "id": 263, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4682:7:2", + "src": "4697:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -8374,11 +8286,11 @@ }, { "constant": false, - "id": 242, + "id": 266, "name": "signatures", "nodeType": "VariableDeclaration", - "scope": 298, - "src": "4698:16:2", + "scope": 322, + "src": "4713:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8386,10 +8298,10 @@ "typeString": "bytes" }, "typeName": { - "id": 241, + "id": 265, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4698:5:2", + "src": "4713:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8399,26 +8311,26 @@ "visibility": "internal" } ], - "src": "4681:34:2" + "src": "4696:34:3" }, "payable": false, "returnParameters": { - "id": 244, + "id": 268, "nodeType": "ParameterList", "parameters": [], - "src": "4750:0:2" + "src": "4765:0:3" }, - "scope": 345, - "src": "4663:606:2", + "scope": 369, + "src": "4678:606:3", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 343, + "id": 367, "nodeType": "Block", - "src": "6193:176:2", + "src": "6208:176:3", "statements": [ { "expression": { @@ -8433,14 +8345,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 325, + "id": 349, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6255:4:2", + "src": "6270:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -8456,20 +8368,20 @@ "typeString": "int_const 25" } ], - "id": 324, + "id": 348, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6250:4:2", + "src": "6265:4:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 326, + "id": 350, "isConstant": false, "isLValue": false, "isPure": true, @@ -8477,7 +8389,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6250:10:2", + "src": "6265:10:3", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -8489,14 +8401,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 328, + "id": 352, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6267:1:2", + "src": "6282:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8512,20 +8424,20 @@ "typeString": "int_const 0" } ], - "id": 327, + "id": 351, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6262:4:2", + "src": "6277:4:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 329, + "id": 353, "isConstant": false, "isLValue": false, "isPure": true, @@ -8533,7 +8445,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6262:7:2", + "src": "6277:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -8541,25 +8453,25 @@ }, { "argumentTypes": null, - "id": 330, + "id": 354, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1804, - "src": "6271:4:2", + "referencedDeclaration": 4071, + "src": "6286:4:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$345", + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$369", "typeString": "contract GnosisSafePersonalEdition" } }, { "argumentTypes": null, - "id": 331, + "id": 355, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 300, - "src": "6277:2:2", + "referencedDeclaration": 324, + "src": "6292:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8567,12 +8479,12 @@ }, { "argumentTypes": null, - "id": 332, + "id": 356, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "6281:5:2", + "referencedDeclaration": 326, + "src": "6296:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8580,12 +8492,12 @@ }, { "argumentTypes": null, - "id": 333, + "id": 357, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 304, - "src": "6288:4:2", + "referencedDeclaration": 328, + "src": "6303:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -8593,25 +8505,25 @@ }, { "argumentTypes": null, - "id": 334, + "id": 358, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 306, - "src": "6294:9:2", + "referencedDeclaration": 330, + "src": "6309:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 335, + "id": 359, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 308, - "src": "6305:9:2", + "referencedDeclaration": 332, + "src": "6320:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8619,12 +8531,12 @@ }, { "argumentTypes": null, - "id": 336, + "id": 360, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 310, - "src": "6316:7:2", + "referencedDeclaration": 334, + "src": "6331:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8632,12 +8544,12 @@ }, { "argumentTypes": null, - "id": 337, + "id": 361, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "6325:8:2", + "referencedDeclaration": 336, + "src": "6340:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8645,12 +8557,12 @@ }, { "argumentTypes": null, - "id": 338, + "id": 362, "name": "gasToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 314, - "src": "6335:8:2", + "referencedDeclaration": 338, + "src": "6350:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8658,12 +8570,12 @@ }, { "argumentTypes": null, - "id": 339, + "id": 363, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "6345:6:2", + "referencedDeclaration": 340, + "src": "6360:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8681,7 +8593,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$345", + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$369", "typeString": "contract GnosisSafePersonalEdition" }, { @@ -8697,7 +8609,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -8723,18 +8635,18 @@ ], "expression": { "argumentTypes": null, - "id": 322, + "id": 346, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1760, - "src": "6233:3:2", + "referencedDeclaration": 4023, + "src": "6248:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 323, + "id": 347, "isConstant": false, "isLValue": false, "isPure": true, @@ -8742,13 +8654,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "6233:16:2", + "src": "6248:16:3", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 340, + "id": 364, "isConstant": false, "isLValue": false, "isPure": false, @@ -8756,7 +8668,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6233:119:2", + "src": "6248:119:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -8770,18 +8682,18 @@ "typeString": "bytes memory" } ], - "id": 321, + "id": 345, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1767, - "src": "6210:9:2", + "referencedDeclaration": 4030, + "src": "6225:9:3", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 341, + "id": 365, "isConstant": false, "isLValue": false, "isPure": false, @@ -8789,21 +8701,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6210:152:2", + "src": "6225:152:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 320, - "id": 342, + "functionReturnParameters": 344, + "id": 366, "nodeType": "Return", - "src": "6203:159:2" + "src": "6218:159:3" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param _nonce Transaction nonce.\n @return Transaction hash.", - "id": 344, + "id": 368, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8811,16 +8723,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 317, + "id": 341, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 300, + "id": 324, "name": "to", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "5906:10:2", + "scope": 368, + "src": "5921:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8828,10 +8740,10 @@ "typeString": "address" }, "typeName": { - "id": 299, + "id": 323, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5906:7:2", + "src": "5921:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8842,11 +8754,11 @@ }, { "constant": false, - "id": 302, + "id": 326, "name": "value", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "5927:13:2", + "scope": 368, + "src": "5942:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8854,10 +8766,10 @@ "typeString": "uint256" }, "typeName": { - "id": 301, + "id": 325, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5927:7:2", + "src": "5942:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8868,11 +8780,11 @@ }, { "constant": false, - "id": 304, + "id": 328, "name": "data", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "5951:10:2", + "scope": 368, + "src": "5966:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8880,10 +8792,10 @@ "typeString": "bytes" }, "typeName": { - "id": 303, + "id": 327, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "5951:5:2", + "src": "5966:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8894,26 +8806,26 @@ }, { "constant": false, - "id": 306, + "id": 330, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "5972:24:2", + "scope": 368, + "src": "5987:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 305, + "id": 329, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "5972:14:2", + "referencedDeclaration": 29, + "src": "5987:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -8922,11 +8834,11 @@ }, { "constant": false, - "id": 308, + "id": 332, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "6007:17:2", + "scope": 368, + "src": "6022:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8934,10 +8846,10 @@ "typeString": "uint256" }, "typeName": { - "id": 307, + "id": 331, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6007:7:2", + "src": "6022:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8948,11 +8860,11 @@ }, { "constant": false, - "id": 310, + "id": 334, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "6035:15:2", + "scope": 368, + "src": "6050:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8960,10 +8872,10 @@ "typeString": "uint256" }, "typeName": { - "id": 309, + "id": 333, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6035:7:2", + "src": "6050:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8974,11 +8886,11 @@ }, { "constant": false, - "id": 312, + "id": 336, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "6061:16:2", + "scope": 368, + "src": "6076:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8986,10 +8898,10 @@ "typeString": "uint256" }, "typeName": { - "id": 311, + "id": 335, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6061:7:2", + "src": "6076:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9000,11 +8912,11 @@ }, { "constant": false, - "id": 314, + "id": 338, "name": "gasToken", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "6088:16:2", + "scope": 368, + "src": "6103:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9012,10 +8924,10 @@ "typeString": "address" }, "typeName": { - "id": 313, + "id": 337, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6088:7:2", + "src": "6103:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9026,11 +8938,11 @@ }, { "constant": false, - "id": 316, + "id": 340, "name": "_nonce", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "6114:14:2", + "scope": 368, + "src": "6129:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9038,10 +8950,10 @@ "typeString": "uint256" }, "typeName": { - "id": 315, + "id": 339, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6114:7:2", + "src": "6129:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9051,20 +8963,20 @@ "visibility": "internal" } ], - "src": "5896:238:2" + "src": "5911:238:3" }, "payable": false, "returnParameters": { - "id": 320, + "id": 344, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 319, + "id": 343, "name": "", "nodeType": "VariableDeclaration", - "scope": 344, - "src": "6180:7:2", + "scope": 368, + "src": "6195:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9072,10 +8984,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 318, + "id": 342, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "6180:7:2", + "src": "6195:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -9085,20 +8997,20 @@ "visibility": "internal" } ], - "src": "6179:9:2" + "src": "6194:9:3" }, - "scope": 345, - "src": "5869:500:2", + "scope": 369, + "src": "5884:500:3", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 346, - "src": "484:5887:2" + "scope": 370, + "src": "483:5903:3" } ], - "src": "0:6372:2" + "src": "0:6387:3" }, "compiler": { "name": "solc", @@ -9108,28 +9020,28 @@ "4": { "events": {}, "links": {}, - "address": "0x439f1a7ec29875e3e5a3507f6f4161c3d95496d8", - "transactionHash": "0x19675960d903e9841fd5ec8e97a3ea604087f66075c3effedf1804397a5debec" + "address": "0x98391eab1d6e8c85c67b4ccf5629f4a9b8e10308", + "transactionHash": "0x029e76547c83fd8850d0ee1715c77e6ba1119369730d79da11d67d934aa0303c" }, - "1529327661534": { + "1530013596495": { "events": {}, "links": {}, - "address": "0x826efa98ea5511449f53505a69e4df3dbf5577ff", - "transactionHash": "0xed1ba6cba79ce65001ce0fab4e609423c8ec3128bce002f2641307815dcae1a5" + "address": "0x7da3d9eca8ee137a1305991016c1d482b6c96413", + "transactionHash": "0x77553eb255575092672bf623f08e784bed37dd5796b08a0afd13b96e9f4d8319" }, - "1529333415702": { + "1530525742205": { "events": {}, "links": {}, - "address": "0x0c6b67148fe8939c20040e409fc2e5bc349cf1fd", - "transactionHash": "0xa3d4ad952d11ed76260a43d543cd9e20075a9fd4e69a1001c5ca76dfc73b8ca0" + "address": "0xb4a74cb6e8e414e43c61c82a533808e6ae48acee", + "transactionHash": "0x0a073b410fe8dc426e2147e8e256a537c770de9d895a3bf2c2680ad39db4dc19" }, - "1529652204341": { + "1530611935189": { "events": {}, "links": {}, - "address": "0x3a153e91544b2639d1bff08ddf29cfe0b90d54c2", - "transactionHash": "0x3324c7ff6568820ed79ff9613ae1d851689b2d93a8eafa70c1a40e833f7cfe7b" + "address": "0x5bc52159f8c6c9e2d02c811c0ca0a9b7cf376f6d", + "transactionHash": "0x0a073b410fe8dc426e2147e8e256a537c770de9d895a3bf2c2680ad39db4dc19" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-22T07:24:16.246Z" + "updatedAt": "2018-07-03T09:59:18.547Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json index ee49f5db21..ed2345af11 100644 --- a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json +++ b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json @@ -1,6 +1,50 @@ { "contractName": "GnosisSafeTeamEdition", "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint256" + } + ], + "name": "addOwnerWithThreshold", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_owners", + "type": "address[]" + }, + { + "name": "_threshold", + "type": "uint256" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "setup", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": true, "inputs": [ @@ -69,47 +113,25 @@ "constant": false, "inputs": [ { - "name": "_masterCopy", - "type": "address" + "name": "_threshold", + "type": "uint256" } ], - "name": "changeMasterCopy", + "name": "changeThreshold", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, - { - "constant": true, - "inputs": [], - "name": "SENTINEL_MODULES", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": false, "inputs": [ { - "name": "prevOwner", - "type": "address" - }, - { - "name": "owner", + "name": "_masterCopy", "type": "address" - }, - { - "name": "_threshold", - "type": "uint8" } ], - "name": "removeOwner", + "name": "changeMasterCopy", "outputs": [], "payable": false, "stateMutability": "nonpayable", @@ -118,7 +140,7 @@ { "constant": true, "inputs": [], - "name": "SENTINEL_OWNERS", + "name": "SENTINEL_MODULES", "outputs": [ { "name": "", @@ -130,29 +152,17 @@ "type": "function" }, { - "constant": false, - "inputs": [ - { - "name": "_owners", - "type": "address[]" - }, - { - "name": "_threshold", - "type": "uint8" - }, + "constant": true, + "inputs": [], + "name": "SENTINEL_OWNERS", + "outputs": [ { - "name": "to", + "name": "", "type": "address" - }, - { - "name": "data", - "type": "bytes" } ], - "name": "setup", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { @@ -220,38 +230,6 @@ "stateMutability": "view", "type": "function" }, - { - "constant": false, - "inputs": [ - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "changeThreshold", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - }, - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "addOwnerWithThreshold", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { "constant": false, "inputs": [ @@ -318,13 +296,35 @@ "outputs": [ { "name": "", - "type": "uint8" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, + { + "constant": false, + "inputs": [ + { + "name": "prevOwner", + "type": "address" + }, + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint256" + } + ], + "name": "removeOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": true, "inputs": [], @@ -452,51 +452,51 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50613e1f806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b14610739578063a3f4df7e146107a5578063b2494df314610835578063b7f3358d146108a1578063b91a667f146108d1578063e009cfde14610921578063e318b52b14610984578063e52cb36a14610a07578063e75235b814610a4c578063ffa1ad7414610a7d575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b0d565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610d2a565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610ecd565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611155565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506111d7565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611303565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116e1565b005b3480156104e957600080fd5b506104f26118a2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506118a7565b005b3480156105b057600080fd5b506105b9611d92565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611d97565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611db1565b6040518082815260200191505060405180910390f35b34801561074557600080fd5b5061074e611dd6565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610791578082015181840152602081019050610776565b505050509050019250505060405180910390f35b3480156107b157600080fd5b506107ba611f71565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fa5780820151818401526020810190506107df565b50505050905090810190601f1680156108275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084157600080fd5b5061084a611faa565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088d578082015181840152602081019050610872565b505050509050019250505060405180910390f35b3480156108ad57600080fd5b506108cf600480360381019080803560ff169060200190929190505050612251565b005b3480156108dd57600080fd5b5061091f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061246c565b005b34801561092d57600080fd5b50610982600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612875565b005b34801561099057600080fd5b50610a05600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c8e565b005b348015610a1357600080fd5b50610a3660048036038101908080356000191690602001909291905050506132db565b6040518082815260200191505060405180910390f35b348015610a5857600080fd5b50610a616132f3565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a8957600080fd5b50610a926132fd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ad2578082015181840152602081019050610ab7565b50505050905090810190601f168015610aff5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610bfc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420616e206f776e65720000000000000000000081525060200191505060405180910390fd5b610c098686868686610ecd565b9050600060056000836000191660001916815260200190815260200160002054141515610cc4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f53616665207472616e73616374696f6e20616c7265616479206578656375746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b6000610d398686868686610ecd565b9050600060056000836000191660001916815260200190815260200160002054141515610df4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f53616665207472616e73616374696f6e20616c7265616479206578656375746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610dfd81613336565b600160056000836000191660001916815260200190815260200160002081905550610e2b868686865a6135b4565b1515610ec5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f7420657865637574652073616665207472616e736163746981526020017f6f6e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515611071578051825260208201915060208101905060208303925061104c565b6001836020036101000a03801982511681845116808217855250505050505090500183600281111561109f57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b60208310151561111d57805182526020820191506020810190506020830392506110f8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156112ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b6112f9858585855a6135b4565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156114205750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611581576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561185f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660016003540310151515611a16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611a6a5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611ade576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600454141515611d8d57611d8c81612251565b5b505050565b600181565b611da184846136b1565b611dab8282613b7a565b50505050565b6006602052816000526040600020602052806000526040600020600091509150505481565b606080600080600354604051908082528060200260200182016040528015611e0d5781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611f6857808383815181101515611ebd57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611e78565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156120be57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050612019565b826040519080825280602002602001820160405280156120ed5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156122485781818481518110151561219d57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050612158565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561231a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6003548160ff16111515156123bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff161015151561245f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660048190555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156125895750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156125fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156126ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff166004541415156128715761287081612251565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561293e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156129925750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612a06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612d57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015612dab5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612e1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612f0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015612f605750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156130fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915090505481565b6000600454905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060066000866000191660001916815260200190815260200160002093506000925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156135335760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141590503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806134735750805b156134cc5780156134c35760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506133c1565b60045483101515156135ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4e6f7420656e6f75676820636f6e6669726d6174696f6e73000000000000000081525060200191505060405180910390fd5b5050505050565b600080600060028111156135c457fe5b8460028111156135d057fe5b14156135e9576135e287878786613db1565b91506136a7565b600160028111156135f657fe5b84600281111561360257fe5b141561361a57613613878685613dca565b91506136a6565b61362385613de1565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b60008060008060045414151561372f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518460ff16111515156137d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018460ff1610151515613873576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b8451821015613ae257848281518110151561389357fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156138f35750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515613967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613a54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550809250818060010192505061387c565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084516003819055508360ff166004819055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613c8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515613dad57613d3882825a613dca565b1515613dac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a7230582020adf9ea3172b21d0f9165de77fa73a512a48e6bd7825525f659041da99713c00029", - "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b14610739578063a3f4df7e146107a5578063b2494df314610835578063b7f3358d146108a1578063b91a667f146108d1578063e009cfde14610921578063e318b52b14610984578063e52cb36a14610a07578063e75235b814610a4c578063ffa1ad7414610a7d575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b0d565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610d2a565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610ecd565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611155565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506111d7565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611303565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116e1565b005b3480156104e957600080fd5b506104f26118a2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506118a7565b005b3480156105b057600080fd5b506105b9611d92565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611d97565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611db1565b6040518082815260200191505060405180910390f35b34801561074557600080fd5b5061074e611dd6565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610791578082015181840152602081019050610776565b505050509050019250505060405180910390f35b3480156107b157600080fd5b506107ba611f71565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fa5780820151818401526020810190506107df565b50505050905090810190601f1680156108275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084157600080fd5b5061084a611faa565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088d578082015181840152602081019050610872565b505050509050019250505060405180910390f35b3480156108ad57600080fd5b506108cf600480360381019080803560ff169060200190929190505050612251565b005b3480156108dd57600080fd5b5061091f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061246c565b005b34801561092d57600080fd5b50610982600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612875565b005b34801561099057600080fd5b50610a05600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c8e565b005b348015610a1357600080fd5b50610a3660048036038101908080356000191690602001909291905050506132db565b6040518082815260200191505060405180910390f35b348015610a5857600080fd5b50610a616132f3565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a8957600080fd5b50610a926132fd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ad2578082015181840152602081019050610ab7565b50505050905090810190601f168015610aff5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610bfc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420616e206f776e65720000000000000000000081525060200191505060405180910390fd5b610c098686868686610ecd565b9050600060056000836000191660001916815260200190815260200160002054141515610cc4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f53616665207472616e73616374696f6e20616c7265616479206578656375746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b6000610d398686868686610ecd565b9050600060056000836000191660001916815260200190815260200160002054141515610df4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f53616665207472616e73616374696f6e20616c7265616479206578656375746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610dfd81613336565b600160056000836000191660001916815260200190815260200160002081905550610e2b868686865a6135b4565b1515610ec5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f7420657865637574652073616665207472616e736163746981526020017f6f6e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515611071578051825260208201915060208101905060208303925061104c565b6001836020036101000a03801982511681845116808217855250505050505090500183600281111561109f57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b60208310151561111d57805182526020820191506020810190506020830392506110f8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156112ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b6112f9858585855a6135b4565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156114205750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611581576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561185f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660016003540310151515611a16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611a6a5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611ade576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600454141515611d8d57611d8c81612251565b5b505050565b600181565b611da184846136b1565b611dab8282613b7a565b50505050565b6006602052816000526040600020602052806000526040600020600091509150505481565b606080600080600354604051908082528060200260200182016040528015611e0d5781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611f6857808383815181101515611ebd57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611e78565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156120be57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050612019565b826040519080825280602002602001820160405280156120ed5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156122485781818481518110151561219d57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050612158565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561231a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6003548160ff16111515156123bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff161015151561245f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660048190555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156125895750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156125fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156126ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff166004541415156128715761287081612251565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561293e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156129925750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612a06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612d57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015612dab5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612e1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612f0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015612f605750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156130fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915090505481565b6000600454905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060066000866000191660001916815260200190815260200160002093506000925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156135335760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141590503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806134735750805b156134cc5780156134c35760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506133c1565b60045483101515156135ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4e6f7420656e6f75676820636f6e6669726d6174696f6e73000000000000000081525060200191505060405180910390fd5b5050505050565b600080600060028111156135c457fe5b8460028111156135d057fe5b14156135e9576135e287878786613db1565b91506136a7565b600160028111156135f657fe5b84600281111561360257fe5b141561361a57613613878685613dca565b91506136a6565b61362385613de1565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b60008060008060045414151561372f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518460ff16111515156137d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018460ff1610151515613873576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b8451821015613ae257848281518110151561389357fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156138f35750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515613967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613a54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550809250818060010192505061387c565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084516003819055508360ff166004819055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613c8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515613dad57613d3882825a613dca565b1515613dac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a7230582020adf9ea3172b21d0f9165de77fa73a512a48e6bd7825525f659041da99713c00029", - "sourceMap": "272:4068:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;272:4068:3;;;;;;;", - "deployedSourceMap": "272:4068:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1266:638;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1266:638:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2346:618;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2346:618:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4009:329;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4009:329:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5610:129:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5610:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2841:429:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2841:429:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:459;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:459:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;3026:781:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3026:781:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:7;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;770:66:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;770:66:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5821:458:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5821:458:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5821:458:7;;;;;;;;;;;;;;;;;336:56:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;336:56:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;336:56:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4794:738:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4794:738:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4794:738:6;;;;;;;;;;;;;;;;;5081:397:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5081:397:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:593;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2091:593:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2031:474:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:474:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4141:751:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4141:751:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;536:46:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;536:46:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5484:120:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5484:120:7;;;;;;;;;;;;;;;;;;;;;;;;;;;398:40:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;398:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;398:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1266:638;1605:23;1567:1;1545:6;:18;1552:10;1545:18;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;1537:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1631:53;1650:2;1654:5;1661:4;1667:9;1678:5;1631:18;:53::i;:::-;1605:79;;1805:1;1774:10;:27;1785:15;1774:27;;;;;;;;;;;;;;;;;;:32;1766:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1896:1;1854:10;:27;1865:15;1854:27;;;;;;;;;;;;;;;;;:39;1882:10;1854:39;;;;;;;;;;;;;;;:43;;;;1266:638;;;;;;:::o;2346:618::-;2540:23;2566:53;2585:2;2589:5;2596:4;2602:9;2613:5;2566:18;:53::i;:::-;2540:79;;2668:1;2637:10;:27;2648:15;2637:27;;;;;;;;;;;;;;;;;;:32;2629:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2717:43;2744:15;2717:26;:43::i;:::-;2853:1;2823:10;:27;2834:15;2823:27;;;;;;;;;;;;;;;;;:31;;;;2872:46;2880:2;2884:5;2891:4;2897:9;2908;2872:7;:46::i;:::-;2864:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2346:618;;;;;;:::o;4009:329::-;4212:7;4274:4;4269:10;;4286:1;4281:7;;4290:4;4296:2;4300:5;4307:4;4313:9;4324:5;4252:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4252:78:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4252:78:3;;;4242:89;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4242:89:3;;;;;;;;;;;;;;;;4235:96;;4009:329;;;;;;;:::o;5610:129:7:-;5687:4;5731:1;5714:6;:13;5721:5;5714:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;5707:25;;5610:129;;;:::o;2841:429:6:-;2973:12;3081:1;3058:7;:19;3066:10;3058:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;3050:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3217:46;3225:2;3229:5;3236:4;3242:9;3253;3217:7;:46::i;:::-;3207:56;;2841:429;;;;;;:::o;1311:459::-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:1:6;1466:6;1458:20;;;;:59;;;;;550:3;1482:35;;1490:6;1482:35;;;;1458:59;1450:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1631:1;1612:7;:15;1620:6;1612:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1604:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:7;:25;550:3;1694:25;;;;;;;;;;;;;;;;;;;;;;;;;1676:7;:15;1684:6;1676:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1757:6;1729:7;:25;550:3;1729:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1311:459;:::o;626:248:4:-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:4;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;499:55:6:-;550:3;499:55;:::o;3026:781:7:-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3250:10:7;3232:28;;3245:1;3232:10;;:14;:28;;3224:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3425:1;3416:5;:10;;;;:38;;;;;337:3;3430:24;;:5;:24;;;;3416:38;3408:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3528:5;3507:26;;:6;:17;3514:9;3507:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3499:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3606:6;:13;3613:5;3606:13;;;;;;;;;;;;;;;;;;;;;;;;;3586:6;:17;3593:9;3586:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3645:1;3629:6;:13;3636:5;3629:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3656:10;;:12;;;;;;;;;;;;;;3749:10;3736:23;;:9;;:23;;3732:68;;;3773:27;3789:10;3773:15;:27::i;:::-;3732:68;3026:781;;;:::o;287:54::-;337:3;287:54;:::o;693:301:1:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;770:66:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5821:458:7:-;5887:9;5912:22;6006:13;6033:20;5951:10;;5937:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5937:25:7;;;;5912:50;;6022:1;6006:17;;6056:6;:23;337:3;6056:23;;;;;;;;;;;;;;;;;;;;;;;;;6033:46;;6089:162;337:3;6095:31;;:12;:31;;;;6089:162;;;6157:12;6142:5;6148;6142:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;6198:6;:20;6205:12;6198:20;;;;;;;;;;;;;;;;;;;;;;;;;6183:35;;6232:8;;;;;;;6089:162;;;6267:5;6260:12;;5821:458;;;;:::o;336:56:3:-;;;;;;;;;;;;;;;;;;;;:::o;4794:738:6:-;4861:9;4920:19;4953:21;5153:22;4942:1;4920:23;;4977:7;:25;550:3;4977:25;;;;;;;;;;;;;;;;;;;;;;;;;4953:49;;5012:132;550:3;5018:33;;:13;:33;;;;5012:132;;;5083:7;:22;5091:13;5083:22;;;;;;;;;;;;;;;;;;;;;;;;;5067:38;;5119:14;;;;;;;5012:132;;;5192:11;5178:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5178:26:6;;;;5153:51;;5262:1;5248:15;;5289:7;:25;550:3;5289:25;;;;;;;;;;;;;;;;;;;;;;;;;5273:41;;5324:180;550:3;5330:33;;:13;:33;;;;5324:180;;;5400:13;5379:5;5385:11;5379:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5443:7;:22;5451:13;5443:22;;;;;;;;;;;;;;;;;;;;;;;;;5427:38;;5479:14;;;;;;;5324:180;;;5520:5;5513:12;;4794:738;;;;:::o;5081:397:7:-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5263:10:7;;5249;:24;;;;5241:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5397:1;5383:10;:15;;;;5375:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5461:10;5449:22;;:9;:22;;;;5081:397;:::o;2091:593::-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2261:1:7;2252:5;:10;;;;:38;;;;;337:3;2266:24;;:5;:24;;;;2252:38;2244:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2400:1;2383:6;:13;2390:5;2383:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2375:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2459:6;:23;337:3;2459:23;;;;;;;;;;;;;;;;;;;;;;;;;2443:6;:13;2450:5;2443:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2518:5;2492:6;:23;337:3;2492:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2533:10;;:12;;;;;;;;;;;;;2626:10;2613:23;;:9;;:23;;2609:68;;;2650:27;2666:10;2650:15;:27::i;:::-;2609:68;2091:593;;:::o;2031:474:6:-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:1:6;2234:6;2226:20;;;;:59;;;;;550:3;2250:35;;2258:6;2250:35;;;;2226:59;2218:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2370:6;2339:38;;:7;:19;2347:10;2339:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2331:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2454:7;:15;2462:6;2454:15;;;;;;;;;;;;;;;;;;;;;;;;;2432:7;:19;2440:10;2432:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2497:1;2479:7;:15;2487:6;2479:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;2031:474;;:::o;4141:751:7:-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4324:1:7;4312:8;:13;;;;:44;;;;;337:3;4329:27;;:8;:27;;;;4312:44;4304:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4469:1;4449:6;:16;4456:8;4449:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;4441:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4615:1;4603:8;:13;;;;:44;;;;;337:3;4620:27;;:8;:27;;;;4603:44;4595:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4721:8;4700:29;;:6;:17;4707:9;4700:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4692:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4801:6;:16;4808:8;4801:16;;;;;;;;;;;;;;;;;;;;;;;;;4782:6;:16;4789:8;4782:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4847:8;4827:6;:17;4834:9;4827:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4884:1;4865:6;:16;4872:8;4865:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4141:751;;;:::o;536:46:3:-;;;;;;;;;;;;;;;;;:::o;5484:120:7:-;5553:5;5587:9;;5574:23;;5484:120;:::o;398:40:3:-;;;;;;;;;;;;;;;;;;;;:::o;2970:761::-;3062:37;3139:21;3216:20;3326:19;3102:10;:27;3113:15;3102:27;;;;;;;;;;;;;;;;;3062:67;;3163:1;3139:25;;3239:6;:23;337:3:7;3239:23:3;;;;;;;;;;;;;;;;;;;;;;;;;3216:46;;3272:380;337:3:7;3279:31:3;;:12;:31;;;;3272:380;;;3375:1;3348:9;:23;3358:12;3348:23;;;;;;;;;;;;;;;;:28;;3326:50;;3409:10;3393:26;;:12;:26;;;:44;;;;3423:14;3393:44;3390:203;;;3461:14;3457:88;;;3525:1;3499:9;:23;3509:12;3499:23;;;;;;;;;;;;;;;:27;;;;3457:88;3562:16;;;;;;;3390:203;3621:6;:20;3628:12;3621:20;;;;;;;;;;;;;;;;;;;;;;;;;3606:35;;3272:380;;;3686:9;;3669:13;:26;;3661:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2970:761;;;;;:::o;3276:548:6:-;3407:12;3678:19;3452;3439:32;;;;;;;;:9;:32;;;;;;;;;3435:383;;;3495:35;3507:2;3511:5;3518:4;3524:5;3495:11;:35::i;:::-;3485:45;;3435:383;;;3562:27;3549:40;;;;;;;;:9;:40;;;;;;;;;3545:273;;;3613:36;3633:2;3637:4;3643:5;3613:19;:36::i;:::-;3603:46;;3545:273;;;3700:19;3714:4;3700:13;:19::i;:::-;3678:41;;3758:1;3743:11;:16;;;;3733:26;;3778:29;3795:11;3778:29;;;;;;;;;;;;;;;;;;;;;;3545:273;3435:383;3276:548;;;;;;;;:::o;643:1208:7:-;1247:20;1300:9;1399:13;877:1;864:9;;:14;856:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1020:7;:14;1006:10;:28;;;;998:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1158:1;1144:10;:15;;;;1136:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;337:3;1247:38;;1312:1;1300:13;;1295:433;1319:7;:14;1315:1;:18;1295:433;;;1415:7;1423:1;1415:10;;;;;;;;;;;;;;;;;;1399:26;;1456:1;1447:5;:10;;;;:38;;;;;337:3;1461:24;;:5;:24;;;;1447:38;1439:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1603:1;1586:6;:13;1593:5;1586:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1578:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1678:5;1655:6;:20;1662:12;1655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1712:5;1697:20;;1335:3;;;;;;;1295:433;;;337:3;1737:6;:20;1744:12;1737:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1798:7;:14;1785:10;:27;;;;1834:10;1822:22;;:9;:22;;;;643:1208;;;;;:::o;735:409:6:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;550:3;902:7;:25;550:3;902:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;966:1;960:2;:7;;;;956:181;;;1061:40;1081:2;1085:4;1091:9;1061:19;:40::i;:::-;1053:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;956:181;735:409;;:::o;3830:309::-;3939:12;4121:1;4118;4111:4;4105:11;4098:4;4092;4088:15;4081:5;4077:2;4070:5;4065:58;4054:69;;4040:93;;;;;;:::o;4145:303::-;4247:12;4430:1;4427;4420:4;4414:11;4407:4;4401;4397:15;4393:2;4386:5;4373:59;4362:70;;4348:94;;;;;:::o;4454:261::-;4523:19;4693:4;4687:11;4680:4;4674;4670:15;4667:1;4660:39;4645:54;;4631:78;;;:::o", + "bytecode": "0x608060405234801561001057600080fd5b50613df2806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630d582f131461012a5780630ec78d9e14610177578063153414fa1461024d57806324cd131f146102f75780632b500041146103a15780632f54bf6e14610467578063468721a7146104c2578063610b59251461057a578063694e80c3146105bd5780637de7edef146105ea57806385e332cd1461062d5780638cff635514610684578063a09e89f5146106db578063a0e67e2b14610740578063a3f4df7e146107ac578063b2494df31461083c578063e009cfde146108a8578063e318b52b1461090b578063e52cb36a1461098e578063e75235b8146109d3578063f8dc5dd9146109fe578063ffa1ad7414610a6b575b005b34801561013657600080fd5b50610175600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610afb565b005b34801561018357600080fd5b5061024b6004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610f01565b005b34801561025957600080fd5b506102f5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610f1b565b005b34801561030357600080fd5b5061039f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050611138565b005b3480156103ad57600080fd5b50610449600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291905050506112db565b60405180826000191660001916815260200191505060405180910390f35b34801561047357600080fd5b506104a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611563565b604051808215151515815260200191505060405180910390f35b3480156104ce57600080fd5b50610560600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506115e5565b604051808215151515815260200191505060405180910390f35b34801561058657600080fd5b506105bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611711565b005b3480156105c957600080fd5b506105e860048036038101908080359060200190929190505050611aef565b005b3480156105f657600080fd5b5061062b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d01565b005b34801561063957600080fd5b50610642611ec2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561069057600080fd5b50610699611ec7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106e757600080fd5b5061072a6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ecc565b6040518082815260200191505060405180910390f35b34801561074c57600080fd5b50610755611ef1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561079857808201518184015260208101905061077d565b505050509050019250505060405180910390f35b3480156107b857600080fd5b506107c161208c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108015780820151818401526020810190506107e6565b50505050905090810190601f16801561082e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084857600080fd5b506108516120c5565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610894578082015181840152602081019050610879565b505050509050019250505060405180910390f35b3480156108b457600080fd5b50610909600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061236c565b005b34801561091757600080fd5b5061098c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612785565b005b34801561099a57600080fd5b506109bd6004803603810190808035600019169060200190929190505050612dd2565b6040518082815260200191505060405180910390f35b3480156109df57600080fd5b506109e8612dea565b6040518082815260200191505060405180910390f35b348015610a0a57600080fd5b50610a69600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612df4565b005b348015610a7757600080fd5b50610a806132d9565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ac0578082015181840152602081019050610aa5565b50505050905090810190601f168015610aed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015610c185750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515610c8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036000815480929190600101919050555080600454141515610efd57610efc81611aef565b5b5050565b610f0b8484613312565b610f1582826137d2565b50505050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561100a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420616e206f776e65720000000000000000000081525060200191505060405180910390fd5b61101786868686866112db565b90506000600560008360001916600019168152602001908152602001600020541415156110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f53616665207472616e73616374696f6e20616c7265616479206578656375746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b600061114786868686866112db565b9050600060056000836000191660001916815260200190815260200160002054141515611202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f53616665207472616e73616374696f6e20616c7265616479206578656375746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61120b81613a09565b600160056000836000191660001916815260200190815260200160002081905550611239868686865a613c87565b15156112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f7420657865637574652073616665207472616e736163746981526020017f6f6e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b60208310151561147f578051825260208201915060208101905060208303925061145a565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156114ad57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b60208310151561152b5780518252602082019150602081019050602083039250611506565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b611707858585855a613c87565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561182e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156118a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561198f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6003548111151515611c58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018110151515611cf7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060048190555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515611e7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b600181565b6006602052816000526040600020602052806000526040600020600091509150505481565b606080600080600354604051908082528060200260200182016040528015611f285781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561208357808383815181101515611fd857fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611f93565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156121d957600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050612134565b826040519080825280602002602001820160405280156122085781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515612363578181848151811015156122b857fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050612273565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156124895750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156124fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612625576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561284e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156128a25750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015612a575750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612acb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612bf3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915090505481565b6000600454905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ebd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060016003540310151515612f60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015612fb45750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515613028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613150576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036000815480929190600190039190505550806004541415156132d4576132d381611aef565b5b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600080600454141515613390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b8451841115151561342f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600184101515156134ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b845182101561373d5784828151811015156134ee57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415801561354e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156135c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156136af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080925081806001019250506134d7565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508451600381905550836004819055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156138e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515613a055761399082825a613d84565b1515613a04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b60008060008060066000866000191660001916815260200190815260200160002093506000925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515613c065760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141590503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480613b465750805b15613b9f578015613b965760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150613a94565b6004548310151515613c80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4e6f7420656e6f75676820636f6e6669726d6174696f6e73000000000000000081525060200191505060405180910390fd5b5050505050565b60008060006002811115613c9757fe5b846002811115613ca357fe5b1415613cbc57613cb587878786613d9b565b9150613d7a565b60016002811115613cc957fe5b846002811115613cd557fe5b1415613ced57613ce6878685613d84565b9150613d79565b613cf685613db4565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b60008060008451602086018786f490509392505050565b6000806000845160208601878987f19050949350505050565b60008151602083016000f090509190505600a165627a7a72305820036a0afc03b39a75ef4535ed6b885910efa5f56561fc0f07e63f7cbe5494b4c60029", + "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630d582f131461012a5780630ec78d9e14610177578063153414fa1461024d57806324cd131f146102f75780632b500041146103a15780632f54bf6e14610467578063468721a7146104c2578063610b59251461057a578063694e80c3146105bd5780637de7edef146105ea57806385e332cd1461062d5780638cff635514610684578063a09e89f5146106db578063a0e67e2b14610740578063a3f4df7e146107ac578063b2494df31461083c578063e009cfde146108a8578063e318b52b1461090b578063e52cb36a1461098e578063e75235b8146109d3578063f8dc5dd9146109fe578063ffa1ad7414610a6b575b005b34801561013657600080fd5b50610175600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610afb565b005b34801561018357600080fd5b5061024b6004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610f01565b005b34801561025957600080fd5b506102f5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610f1b565b005b34801561030357600080fd5b5061039f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050611138565b005b3480156103ad57600080fd5b50610449600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291905050506112db565b60405180826000191660001916815260200191505060405180910390f35b34801561047357600080fd5b506104a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611563565b604051808215151515815260200191505060405180910390f35b3480156104ce57600080fd5b50610560600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506115e5565b604051808215151515815260200191505060405180910390f35b34801561058657600080fd5b506105bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611711565b005b3480156105c957600080fd5b506105e860048036038101908080359060200190929190505050611aef565b005b3480156105f657600080fd5b5061062b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d01565b005b34801561063957600080fd5b50610642611ec2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561069057600080fd5b50610699611ec7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106e757600080fd5b5061072a6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ecc565b6040518082815260200191505060405180910390f35b34801561074c57600080fd5b50610755611ef1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561079857808201518184015260208101905061077d565b505050509050019250505060405180910390f35b3480156107b857600080fd5b506107c161208c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108015780820151818401526020810190506107e6565b50505050905090810190601f16801561082e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084857600080fd5b506108516120c5565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610894578082015181840152602081019050610879565b505050509050019250505060405180910390f35b3480156108b457600080fd5b50610909600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061236c565b005b34801561091757600080fd5b5061098c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612785565b005b34801561099a57600080fd5b506109bd6004803603810190808035600019169060200190929190505050612dd2565b6040518082815260200191505060405180910390f35b3480156109df57600080fd5b506109e8612dea565b6040518082815260200191505060405180910390f35b348015610a0a57600080fd5b50610a69600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612df4565b005b348015610a7757600080fd5b50610a806132d9565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ac0578082015181840152602081019050610aa5565b50505050905090810190601f168015610aed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015610c185750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515610c8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036000815480929190600101919050555080600454141515610efd57610efc81611aef565b5b5050565b610f0b8484613312565b610f1582826137d2565b50505050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561100a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420616e206f776e65720000000000000000000081525060200191505060405180910390fd5b61101786868686866112db565b90506000600560008360001916600019168152602001908152602001600020541415156110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f53616665207472616e73616374696f6e20616c7265616479206578656375746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b600061114786868686866112db565b9050600060056000836000191660001916815260200190815260200160002054141515611202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f53616665207472616e73616374696f6e20616c7265616479206578656375746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61120b81613a09565b600160056000836000191660001916815260200190815260200160002081905550611239868686865a613c87565b15156112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f7420657865637574652073616665207472616e736163746981526020017f6f6e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b60208310151561147f578051825260208201915060208101905060208303925061145a565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156114ad57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b60208310151561152b5780518252602082019150602081019050602083039250611506565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b611707858585855a613c87565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561182e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156118a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561198f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6003548111151515611c58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018110151515611cf7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060048190555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515611e7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b600181565b6006602052816000526040600020602052806000526040600020600091509150505481565b606080600080600354604051908082528060200260200182016040528015611f285781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561208357808383815181101515611fd857fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611f93565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156121d957600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050612134565b826040519080825280602002602001820160405280156122085781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515612363578181848151811015156122b857fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050612273565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156124895750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156124fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612625576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561284e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156128a25750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015612a575750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612acb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612bf3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915090505481565b6000600454905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ebd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060016003540310151515612f60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015612fb45750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515613028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613150576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036000815480929190600190039190505550806004541415156132d4576132d381611aef565b5b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600080600454141515613390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b8451841115151561342f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600184101515156134ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b845182101561373d5784828151811015156134ee57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415801561354e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156135c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156136af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080925081806001019250506134d7565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508451600381905550836004819055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156138e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515613a055761399082825a613d84565b1515613a04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b60008060008060066000866000191660001916815260200190815260200160002093506000925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515613c065760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141590503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480613b465750805b15613b9f578015613b965760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150613a94565b6004548310151515613c80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4e6f7420656e6f75676820636f6e6669726d6174696f6e73000000000000000081525060200191505060405180910390fd5b5050505050565b60008060006002811115613c9757fe5b846002811115613ca357fe5b1415613cbc57613cb587878786613d9b565b9150613d7a565b60016002811115613cc957fe5b846002811115613cd557fe5b1415613ced57613ce6878685613d84565b9150613d79565b613cf685613db4565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b60008060008451602086018786f490509392505050565b6000806000845160208601878987f19050949350505050565b60008151602083016000f090509190505600a165627a7a72305820036a0afc03b39a75ef4535ed6b885910efa5f56561fc0f07e63f7cbe5494b4c60029", + "sourceMap": "272:4068:4:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;272:4068:4;;;;;;;", + "deployedSourceMap": "272:4068:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:595:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2093:595:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;693:303:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:303:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1266:638:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1266:638:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2346:618;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2346:618:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4009:329;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4009:329:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5613:129:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5613:129:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2841:429:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2841:429:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:459;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:459:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;5087:399:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5087:399:11;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:9;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:11;;;;;;;;;;;;;;;;;;;;;;;;;;;770:66:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;770:66:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5824:458:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5824:458:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5824:458:11;;;;;;;;;;;;;;;;;336:56:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;336:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;336:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4794:738:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4794:738:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4794:738:9;;;;;;;;;;;;;;;;;2031:474;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:474:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4147:751:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4147:751:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;536:46:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;536:46:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5492:115:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5492:115:11;;;;;;;;;;;;;;;;;;;;;;;3030:783;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3030:783:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;398:40:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;398:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;398:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:595:11;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2265:1:11;2256:5;:10;;;;:38;;;;;337:3;2270:24;;:5;:24;;;;2256:38;2248:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2404:1;2387:6;:13;2394:5;2387:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2379:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2463:6;:23;337:3;2463:23;;;;;;;;;;;;;;;;;;;;;;;;;2447:6;:13;2454:5;2447:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2522:5;2496:6;:23;337:3;2496:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2537:10;;:12;;;;;;;;;;;;;2630:10;2617:9;;:23;;2613:68;;;2654:27;2670:10;2654:15;:27::i;:::-;2613:68;2093:595;;:::o;693:303:2:-;800:32;812:7;821:10;800:11;:32::i;:::-;967:22;980:2;984:4;967:12;:22::i;:::-;693:303;;;;:::o;1266:638:4:-;1605:23;1567:1;1545:6;:18;1552:10;1545:18;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;1537:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1631:53;1650:2;1654:5;1661:4;1667:9;1678:5;1631:18;:53::i;:::-;1605:79;;1805:1;1774:10;:27;1785:15;1774:27;;;;;;;;;;;;;;;;;;:32;1766:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1896:1;1854:10;:27;1865:15;1854:27;;;;;;;;;;;;;;;;;:39;1882:10;1854:39;;;;;;;;;;;;;;;:43;;;;1266:638;;;;;;:::o;2346:618::-;2540:23;2566:53;2585:2;2589:5;2596:4;2602:9;2613:5;2566:18;:53::i;:::-;2540:79;;2668:1;2637:10;:27;2648:15;2637:27;;;;;;;;;;;;;;;;;;:32;2629:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2717:43;2744:15;2717:26;:43::i;:::-;2853:1;2823:10;:27;2834:15;2823:27;;;;;;;;;;;;;;;;;:31;;;;2872:46;2880:2;2884:5;2891:4;2897:9;2908;2872:7;:46::i;:::-;2864:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2346:618;;;;;;:::o;4009:329::-;4212:7;4274:4;4269:10;;4286:1;4281:7;;4290:4;4296:2;4300:5;4307:4;4313:9;4324:5;4252:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4252:78:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4252:78:4;;;4242:89;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4242:89:4;;;;;;;;;;;;;;;;4235:96;;4009:329;;;;;;;:::o;5613:129:11:-;5690:4;5734:1;5717:6;:13;5724:5;5717:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;5710:25;;5613:129;;;:::o;2841:429:9:-;2973:12;3081:1;3058:7;:19;3066:10;3058:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;3050:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3217:46;3225:2;3229:5;3236:4;3242:9;3253;3217:7;:46::i;:::-;3207:56;;2841:429;;;;;;:::o;1311:459::-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:1:9;1466:6;1458:20;;;;:59;;;;;550:3;1482:35;;1490:6;1482:35;;;;1458:59;1450:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1631:1;1612:7;:15;1620:6;1612:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1604:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:7;:25;550:3;1694:25;;;;;;;;;;;;;;;;;;;;;;;;;1676:7;:15;1684:6;1676:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1757:6;1729:7;:25;550:3;1729:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1311:459;:::o;5087:399:11:-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5271:10:11;;5257;:24;;5249:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5405:1;5391:10;:15;;5383:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5469:10;5457:9;:22;;;;5087:399;:::o;626:248:5:-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;499:55:9:-;550:3;499:55;:::o;287:54:11:-;337:3;287:54;:::o;770:66:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5824:458:11:-;5890:9;5915:22;6009:13;6036:20;5954:10;;5940:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5940:25:11;;;;5915:50;;6025:1;6009:17;;6059:6;:23;337:3;6059:23;;;;;;;;;;;;;;;;;;;;;;;;;6036:46;;6092:162;337:3;6098:31;;:12;:31;;;;6092:162;;;6160:12;6145:5;6151;6145:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;6201:6;:20;6208:12;6201:20;;;;;;;;;;;;;;;;;;;;;;;;;6186:35;;6235:8;;;;;;;6092:162;;;6270:5;6263:12;;5824:458;;;;:::o;336:56:4:-;;;;;;;;;;;;;;;;;;;;:::o;4794:738:9:-;4861:9;4920:19;4953:21;5153:22;4942:1;4920:23;;4977:7;:25;550:3;4977:25;;;;;;;;;;;;;;;;;;;;;;;;;4953:49;;5012:132;550:3;5018:33;;:13;:33;;;;5012:132;;;5083:7;:22;5091:13;5083:22;;;;;;;;;;;;;;;;;;;;;;;;;5067:38;;5119:14;;;;;;;5012:132;;;5192:11;5178:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5178:26:9;;;;5153:51;;5262:1;5248:15;;5289:7;:25;550:3;5289:25;;;;;;;;;;;;;;;;;;;;;;;;;5273:41;;5324:180;550:3;5330:33;;:13;:33;;;;5324:180;;;5400:13;5379:5;5385:11;5379:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5443:7;:22;5451:13;5443:22;;;;;;;;;;;;;;;;;;;;;;;;;5427:38;;5479:14;;;;;;;5324:180;;;5520:5;5513:12;;4794:738;;;;:::o;2031:474::-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:1:9;2234:6;2226:20;;;;:59;;;;;550:3;2250:35;;2258:6;2250:35;;;;2226:59;2218:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2370:6;2339:38;;:7;:19;2347:10;2339:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2331:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2454:7;:15;2462:6;2454:15;;;;;;;;;;;;;;;;;;;;;;;;;2432:7;:19;2440:10;2432:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2497:1;2479:7;:15;2487:6;2479:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;2031:474;;:::o;4147:751:11:-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4330:1:11;4318:8;:13;;;;:44;;;;;337:3;4335:27;;:8;:27;;;;4318:44;4310:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4475:1;4455:6;:16;4462:8;4455:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;4447:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4621:1;4609:8;:13;;;;:44;;;;;337:3;4626:27;;:8;:27;;;;4609:44;4601:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4727:8;4706:29;;:6;:17;4713:9;4706:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4698:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4807:6;:16;4814:8;4807:16;;;;;;;;;;;;;;;;;;;;;;;;;4788:6;:16;4795:8;4788:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4853:8;4833:6;:17;4840:9;4833:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4890:1;4871:6;:16;4878:8;4871:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4147:751;;;:::o;536:46:4:-;;;;;;;;;;;;;;;;;:::o;5492:115:11:-;5561:7;5591:9;;5584:16;;5492:115;:::o;3030:783::-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3256:10:11;3251:1;3238:10;;:14;:28;;3230:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3431:1;3422:5;:10;;;;:38;;;;;337:3;3436:24;;:5;:24;;;;3422:38;3414:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:5;3513:26;;:6;:17;3520:9;3513:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3505:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:6;:13;3619:5;3612:13;;;;;;;;;;;;;;;;;;;;;;;;;3592:6;:17;3599:9;3592:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3651:1;3635:6;:13;3642:5;3635:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3662:10;;:12;;;;;;;;;;;;;;3755:10;3742:9;;:23;;3738:68;;;3779:27;3795:10;3779:15;:27::i;:::-;3738:68;3030:783;;;:::o;398:40:4:-;;;;;;;;;;;;;;;;;;;;:::o;643:1210:11:-;1249:20;1302:9;1401:13;879:1;866:9;;:14;858:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1022:7;:14;1008:10;:28;;1000:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1160:1;1146:10;:15;;1138:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;337:3;1249:38;;1314:1;1302:13;;1297:433;1321:7;:14;1317:1;:18;1297:433;;;1417:7;1425:1;1417:10;;;;;;;;;;;;;;;;;;1401:26;;1458:1;1449:5;:10;;;;:38;;;;;337:3;1463:24;;:5;:24;;;;1449:38;1441:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1605:1;1588:6;:13;1595:5;1588:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1580:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1680:5;1657:6;:20;1664:12;1657:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1714:5;1699:20;;1337:3;;;;;;;1297:433;;;337:3;1739:6;:20;1746:12;1739:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1800:7;:14;1787:10;:27;;;;1836:10;1824:9;:22;;;;643:1210;;;;;:::o;735:409:9:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;550:3;902:7;:25;550:3;902:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;966:1;960:2;:7;;;;956:181;;;1061:40;1081:2;1085:4;1091:9;1061:19;:40::i;:::-;1053:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;956:181;735:409;;:::o;2970:761:4:-;3062:37;3139:21;3216:20;3326:19;3102:10;:27;3113:15;3102:27;;;;;;;;;;;;;;;;;3062:67;;3163:1;3139:25;;3239:6;:23;337:3:11;3239:23:4;;;;;;;;;;;;;;;;;;;;;;;;;3216:46;;3272:380;337:3:11;3279:31:4;;:12;:31;;;;3272:380;;;3375:1;3348:9;:23;3358:12;3348:23;;;;;;;;;;;;;;;;:28;;3326:50;;3409:10;3393:26;;:12;:26;;;:44;;;;3423:14;3393:44;3390:203;;;3461:14;3457:88;;;3525:1;3499:9;:23;3509:12;3499:23;;;;;;;;;;;;;;;:27;;;;3457:88;3562:16;;;;;;;3390:203;3621:6;:20;3628:12;3621:20;;;;;;;;;;;;;;;;;;;;;;;;;3606:35;;3272:380;;;3686:9;;3669:13;:26;;3661:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2970:761;;;;;:::o;3276:548:9:-;3407:12;3678:19;3452;3439:32;;;;;;;;:9;:32;;;;;;;;;3435:383;;;3495:35;3507:2;3511:5;3518:4;3524:5;3495:11;:35::i;:::-;3485:45;;3435:383;;;3562:27;3549:40;;;;;;;;:9;:40;;;;;;;;;3545:273;;;3613:36;3633:2;3637:4;3643:5;3613:19;:36::i;:::-;3603:46;;3545:273;;;3700:19;3714:4;3700:13;:19::i;:::-;3678:41;;3758:1;3743:11;:16;;;;3733:26;;3778:29;3795:11;3778:29;;;;;;;;;;;;;;;;;;;;;;3545:273;3435:383;3276:548;;;;;;;;:::o;4145:303::-;4247:12;4430:1;4427;4420:4;4414:11;4407:4;4401;4397:15;4393:2;4386:5;4373:59;4362:70;;4348:94;;;;;:::o;3830:309::-;3939:12;4121:1;4118;4111:4;4105:11;4098:4;4092;4088:15;4081:5;4077:2;4070:5;4065:58;4054:69;;4040:93;;;;;;:::o;4454:261::-;4523:19;4693:4;4687:11;4680:4;4674;4670:15;4667:1;4660:39;4645:54;;4631:78;;;:::o", "source": "pragma solidity 0.4.24;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract GnosisSafeTeamEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Team Edition\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => uint256) public isExecuted;\n\n // isApproved mapping allows to check if a transaction (by hash) was confirmed by an owner.\n // uint256 is used to optimize the generated assembly. if 0 then false else true\n mapping (bytes32 => mapping(address => uint256)) public isApproved;\n\n /// @dev Allows to confirm a Safe transaction with a regular transaction.\n /// This can only be done from an owner address.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function approveTransactionWithParameters(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n // Only Safe owners are allowed to confirm Safe transactions.\n require(owners[msg.sender] != 0, \"Sender is not an owner\");\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // It should not be possible to confirm an executed transaction\n require(isExecuted[transactionHash] == 0, \"Safe transaction already executed\");\n isApproved[transactionHash][msg.sender] = 1;\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function execTransactionIfApproved(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(isExecuted[transactionHash] == 0, \"Safe transaction already executed\");\n checkAndClearConfirmations(transactionHash);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = 1;\n require(execute(to, value, data, operation, gasleft()), \"Could not execute safe transaction\");\n }\n\n function checkAndClearConfirmations(bytes32 transactionHash)\n internal\n {\n mapping(address => uint256) approvals = isApproved[transactionHash];\n uint256 confirmations = 0;\n // Validate threshold is reached.\n address currentOwner = owners[SENTINEL_OWNERS];\n while (currentOwner != SENTINEL_OWNERS) {\n bool ownerConfirmed = approvals[currentOwner] != 0;\n if(currentOwner == msg.sender || ownerConfirmed) {\n if (ownerConfirmed) {\n approvals[currentOwner] = 0;\n }\n confirmations ++;\n }\n currentOwner = owners[currentOwner];\n }\n require(confirmations >= threshold, \"Not enough confirmations\");\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, nonce));\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", "exportedSymbols": { "GnosisSafeTeamEdition": [ - 581 + 605 ] }, - "id": 582, + "id": 606, "nodeType": "SourceUnit", "nodes": [ { - "id": 347, + "id": 371, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:3" + "src": "0:23:4" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 348, + "id": 372, "nodeType": "ImportDirective", - "scope": 582, - "sourceUnit": 40, - "src": "24:26:3", + "scope": 606, + "sourceUnit": 64, + "src": "24:26:4", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 349, + "id": 373, "nodeType": "ImportDirective", - "scope": 582, - "sourceUnit": 609, - "src": "51:26:3", + "scope": 606, + "sourceUnit": 633, + "src": "51:26:4", "symbolAliases": [], "unitAlias": "" }, @@ -506,68 +506,68 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 350, + "id": 374, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 608, - "src": "306:10:3", + "referencedDeclaration": 632, + "src": "306:10:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$608", + "typeIdentifier": "t_contract$_MasterCopy_$632", "typeString": "contract MasterCopy" } }, - "id": 351, + "id": 375, "nodeType": "InheritanceSpecifier", - "src": "306:10:3" + "src": "306:10:4" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 352, + "id": 376, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 39, - "src": "318:10:3", + "referencedDeclaration": 63, + "src": "318:10:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$39", + "typeIdentifier": "t_contract$_GnosisSafe_$63", "typeString": "contract GnosisSafe" } }, - "id": 353, + "id": 377, "nodeType": "InheritanceSpecifier", - "src": "318:10:3" + "src": "318:10:4" } ], "contractDependencies": [ - 39, - 608, - 1022, - 1432, - 1449 + 63, + 632, + 2232, + 2888, + 3065 ], "contractKind": "contract", "documentation": "@title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 581, + "id": 605, "linearizedBaseContracts": [ - 581, - 39, - 1432, - 1022, - 608, - 1449 + 605, + 63, + 2888, + 2232, + 632, + 3065 ], "name": "GnosisSafeTeamEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 356, + "id": 380, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 581, - "src": "336:56:3", + "scope": 605, + "src": "336:56:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -575,10 +575,10 @@ "typeString": "string" }, "typeName": { - "id": 354, + "id": 378, "name": "string", "nodeType": "ElementaryTypeName", - "src": "336:6:3", + "src": "336:6:4", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -587,14 +587,14 @@ "value": { "argumentTypes": null, "hexValue": "476e6f7369732053616665205465616d2045646974696f6e", - "id": 355, + "id": 379, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "366:26:3", + "src": "366:26:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_69b1cb372bb47730ba653a0e87363aa6de8337d13ed5852e6fe3ba4e2004a81e", @@ -606,11 +606,11 @@ }, { "constant": true, - "id": 359, + "id": 383, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 581, - "src": "398:40:3", + "scope": 605, + "src": "398:40:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -618,10 +618,10 @@ "typeString": "string" }, "typeName": { - "id": 357, + "id": 381, "name": "string", "nodeType": "ElementaryTypeName", - "src": "398:6:3", + "src": "398:6:4", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -630,14 +630,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 358, + "id": 382, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "431:7:3", + "src": "431:7:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -649,11 +649,11 @@ }, { "constant": false, - "id": 363, + "id": 387, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 581, - "src": "536:46:3", + "scope": 605, + "src": "536:46:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -661,28 +661,28 @@ "typeString": "mapping(bytes32 => uint256)" }, "typeName": { - "id": 362, + "id": 386, "keyType": { - "id": 360, + "id": 384, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "545:7:3", + "src": "545:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "536:28:3", + "src": "536:28:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" }, "valueType": { - "id": 361, + "id": 385, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "556:7:3", + "src": "556:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -694,11 +694,11 @@ }, { "constant": false, - "id": 369, + "id": 393, "name": "isApproved", "nodeType": "VariableDeclaration", - "scope": 581, - "src": "770:66:3", + "scope": 605, + "src": "770:66:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -706,46 +706,46 @@ "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "typeName": { - "id": 368, + "id": 392, "keyType": { - "id": 364, + "id": 388, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "779:7:3", + "src": "779:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "770:48:3", + "src": "770:48:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "valueType": { - "id": 367, + "id": 391, "keyType": { - "id": 365, + "id": 389, "name": "address", "nodeType": "ElementaryTypeName", - "src": "798:7:3", + "src": "798:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "790:27:3", + "src": "790:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 366, + "id": 390, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "809:7:3", + "src": "809:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -758,9 +758,9 @@ }, { "body": { - "id": 420, + "id": 444, "nodeType": "Block", - "src": "1457:447:3", + "src": "1457:447:4", "statements": [ { "expression": { @@ -772,7 +772,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 388, + "id": 412, "isConstant": false, "isLValue": false, "isPure": false, @@ -781,34 +781,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 383, + "id": 407, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "1545:6:3", + "referencedDeclaration": 2494, + "src": "1545:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 386, + "id": 410, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 384, + "id": 408, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1773, - "src": "1552:3:3", + "referencedDeclaration": 4036, + "src": "1552:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 385, + "id": 409, "isConstant": false, "isLValue": false, "isPure": false, @@ -816,7 +816,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1552:10:3", + "src": "1552:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -827,7 +827,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1545:18:3", + "src": "1545:18:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -838,14 +838,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 387, + "id": 411, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1567:1:3", + "src": "1567:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -853,7 +853,7 @@ }, "value": "0" }, - "src": "1545:23:3", + "src": "1545:23:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -862,14 +862,14 @@ { "argumentTypes": null, "hexValue": "53656e646572206973206e6f7420616e206f776e6572", - "id": 389, + "id": 413, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1570:24:3", + "src": "1570:24:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b22a5f47ffb62866097c90f90b5b53f76973769c84a10c62e12a07eb2ba1ef4a", @@ -889,21 +889,21 @@ "typeString": "literal_string \"Sender is not an owner\"" } ], - "id": 382, + "id": 406, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1537:7:3", + "referencedDeclaration": 4040, + "src": "1537:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 390, + "id": 414, "isConstant": false, "isLValue": false, "isPure": false, @@ -911,28 +911,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1537:58:3", + "src": "1537:58:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 391, + "id": 415, "nodeType": "ExpressionStatement", - "src": "1537:58:3" + "src": "1537:58:4" }, { "assignments": [ - 393 + 417 ], "declarations": [ { "constant": false, - "id": 393, + "id": 417, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 421, - "src": "1605:23:3", + "scope": 445, + "src": "1605:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -940,10 +940,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 392, + "id": 416, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1605:7:3", + "src": "1605:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -953,18 +953,18 @@ "visibility": "internal" } ], - "id": 401, + "id": 425, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 395, + "id": 419, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 371, - "src": "1650:2:3", + "referencedDeclaration": 395, + "src": "1650:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -972,12 +972,12 @@ }, { "argumentTypes": null, - "id": 396, + "id": 420, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 373, - "src": "1654:5:3", + "referencedDeclaration": 397, + "src": "1654:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -985,12 +985,12 @@ }, { "argumentTypes": null, - "id": 397, + "id": 421, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 375, - "src": "1661:4:3", + "referencedDeclaration": 399, + "src": "1661:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -998,25 +998,25 @@ }, { "argumentTypes": null, - "id": 398, + "id": 422, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 377, - "src": "1667:9:3", + "referencedDeclaration": 401, + "src": "1667:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 399, + "id": 423, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 379, - "src": "1678:5:3", + "referencedDeclaration": 403, + "src": "1678:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1038,7 +1038,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -1046,18 +1046,18 @@ "typeString": "uint256" } ], - "id": 394, + "id": 418, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 580, - "src": "1631:18:3", + "referencedDeclaration": 604, + "src": "1631:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 400, + "id": 424, "isConstant": false, "isLValue": false, "isPure": false, @@ -1065,14 +1065,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1631:53:3", + "src": "1631:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "1605:79:3" + "src": "1605:79:4" }, { "expression": { @@ -1084,7 +1084,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 407, + "id": 431, "isConstant": false, "isLValue": false, "isPure": false, @@ -1093,26 +1093,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 403, + "id": 427, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 363, - "src": "1774:10:3", + "referencedDeclaration": 387, + "src": "1774:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" } }, - "id": 405, + "id": 429, "indexExpression": { "argumentTypes": null, - "id": 404, + "id": 428, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 393, - "src": "1785:15:3", + "referencedDeclaration": 417, + "src": "1785:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1123,7 +1123,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1774:27:3", + "src": "1774:27:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1134,14 +1134,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 406, + "id": 430, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1805:1:3", + "src": "1805:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1149,7 +1149,7 @@ }, "value": "0" }, - "src": "1774:32:3", + "src": "1774:32:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1158,14 +1158,14 @@ { "argumentTypes": null, "hexValue": "53616665207472616e73616374696f6e20616c7265616479206578656375746564", - "id": 408, + "id": 432, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1808:35:3", + "src": "1808:35:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", @@ -1185,21 +1185,21 @@ "typeString": "literal_string \"Safe transaction already executed\"" } ], - "id": 402, + "id": 426, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1766:7:3", + "referencedDeclaration": 4040, + "src": "1766:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 409, + "id": 433, "isConstant": false, "isLValue": false, "isPure": false, @@ -1207,20 +1207,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1766:78:3", + "src": "1766:78:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 410, + "id": 434, "nodeType": "ExpressionStatement", - "src": "1766:78:3" + "src": "1766:78:4" }, { "expression": { "argumentTypes": null, - "id": 418, + "id": 442, "isConstant": false, "isLValue": false, "isPure": false, @@ -1231,26 +1231,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 411, + "id": 435, "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 369, - "src": "1854:10:3", + "referencedDeclaration": 393, + "src": "1854:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(bytes32 => mapping(address => uint256))" } }, - "id": 415, + "id": 439, "indexExpression": { "argumentTypes": null, - "id": 412, + "id": 436, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 393, - "src": "1865:15:3", + "referencedDeclaration": 417, + "src": "1865:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1261,29 +1261,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1854:27:3", + "src": "1854:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 416, + "id": 440, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 413, + "id": 437, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1773, - "src": "1882:3:3", + "referencedDeclaration": 4036, + "src": "1882:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 414, + "id": 438, "isConstant": false, "isLValue": false, "isPure": false, @@ -1291,7 +1291,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1882:10:3", + "src": "1882:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1302,7 +1302,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1854:39:3", + "src": "1854:39:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1313,14 +1313,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 417, + "id": 441, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1896:1:3", + "src": "1896:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -1328,20 +1328,20 @@ }, "value": "1" }, - "src": "1854:43:3", + "src": "1854:43:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 419, + "id": 443, "nodeType": "ExpressionStatement", - "src": "1854:43:3" + "src": "1854:43:4" } ] }, "documentation": "@dev Allows to confirm a Safe transaction with a regular transaction.\n This can only be done from an owner address.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 421, + "id": 445, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1349,16 +1349,16 @@ "name": "approveTransactionWithParameters", "nodeType": "FunctionDefinition", "parameters": { - "id": 380, + "id": 404, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 371, + "id": 395, "name": "to", "nodeType": "VariableDeclaration", - "scope": 421, - "src": "1317:10:3", + "scope": 445, + "src": "1317:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1366,10 +1366,10 @@ "typeString": "address" }, "typeName": { - "id": 370, + "id": 394, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1317:7:3", + "src": "1317:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1380,11 +1380,11 @@ }, { "constant": false, - "id": 373, + "id": 397, "name": "value", "nodeType": "VariableDeclaration", - "scope": 421, - "src": "1338:13:3", + "scope": 445, + "src": "1338:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1392,10 +1392,10 @@ "typeString": "uint256" }, "typeName": { - "id": 372, + "id": 396, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1338:7:3", + "src": "1338:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1406,11 +1406,11 @@ }, { "constant": false, - "id": 375, + "id": 399, "name": "data", "nodeType": "VariableDeclaration", - "scope": 421, - "src": "1362:10:3", + "scope": 445, + "src": "1362:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1418,10 +1418,10 @@ "typeString": "bytes" }, "typeName": { - "id": 374, + "id": 398, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1362:5:3", + "src": "1362:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1432,26 +1432,26 @@ }, { "constant": false, - "id": 377, + "id": 401, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 421, - "src": "1383:24:3", + "scope": 445, + "src": "1383:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 376, + "id": 400, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "1383:14:3", + "referencedDeclaration": 29, + "src": "1383:14:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -1460,11 +1460,11 @@ }, { "constant": false, - "id": 379, + "id": 403, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 421, - "src": "1418:13:3", + "scope": 445, + "src": "1418:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1472,10 +1472,10 @@ "typeString": "uint256" }, "typeName": { - "id": 378, + "id": 402, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1418:7:3", + "src": "1418:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1485,39 +1485,39 @@ "visibility": "internal" } ], - "src": "1307:130:3" + "src": "1307:130:4" }, "payable": false, "returnParameters": { - "id": 381, + "id": 405, "nodeType": "ParameterList", "parameters": [], - "src": "1457:0:3" + "src": "1457:0:4" }, - "scope": 581, - "src": "1266:638:3", + "scope": 605, + "src": "1266:638:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 475, + "id": 499, "nodeType": "Block", - "src": "2530:434:3", + "src": "2530:434:4", "statements": [ { "assignments": [ - 435 + 459 ], "declarations": [ { "constant": false, - "id": 435, + "id": 459, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 476, - "src": "2540:23:3", + "scope": 500, + "src": "2540:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1525,10 +1525,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 434, + "id": 458, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2540:7:3", + "src": "2540:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1538,18 +1538,18 @@ "visibility": "internal" } ], - "id": 443, + "id": 467, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 437, + "id": 461, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 423, - "src": "2585:2:3", + "referencedDeclaration": 447, + "src": "2585:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1557,12 +1557,12 @@ }, { "argumentTypes": null, - "id": 438, + "id": 462, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 425, - "src": "2589:5:3", + "referencedDeclaration": 449, + "src": "2589:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1570,12 +1570,12 @@ }, { "argumentTypes": null, - "id": 439, + "id": 463, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 427, - "src": "2596:4:3", + "referencedDeclaration": 451, + "src": "2596:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1583,25 +1583,25 @@ }, { "argumentTypes": null, - "id": 440, + "id": 464, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 429, - "src": "2602:9:3", + "referencedDeclaration": 453, + "src": "2602:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 441, + "id": 465, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 431, - "src": "2613:5:3", + "referencedDeclaration": 455, + "src": "2613:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1623,7 +1623,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -1631,18 +1631,18 @@ "typeString": "uint256" } ], - "id": 436, + "id": 460, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 580, - "src": "2566:18:3", + "referencedDeclaration": 604, + "src": "2566:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 442, + "id": 466, "isConstant": false, "isLValue": false, "isPure": false, @@ -1650,14 +1650,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2566:53:3", + "src": "2566:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2540:79:3" + "src": "2540:79:4" }, { "expression": { @@ -1669,7 +1669,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 449, + "id": 473, "isConstant": false, "isLValue": false, "isPure": false, @@ -1678,26 +1678,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 445, + "id": 469, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 363, - "src": "2637:10:3", + "referencedDeclaration": 387, + "src": "2637:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" } }, - "id": 447, + "id": 471, "indexExpression": { "argumentTypes": null, - "id": 446, + "id": 470, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 435, - "src": "2648:15:3", + "referencedDeclaration": 459, + "src": "2648:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1708,7 +1708,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2637:27:3", + "src": "2637:27:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1719,14 +1719,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 448, + "id": 472, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2668:1:3", + "src": "2668:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1734,7 +1734,7 @@ }, "value": "0" }, - "src": "2637:32:3", + "src": "2637:32:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1743,14 +1743,14 @@ { "argumentTypes": null, "hexValue": "53616665207472616e73616374696f6e20616c7265616479206578656375746564", - "id": 450, + "id": 474, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2671:35:3", + "src": "2671:35:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", @@ -1770,21 +1770,21 @@ "typeString": "literal_string \"Safe transaction already executed\"" } ], - "id": 444, + "id": 468, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2629:7:3", + "referencedDeclaration": 4040, + "src": "2629:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 451, + "id": 475, "isConstant": false, "isLValue": false, "isPure": false, @@ -1792,15 +1792,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2629:78:3", + "src": "2629:78:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 452, + "id": 476, "nodeType": "ExpressionStatement", - "src": "2629:78:3" + "src": "2629:78:4" }, { "expression": { @@ -1808,12 +1808,12 @@ "arguments": [ { "argumentTypes": null, - "id": 454, + "id": 478, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 435, - "src": "2744:15:3", + "referencedDeclaration": 459, + "src": "2744:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1827,18 +1827,18 @@ "typeString": "bytes32" } ], - "id": 453, + "id": 477, "name": "checkAndClearConfirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 546, - "src": "2717:26:3", + "referencedDeclaration": 570, + "src": "2717:26:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", "typeString": "function (bytes32)" } }, - "id": 455, + "id": 479, "isConstant": false, "isLValue": false, "isPure": false, @@ -1846,20 +1846,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2717:43:3", + "src": "2717:43:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 456, + "id": 480, "nodeType": "ExpressionStatement", - "src": "2717:43:3" + "src": "2717:43:4" }, { "expression": { "argumentTypes": null, - "id": 461, + "id": 485, "isConstant": false, "isLValue": false, "isPure": false, @@ -1868,26 +1868,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 457, + "id": 481, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 363, - "src": "2823:10:3", + "referencedDeclaration": 387, + "src": "2823:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" } }, - "id": 459, + "id": 483, "indexExpression": { "argumentTypes": null, - "id": 458, + "id": 482, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 435, - "src": "2834:15:3", + "referencedDeclaration": 459, + "src": "2834:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1898,7 +1898,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2823:27:3", + "src": "2823:27:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1909,14 +1909,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 460, + "id": 484, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2853:1:3", + "src": "2853:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -1924,15 +1924,15 @@ }, "value": "1" }, - "src": "2823:31:3", + "src": "2823:31:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 462, + "id": 486, "nodeType": "ExpressionStatement", - "src": "2823:31:3" + "src": "2823:31:4" }, { "expression": { @@ -1943,12 +1943,12 @@ "arguments": [ { "argumentTypes": null, - "id": 465, + "id": 489, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 423, - "src": "2880:2:3", + "referencedDeclaration": 447, + "src": "2880:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1956,12 +1956,12 @@ }, { "argumentTypes": null, - "id": 466, + "id": 490, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 425, - "src": "2884:5:3", + "referencedDeclaration": 449, + "src": "2884:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1969,12 +1969,12 @@ }, { "argumentTypes": null, - "id": 467, + "id": 491, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 427, - "src": "2891:4:3", + "referencedDeclaration": 451, + "src": "2891:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1982,14 +1982,14 @@ }, { "argumentTypes": null, - "id": 468, + "id": 492, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 429, - "src": "2897:9:3", + "referencedDeclaration": 453, + "src": "2897:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -1998,18 +1998,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 469, + "id": 493, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1766, - "src": "2908:7:3", + "referencedDeclaration": 4029, + "src": "2908:7:4", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 470, + "id": 494, "isConstant": false, "isLValue": false, "isPure": false, @@ -2017,7 +2017,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2908:9:3", + "src": "2908:9:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2039,7 +2039,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -2047,18 +2047,18 @@ "typeString": "uint256" } ], - "id": 464, + "id": 488, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "2872:7:3", + "referencedDeclaration": 2121, + "src": "2872:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 471, + "id": 495, "isConstant": false, "isLValue": false, "isPure": false, @@ -2066,7 +2066,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2872:46:3", + "src": "2872:46:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2075,14 +2075,14 @@ { "argumentTypes": null, "hexValue": "436f756c64206e6f7420657865637574652073616665207472616e73616374696f6e", - "id": 472, + "id": 496, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2920:36:3", + "src": "2920:36:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_d12b254798790cac45e0b54201b0ecf8f3257f9e4c1cfc4633e272006616c878", @@ -2102,21 +2102,21 @@ "typeString": "literal_string \"Could not execute safe transaction\"" } ], - "id": 463, + "id": 487, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2864:7:3", + "referencedDeclaration": 4040, + "src": "2864:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 473, + "id": 497, "isConstant": false, "isLValue": false, "isPure": false, @@ -2124,20 +2124,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2864:93:3", + "src": "2864:93:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 474, + "id": 498, "nodeType": "ExpressionStatement", - "src": "2864:93:3" + "src": "2864:93:4" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 476, + "id": 500, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2145,16 +2145,16 @@ "name": "execTransactionIfApproved", "nodeType": "FunctionDefinition", "parameters": { - "id": 432, + "id": 456, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 423, + "id": 447, "name": "to", "nodeType": "VariableDeclaration", - "scope": 476, - "src": "2390:10:3", + "scope": 500, + "src": "2390:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2162,10 +2162,10 @@ "typeString": "address" }, "typeName": { - "id": 422, + "id": 446, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2390:7:3", + "src": "2390:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2176,11 +2176,11 @@ }, { "constant": false, - "id": 425, + "id": 449, "name": "value", "nodeType": "VariableDeclaration", - "scope": 476, - "src": "2411:13:3", + "scope": 500, + "src": "2411:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2188,10 +2188,10 @@ "typeString": "uint256" }, "typeName": { - "id": 424, + "id": 448, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2411:7:3", + "src": "2411:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2202,11 +2202,11 @@ }, { "constant": false, - "id": 427, + "id": 451, "name": "data", "nodeType": "VariableDeclaration", - "scope": 476, - "src": "2435:10:3", + "scope": 500, + "src": "2435:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2214,10 +2214,10 @@ "typeString": "bytes" }, "typeName": { - "id": 426, + "id": 450, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2435:5:3", + "src": "2435:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2228,26 +2228,26 @@ }, { "constant": false, - "id": 429, + "id": 453, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 476, - "src": "2456:24:3", + "scope": 500, + "src": "2456:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 428, + "id": 452, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2456:14:3", + "referencedDeclaration": 29, + "src": "2456:14:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2256,11 +2256,11 @@ }, { "constant": false, - "id": 431, + "id": 455, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 476, - "src": "2491:13:3", + "scope": 500, + "src": "2491:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2268,10 +2268,10 @@ "typeString": "uint256" }, "typeName": { - "id": 430, + "id": 454, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2491:7:3", + "src": "2491:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2281,39 +2281,39 @@ "visibility": "internal" } ], - "src": "2380:130:3" + "src": "2380:130:4" }, "payable": false, "returnParameters": { - "id": 433, + "id": 457, "nodeType": "ParameterList", "parameters": [], - "src": "2530:0:3" + "src": "2530:0:4" }, - "scope": 581, - "src": "2346:618:3", + "scope": 605, + "src": "2346:618:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 545, + "id": 569, "nodeType": "Block", - "src": "3052:679:3", + "src": "3052:679:4", "statements": [ { "assignments": [ - 484 + 508 ], "declarations": [ { "constant": false, - "id": 484, + "id": 508, "name": "approvals", "nodeType": "VariableDeclaration", - "scope": 546, - "src": "3062:37:3", + "scope": 570, + "src": "3062:37:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2321,28 +2321,28 @@ "typeString": "mapping(address => uint256)" }, "typeName": { - "id": 483, + "id": 507, "keyType": { - "id": 481, + "id": 505, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3070:7:3", + "src": "3070:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "3062:27:3", + "src": "3062:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 482, + "id": 506, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3081:7:3", + "src": "3081:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2353,31 +2353,31 @@ "visibility": "internal" } ], - "id": 488, + "id": 512, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 485, + "id": 509, "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 369, - "src": "3102:10:3", + "referencedDeclaration": 393, + "src": "3102:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(bytes32 => mapping(address => uint256))" } }, - "id": 487, + "id": 511, "indexExpression": { "argumentTypes": null, - "id": 486, + "id": 510, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "3113:15:3", + "referencedDeclaration": 502, + "src": "3113:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2388,27 +2388,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3102:27:3", + "src": "3102:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "nodeType": "VariableDeclarationStatement", - "src": "3062:67:3" + "src": "3062:67:4" }, { "assignments": [ - 490 + 514 ], "declarations": [ { "constant": false, - "id": 490, + "id": 514, "name": "confirmations", "nodeType": "VariableDeclaration", - "scope": 546, - "src": "3139:21:3", + "scope": 570, + "src": "3139:21:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2416,10 +2416,10 @@ "typeString": "uint256" }, "typeName": { - "id": 489, + "id": 513, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3139:7:3", + "src": "3139:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2429,18 +2429,18 @@ "visibility": "internal" } ], - "id": 492, + "id": 516, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 491, + "id": 515, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3163:1:3", + "src": "3163:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2449,20 +2449,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3139:25:3" + "src": "3139:25:4" }, { "assignments": [ - 494 + 518 ], "declarations": [ { "constant": false, - "id": 494, + "id": 518, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 546, - "src": "3216:20:3", + "scope": 570, + "src": "3216:20:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2470,10 +2470,10 @@ "typeString": "address" }, "typeName": { - "id": 493, + "id": 517, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3216:7:3", + "src": "3216:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2483,31 +2483,31 @@ "visibility": "internal" } ], - "id": 498, + "id": 522, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 495, + "id": 519, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "3239:6:3", + "referencedDeclaration": 2494, + "src": "3239:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 497, + "id": 521, "indexExpression": { "argumentTypes": null, - "id": 496, + "id": 520, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "3246:15:3", + "referencedDeclaration": 2490, + "src": "3246:15:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2518,33 +2518,33 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3239:23:3", + "src": "3239:23:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3216:46:3" + "src": "3216:46:4" }, { "body": { - "id": 536, + "id": 560, "nodeType": "Block", - "src": "3312:340:3", + "src": "3312:340:4", "statements": [ { "assignments": [ - 503 + 527 ], "declarations": [ { "constant": false, - "id": 503, + "id": 527, "name": "ownerConfirmed", "nodeType": "VariableDeclaration", - "scope": 546, - "src": "3326:19:3", + "scope": 570, + "src": "3326:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2552,10 +2552,10 @@ "typeString": "bool" }, "typeName": { - "id": 502, + "id": 526, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3326:4:3", + "src": "3326:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2565,14 +2565,14 @@ "visibility": "internal" } ], - "id": 509, + "id": 533, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 508, + "id": 532, "isConstant": false, "isLValue": false, "isPure": false, @@ -2581,26 +2581,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 504, + "id": 528, "name": "approvals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "3348:9:3", + "referencedDeclaration": 508, + "src": "3348:9:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 506, + "id": 530, "indexExpression": { "argumentTypes": null, - "id": 505, + "id": 529, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 494, - "src": "3358:12:3", + "referencedDeclaration": 518, + "src": "3358:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2611,7 +2611,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3348:23:3", + "src": "3348:23:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2622,14 +2622,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 507, + "id": 531, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3375:1:3", + "src": "3375:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2637,14 +2637,14 @@ }, "value": "0" }, - "src": "3348:28:3", + "src": "3348:28:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "3326:50:3" + "src": "3326:50:4" }, { "condition": { @@ -2653,7 +2653,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 515, + "id": 539, "isConstant": false, "isLValue": false, "isPure": false, @@ -2664,19 +2664,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 513, + "id": 537, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 510, + "id": 534, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 494, - "src": "3393:12:3", + "referencedDeclaration": 518, + "src": "3393:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2688,18 +2688,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 511, + "id": 535, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1773, - "src": "3409:3:3", + "referencedDeclaration": 4036, + "src": "3409:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 512, + "id": 536, "isConstant": false, "isLValue": false, "isPure": false, @@ -2707,13 +2707,13 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3409:10:3", + "src": "3409:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3393:26:3", + "src": "3393:26:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2723,59 +2723,59 @@ "operator": "||", "rightExpression": { "argumentTypes": null, - "id": 514, + "id": 538, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 503, - "src": "3423:14:3", + "referencedDeclaration": 527, + "src": "3423:14:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3393:44:3", + "src": "3393:44:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 529, + "id": 553, "nodeType": "IfStatement", - "src": "3390:203:3", + "src": "3390:203:4", "trueBody": { - "id": 528, + "id": 552, "nodeType": "Block", - "src": "3439:154:3", + "src": "3439:154:4", "statements": [ { "condition": { "argumentTypes": null, - "id": 516, + "id": 540, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 503, - "src": "3461:14:3", + "referencedDeclaration": 527, + "src": "3461:14:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 524, + "id": 548, "nodeType": "IfStatement", - "src": "3457:88:3", + "src": "3457:88:4", "trueBody": { - "id": 523, + "id": 547, "nodeType": "Block", - "src": "3477:68:3", + "src": "3477:68:4", "statements": [ { "expression": { "argumentTypes": null, - "id": 521, + "id": 545, "isConstant": false, "isLValue": false, "isPure": false, @@ -2784,26 +2784,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 517, + "id": 541, "name": "approvals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "3499:9:3", + "referencedDeclaration": 508, + "src": "3499:9:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 519, + "id": 543, "indexExpression": { "argumentTypes": null, - "id": 518, + "id": 542, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 494, - "src": "3509:12:3", + "referencedDeclaration": 518, + "src": "3509:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2814,7 +2814,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3499:23:3", + "src": "3499:23:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2825,14 +2825,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 520, + "id": 544, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3525:1:3", + "src": "3525:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2840,15 +2840,15 @@ }, "value": "0" }, - "src": "3499:27:3", + "src": "3499:27:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 522, + "id": 546, "nodeType": "ExpressionStatement", - "src": "3499:27:3" + "src": "3499:27:4" } ] } @@ -2856,7 +2856,7 @@ { "expression": { "argumentTypes": null, - "id": 526, + "id": 550, "isConstant": false, "isLValue": false, "isPure": false, @@ -2864,15 +2864,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3562:16:3", + "src": "3562:16:4", "subExpression": { "argumentTypes": null, - "id": 525, + "id": 549, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 490, - "src": "3562:13:3", + "referencedDeclaration": 514, + "src": "3562:13:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2883,9 +2883,9 @@ "typeString": "uint256" } }, - "id": 527, + "id": 551, "nodeType": "ExpressionStatement", - "src": "3562:16:3" + "src": "3562:16:4" } ] } @@ -2893,19 +2893,19 @@ { "expression": { "argumentTypes": null, - "id": 534, + "id": 558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 530, + "id": 554, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 494, - "src": "3606:12:3", + "referencedDeclaration": 518, + "src": "3606:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2917,26 +2917,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 531, + "id": 555, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "3621:6:3", + "referencedDeclaration": 2494, + "src": "3621:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 533, + "id": 557, "indexExpression": { "argumentTypes": null, - "id": 532, + "id": 556, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 494, - "src": "3628:12:3", + "referencedDeclaration": 518, + "src": "3628:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2947,21 +2947,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3621:20:3", + "src": "3621:20:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3606:35:3", + "src": "3606:35:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 535, + "id": 559, "nodeType": "ExpressionStatement", - "src": "3606:35:3" + "src": "3606:35:4" } ] }, @@ -2971,19 +2971,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 501, + "id": 525, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 499, + "id": 523, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 494, - "src": "3279:12:3", + "referencedDeclaration": 518, + "src": "3279:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2993,26 +2993,26 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 500, + "id": 524, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "3295:15:3", + "referencedDeclaration": 2490, + "src": "3295:15:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3279:31:3", + "src": "3279:31:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 537, + "id": 561, "nodeType": "WhileStatement", - "src": "3272:380:3" + "src": "3272:380:4" }, { "expression": { @@ -3024,19 +3024,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 541, + "id": 565, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 539, + "id": 563, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 490, - "src": "3669:13:3", + "referencedDeclaration": 514, + "src": "3669:13:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3046,18 +3046,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 540, + "id": 564, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "3686:9:3", + "referencedDeclaration": 2498, + "src": "3686:9:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3669:26:3", + "src": "3669:26:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3066,14 +3066,14 @@ { "argumentTypes": null, "hexValue": "4e6f7420656e6f75676820636f6e6669726d6174696f6e73", - "id": 542, + "id": 566, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3697:26:3", + "src": "3697:26:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b345da2aaad39251196728cc7926bed93e890843c2a47c2cdd1122427d828094", @@ -3093,21 +3093,21 @@ "typeString": "literal_string \"Not enough confirmations\"" } ], - "id": 538, + "id": 562, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "3661:7:3", + "referencedDeclaration": 4040, + "src": "3661:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 543, + "id": 567, "isConstant": false, "isLValue": false, "isPure": false, @@ -3115,20 +3115,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3661:63:3", + "src": "3661:63:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 544, + "id": 568, "nodeType": "ExpressionStatement", - "src": "3661:63:3" + "src": "3661:63:4" } ] }, "documentation": null, - "id": 546, + "id": 570, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3136,16 +3136,16 @@ "name": "checkAndClearConfirmations", "nodeType": "FunctionDefinition", "parameters": { - "id": 479, + "id": 503, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 478, + "id": 502, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 546, - "src": "3006:23:3", + "scope": 570, + "src": "3006:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3153,10 +3153,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 477, + "id": 501, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3006:7:3", + "src": "3006:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3166,26 +3166,26 @@ "visibility": "internal" } ], - "src": "3005:25:3" + "src": "3005:25:4" }, "payable": false, "returnParameters": { - "id": 480, + "id": 504, "nodeType": "ParameterList", "parameters": [], - "src": "3052:0:3" + "src": "3052:0:4" }, - "scope": 581, - "src": "2970:761:3", + "scope": 605, + "src": "2970:761:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 579, + "id": 603, "nodeType": "Block", - "src": "4225:113:3", + "src": "4225:113:4", "statements": [ { "expression": { @@ -3200,14 +3200,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 565, + "id": 589, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4274:4:3", + "src": "4274:4:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -3223,20 +3223,20 @@ "typeString": "int_const 25" } ], - "id": 564, + "id": 588, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4269:4:3", + "src": "4269:4:4", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 566, + "id": 590, "isConstant": false, "isLValue": false, "isPure": true, @@ -3244,7 +3244,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4269:10:3", + "src": "4269:10:4", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -3256,14 +3256,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 568, + "id": 592, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4286:1:3", + "src": "4286:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3279,20 +3279,20 @@ "typeString": "int_const 0" } ], - "id": 567, + "id": 591, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4281:4:3", + "src": "4281:4:4", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 569, + "id": 593, "isConstant": false, "isLValue": false, "isPure": true, @@ -3300,7 +3300,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4281:7:3", + "src": "4281:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -3308,25 +3308,25 @@ }, { "argumentTypes": null, - "id": 570, + "id": 594, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1806, - "src": "4290:4:3", + "referencedDeclaration": 4073, + "src": "4290:4:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$581", + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$605", "typeString": "contract GnosisSafeTeamEdition" } }, { "argumentTypes": null, - "id": 571, + "id": 595, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 548, - "src": "4296:2:3", + "referencedDeclaration": 572, + "src": "4296:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3334,12 +3334,12 @@ }, { "argumentTypes": null, - "id": 572, + "id": 596, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 550, - "src": "4300:5:3", + "referencedDeclaration": 574, + "src": "4300:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3347,12 +3347,12 @@ }, { "argumentTypes": null, - "id": 573, + "id": 597, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 552, - "src": "4307:4:3", + "referencedDeclaration": 576, + "src": "4307:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3360,25 +3360,25 @@ }, { "argumentTypes": null, - "id": 574, + "id": 598, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 554, - "src": "4313:9:3", + "referencedDeclaration": 578, + "src": "4313:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 575, + "id": 599, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4324:5:3", + "referencedDeclaration": 580, + "src": "4324:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3396,7 +3396,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$581", + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$605", "typeString": "contract GnosisSafeTeamEdition" }, { @@ -3412,7 +3412,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -3422,18 +3422,18 @@ ], "expression": { "argumentTypes": null, - "id": 562, + "id": 586, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1760, - "src": "4252:3:3", + "referencedDeclaration": 4023, + "src": "4252:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 563, + "id": 587, "isConstant": false, "isLValue": false, "isPure": true, @@ -3441,13 +3441,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4252:16:3", + "src": "4252:16:4", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 576, + "id": 600, "isConstant": false, "isLValue": false, "isPure": false, @@ -3455,7 +3455,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4252:78:3", + "src": "4252:78:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3469,18 +3469,18 @@ "typeString": "bytes memory" } ], - "id": 561, + "id": 585, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1767, - "src": "4242:9:3", + "referencedDeclaration": 4030, + "src": "4242:9:4", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 577, + "id": 601, "isConstant": false, "isLValue": false, "isPure": false, @@ -3488,21 +3488,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4242:89:3", + "src": "4242:89:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 560, - "id": 578, + "functionReturnParameters": 584, + "id": 602, "nodeType": "Return", - "src": "4235:96:3" + "src": "4235:96:4" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 580, + "id": 604, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3510,16 +3510,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 557, + "id": 581, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 548, + "id": 572, "name": "to", "nodeType": "VariableDeclaration", - "scope": 580, - "src": "4046:10:3", + "scope": 604, + "src": "4046:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3527,10 +3527,10 @@ "typeString": "address" }, "typeName": { - "id": 547, + "id": 571, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4046:7:3", + "src": "4046:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3541,11 +3541,11 @@ }, { "constant": false, - "id": 550, + "id": 574, "name": "value", "nodeType": "VariableDeclaration", - "scope": 580, - "src": "4067:13:3", + "scope": 604, + "src": "4067:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3553,10 +3553,10 @@ "typeString": "uint256" }, "typeName": { - "id": 549, + "id": 573, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4067:7:3", + "src": "4067:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3567,11 +3567,11 @@ }, { "constant": false, - "id": 552, + "id": 576, "name": "data", "nodeType": "VariableDeclaration", - "scope": 580, - "src": "4091:10:3", + "scope": 604, + "src": "4091:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3579,10 +3579,10 @@ "typeString": "bytes" }, "typeName": { - "id": 551, + "id": 575, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4091:5:3", + "src": "4091:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3593,26 +3593,26 @@ }, { "constant": false, - "id": 554, + "id": 578, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 580, - "src": "4112:24:3", + "scope": 604, + "src": "4112:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 553, + "id": 577, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "4112:14:3", + "referencedDeclaration": 29, + "src": "4112:14:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -3621,11 +3621,11 @@ }, { "constant": false, - "id": 556, + "id": 580, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 580, - "src": "4147:13:3", + "scope": 604, + "src": "4147:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3633,10 +3633,10 @@ "typeString": "uint256" }, "typeName": { - "id": 555, + "id": 579, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4147:7:3", + "src": "4147:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3646,20 +3646,20 @@ "visibility": "internal" } ], - "src": "4036:130:3" + "src": "4036:130:4" }, "payable": false, "returnParameters": { - "id": 560, + "id": 584, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 559, + "id": 583, "name": "", "nodeType": "VariableDeclaration", - "scope": 580, - "src": "4212:7:3", + "scope": 604, + "src": "4212:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3667,10 +3667,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 558, + "id": 582, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4212:7:3", + "src": "4212:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3680,60 +3680,60 @@ "visibility": "internal" } ], - "src": "4211:9:3" + "src": "4211:9:4" }, - "scope": 581, - "src": "4009:329:3", + "scope": 605, + "src": "4009:329:4", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 582, - "src": "272:4068:3" + "scope": 606, + "src": "272:4068:4" } ], - "src": "0:4341:3" + "src": "0:4341:4" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", "exportedSymbols": { "GnosisSafeTeamEdition": [ - 581 + 605 ] }, - "id": 582, + "id": 606, "nodeType": "SourceUnit", "nodes": [ { - "id": 347, + "id": 371, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:3" + "src": "0:23:4" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 348, + "id": 372, "nodeType": "ImportDirective", - "scope": 582, - "sourceUnit": 40, - "src": "24:26:3", + "scope": 606, + "sourceUnit": 64, + "src": "24:26:4", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 349, + "id": 373, "nodeType": "ImportDirective", - "scope": 582, - "sourceUnit": 609, - "src": "51:26:3", + "scope": 606, + "sourceUnit": 633, + "src": "51:26:4", "symbolAliases": [], "unitAlias": "" }, @@ -3743,68 +3743,68 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 350, + "id": 374, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 608, - "src": "306:10:3", + "referencedDeclaration": 632, + "src": "306:10:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$608", + "typeIdentifier": "t_contract$_MasterCopy_$632", "typeString": "contract MasterCopy" } }, - "id": 351, + "id": 375, "nodeType": "InheritanceSpecifier", - "src": "306:10:3" + "src": "306:10:4" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 352, + "id": 376, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 39, - "src": "318:10:3", + "referencedDeclaration": 63, + "src": "318:10:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$39", + "typeIdentifier": "t_contract$_GnosisSafe_$63", "typeString": "contract GnosisSafe" } }, - "id": 353, + "id": 377, "nodeType": "InheritanceSpecifier", - "src": "318:10:3" + "src": "318:10:4" } ], "contractDependencies": [ - 39, - 608, - 1022, - 1432, - 1449 + 63, + 632, + 2232, + 2888, + 3065 ], "contractKind": "contract", "documentation": "@title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 581, + "id": 605, "linearizedBaseContracts": [ - 581, - 39, - 1432, - 1022, - 608, - 1449 + 605, + 63, + 2888, + 2232, + 632, + 3065 ], "name": "GnosisSafeTeamEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 356, + "id": 380, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 581, - "src": "336:56:3", + "scope": 605, + "src": "336:56:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3812,10 +3812,10 @@ "typeString": "string" }, "typeName": { - "id": 354, + "id": 378, "name": "string", "nodeType": "ElementaryTypeName", - "src": "336:6:3", + "src": "336:6:4", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3824,14 +3824,14 @@ "value": { "argumentTypes": null, "hexValue": "476e6f7369732053616665205465616d2045646974696f6e", - "id": 355, + "id": 379, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "366:26:3", + "src": "366:26:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_69b1cb372bb47730ba653a0e87363aa6de8337d13ed5852e6fe3ba4e2004a81e", @@ -3843,11 +3843,11 @@ }, { "constant": true, - "id": 359, + "id": 383, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 581, - "src": "398:40:3", + "scope": 605, + "src": "398:40:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3855,10 +3855,10 @@ "typeString": "string" }, "typeName": { - "id": 357, + "id": 381, "name": "string", "nodeType": "ElementaryTypeName", - "src": "398:6:3", + "src": "398:6:4", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3867,14 +3867,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 358, + "id": 382, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "431:7:3", + "src": "431:7:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -3886,11 +3886,11 @@ }, { "constant": false, - "id": 363, + "id": 387, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 581, - "src": "536:46:3", + "scope": 605, + "src": "536:46:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3898,28 +3898,28 @@ "typeString": "mapping(bytes32 => uint256)" }, "typeName": { - "id": 362, + "id": 386, "keyType": { - "id": 360, + "id": 384, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "545:7:3", + "src": "545:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "536:28:3", + "src": "536:28:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" }, "valueType": { - "id": 361, + "id": 385, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "556:7:3", + "src": "556:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3931,11 +3931,11 @@ }, { "constant": false, - "id": 369, + "id": 393, "name": "isApproved", "nodeType": "VariableDeclaration", - "scope": 581, - "src": "770:66:3", + "scope": 605, + "src": "770:66:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3943,46 +3943,46 @@ "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "typeName": { - "id": 368, + "id": 392, "keyType": { - "id": 364, + "id": 388, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "779:7:3", + "src": "779:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "770:48:3", + "src": "770:48:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "valueType": { - "id": 367, + "id": 391, "keyType": { - "id": 365, + "id": 389, "name": "address", "nodeType": "ElementaryTypeName", - "src": "798:7:3", + "src": "798:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "790:27:3", + "src": "790:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 366, + "id": 390, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "809:7:3", + "src": "809:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3995,9 +3995,9 @@ }, { "body": { - "id": 420, + "id": 444, "nodeType": "Block", - "src": "1457:447:3", + "src": "1457:447:4", "statements": [ { "expression": { @@ -4009,7 +4009,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 388, + "id": 412, "isConstant": false, "isLValue": false, "isPure": false, @@ -4018,34 +4018,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 383, + "id": 407, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "1545:6:3", + "referencedDeclaration": 2494, + "src": "1545:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 386, + "id": 410, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 384, + "id": 408, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1773, - "src": "1552:3:3", + "referencedDeclaration": 4036, + "src": "1552:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 385, + "id": 409, "isConstant": false, "isLValue": false, "isPure": false, @@ -4053,7 +4053,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1552:10:3", + "src": "1552:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4064,7 +4064,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1545:18:3", + "src": "1545:18:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4075,14 +4075,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 387, + "id": 411, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1567:1:3", + "src": "1567:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4090,7 +4090,7 @@ }, "value": "0" }, - "src": "1545:23:3", + "src": "1545:23:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4099,14 +4099,14 @@ { "argumentTypes": null, "hexValue": "53656e646572206973206e6f7420616e206f776e6572", - "id": 389, + "id": 413, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1570:24:3", + "src": "1570:24:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b22a5f47ffb62866097c90f90b5b53f76973769c84a10c62e12a07eb2ba1ef4a", @@ -4126,21 +4126,21 @@ "typeString": "literal_string \"Sender is not an owner\"" } ], - "id": 382, + "id": 406, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1537:7:3", + "referencedDeclaration": 4040, + "src": "1537:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 390, + "id": 414, "isConstant": false, "isLValue": false, "isPure": false, @@ -4148,28 +4148,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1537:58:3", + "src": "1537:58:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 391, + "id": 415, "nodeType": "ExpressionStatement", - "src": "1537:58:3" + "src": "1537:58:4" }, { "assignments": [ - 393 + 417 ], "declarations": [ { "constant": false, - "id": 393, + "id": 417, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 421, - "src": "1605:23:3", + "scope": 445, + "src": "1605:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4177,10 +4177,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 392, + "id": 416, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1605:7:3", + "src": "1605:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4190,18 +4190,18 @@ "visibility": "internal" } ], - "id": 401, + "id": 425, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 395, + "id": 419, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 371, - "src": "1650:2:3", + "referencedDeclaration": 395, + "src": "1650:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4209,12 +4209,12 @@ }, { "argumentTypes": null, - "id": 396, + "id": 420, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 373, - "src": "1654:5:3", + "referencedDeclaration": 397, + "src": "1654:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4222,12 +4222,12 @@ }, { "argumentTypes": null, - "id": 397, + "id": 421, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 375, - "src": "1661:4:3", + "referencedDeclaration": 399, + "src": "1661:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4235,25 +4235,25 @@ }, { "argumentTypes": null, - "id": 398, + "id": 422, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 377, - "src": "1667:9:3", + "referencedDeclaration": 401, + "src": "1667:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 399, + "id": 423, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 379, - "src": "1678:5:3", + "referencedDeclaration": 403, + "src": "1678:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4275,7 +4275,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -4283,18 +4283,18 @@ "typeString": "uint256" } ], - "id": 394, + "id": 418, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 580, - "src": "1631:18:3", + "referencedDeclaration": 604, + "src": "1631:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 400, + "id": 424, "isConstant": false, "isLValue": false, "isPure": false, @@ -4302,14 +4302,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1631:53:3", + "src": "1631:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "1605:79:3" + "src": "1605:79:4" }, { "expression": { @@ -4321,7 +4321,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 407, + "id": 431, "isConstant": false, "isLValue": false, "isPure": false, @@ -4330,26 +4330,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 403, + "id": 427, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 363, - "src": "1774:10:3", + "referencedDeclaration": 387, + "src": "1774:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" } }, - "id": 405, + "id": 429, "indexExpression": { "argumentTypes": null, - "id": 404, + "id": 428, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 393, - "src": "1785:15:3", + "referencedDeclaration": 417, + "src": "1785:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4360,7 +4360,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1774:27:3", + "src": "1774:27:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4371,14 +4371,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 406, + "id": 430, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1805:1:3", + "src": "1805:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4386,7 +4386,7 @@ }, "value": "0" }, - "src": "1774:32:3", + "src": "1774:32:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4395,14 +4395,14 @@ { "argumentTypes": null, "hexValue": "53616665207472616e73616374696f6e20616c7265616479206578656375746564", - "id": 408, + "id": 432, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1808:35:3", + "src": "1808:35:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", @@ -4422,21 +4422,21 @@ "typeString": "literal_string \"Safe transaction already executed\"" } ], - "id": 402, + "id": 426, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1766:7:3", + "referencedDeclaration": 4040, + "src": "1766:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 409, + "id": 433, "isConstant": false, "isLValue": false, "isPure": false, @@ -4444,20 +4444,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1766:78:3", + "src": "1766:78:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 410, + "id": 434, "nodeType": "ExpressionStatement", - "src": "1766:78:3" + "src": "1766:78:4" }, { "expression": { "argumentTypes": null, - "id": 418, + "id": 442, "isConstant": false, "isLValue": false, "isPure": false, @@ -4468,26 +4468,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 411, + "id": 435, "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 369, - "src": "1854:10:3", + "referencedDeclaration": 393, + "src": "1854:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(bytes32 => mapping(address => uint256))" } }, - "id": 415, + "id": 439, "indexExpression": { "argumentTypes": null, - "id": 412, + "id": 436, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 393, - "src": "1865:15:3", + "referencedDeclaration": 417, + "src": "1865:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4498,29 +4498,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1854:27:3", + "src": "1854:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 416, + "id": 440, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 413, + "id": 437, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1773, - "src": "1882:3:3", + "referencedDeclaration": 4036, + "src": "1882:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 414, + "id": 438, "isConstant": false, "isLValue": false, "isPure": false, @@ -4528,7 +4528,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1882:10:3", + "src": "1882:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4539,7 +4539,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1854:39:3", + "src": "1854:39:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4550,14 +4550,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 417, + "id": 441, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1896:1:3", + "src": "1896:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4565,20 +4565,20 @@ }, "value": "1" }, - "src": "1854:43:3", + "src": "1854:43:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 419, + "id": 443, "nodeType": "ExpressionStatement", - "src": "1854:43:3" + "src": "1854:43:4" } ] }, "documentation": "@dev Allows to confirm a Safe transaction with a regular transaction.\n This can only be done from an owner address.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 421, + "id": 445, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -4586,16 +4586,16 @@ "name": "approveTransactionWithParameters", "nodeType": "FunctionDefinition", "parameters": { - "id": 380, + "id": 404, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 371, + "id": 395, "name": "to", "nodeType": "VariableDeclaration", - "scope": 421, - "src": "1317:10:3", + "scope": 445, + "src": "1317:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4603,10 +4603,10 @@ "typeString": "address" }, "typeName": { - "id": 370, + "id": 394, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1317:7:3", + "src": "1317:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4617,11 +4617,11 @@ }, { "constant": false, - "id": 373, + "id": 397, "name": "value", "nodeType": "VariableDeclaration", - "scope": 421, - "src": "1338:13:3", + "scope": 445, + "src": "1338:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4629,10 +4629,10 @@ "typeString": "uint256" }, "typeName": { - "id": 372, + "id": 396, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1338:7:3", + "src": "1338:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4643,11 +4643,11 @@ }, { "constant": false, - "id": 375, + "id": 399, "name": "data", "nodeType": "VariableDeclaration", - "scope": 421, - "src": "1362:10:3", + "scope": 445, + "src": "1362:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4655,10 +4655,10 @@ "typeString": "bytes" }, "typeName": { - "id": 374, + "id": 398, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1362:5:3", + "src": "1362:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4669,26 +4669,26 @@ }, { "constant": false, - "id": 377, + "id": 401, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 421, - "src": "1383:24:3", + "scope": 445, + "src": "1383:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 376, + "id": 400, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "1383:14:3", + "referencedDeclaration": 29, + "src": "1383:14:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -4697,11 +4697,11 @@ }, { "constant": false, - "id": 379, + "id": 403, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 421, - "src": "1418:13:3", + "scope": 445, + "src": "1418:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4709,10 +4709,10 @@ "typeString": "uint256" }, "typeName": { - "id": 378, + "id": 402, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1418:7:3", + "src": "1418:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4722,39 +4722,39 @@ "visibility": "internal" } ], - "src": "1307:130:3" + "src": "1307:130:4" }, "payable": false, "returnParameters": { - "id": 381, + "id": 405, "nodeType": "ParameterList", "parameters": [], - "src": "1457:0:3" + "src": "1457:0:4" }, - "scope": 581, - "src": "1266:638:3", + "scope": 605, + "src": "1266:638:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 475, + "id": 499, "nodeType": "Block", - "src": "2530:434:3", + "src": "2530:434:4", "statements": [ { "assignments": [ - 435 + 459 ], "declarations": [ { "constant": false, - "id": 435, + "id": 459, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 476, - "src": "2540:23:3", + "scope": 500, + "src": "2540:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4762,10 +4762,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 434, + "id": 458, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2540:7:3", + "src": "2540:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4775,18 +4775,18 @@ "visibility": "internal" } ], - "id": 443, + "id": 467, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 437, + "id": 461, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 423, - "src": "2585:2:3", + "referencedDeclaration": 447, + "src": "2585:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4794,12 +4794,12 @@ }, { "argumentTypes": null, - "id": 438, + "id": 462, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 425, - "src": "2589:5:3", + "referencedDeclaration": 449, + "src": "2589:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4807,12 +4807,12 @@ }, { "argumentTypes": null, - "id": 439, + "id": 463, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 427, - "src": "2596:4:3", + "referencedDeclaration": 451, + "src": "2596:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4820,25 +4820,25 @@ }, { "argumentTypes": null, - "id": 440, + "id": 464, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 429, - "src": "2602:9:3", + "referencedDeclaration": 453, + "src": "2602:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 441, + "id": 465, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 431, - "src": "2613:5:3", + "referencedDeclaration": 455, + "src": "2613:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4860,7 +4860,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -4868,18 +4868,18 @@ "typeString": "uint256" } ], - "id": 436, + "id": 460, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 580, - "src": "2566:18:3", + "referencedDeclaration": 604, + "src": "2566:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 442, + "id": 466, "isConstant": false, "isLValue": false, "isPure": false, @@ -4887,14 +4887,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2566:53:3", + "src": "2566:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2540:79:3" + "src": "2540:79:4" }, { "expression": { @@ -4906,7 +4906,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 449, + "id": 473, "isConstant": false, "isLValue": false, "isPure": false, @@ -4915,26 +4915,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 445, + "id": 469, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 363, - "src": "2637:10:3", + "referencedDeclaration": 387, + "src": "2637:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" } }, - "id": 447, + "id": 471, "indexExpression": { "argumentTypes": null, - "id": 446, + "id": 470, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 435, - "src": "2648:15:3", + "referencedDeclaration": 459, + "src": "2648:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4945,7 +4945,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2637:27:3", + "src": "2637:27:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4956,14 +4956,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 448, + "id": 472, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2668:1:3", + "src": "2668:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4971,7 +4971,7 @@ }, "value": "0" }, - "src": "2637:32:3", + "src": "2637:32:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4980,14 +4980,14 @@ { "argumentTypes": null, "hexValue": "53616665207472616e73616374696f6e20616c7265616479206578656375746564", - "id": 450, + "id": 474, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2671:35:3", + "src": "2671:35:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", @@ -5007,21 +5007,21 @@ "typeString": "literal_string \"Safe transaction already executed\"" } ], - "id": 444, + "id": 468, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2629:7:3", + "referencedDeclaration": 4040, + "src": "2629:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 451, + "id": 475, "isConstant": false, "isLValue": false, "isPure": false, @@ -5029,15 +5029,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2629:78:3", + "src": "2629:78:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 452, + "id": 476, "nodeType": "ExpressionStatement", - "src": "2629:78:3" + "src": "2629:78:4" }, { "expression": { @@ -5045,12 +5045,12 @@ "arguments": [ { "argumentTypes": null, - "id": 454, + "id": 478, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 435, - "src": "2744:15:3", + "referencedDeclaration": 459, + "src": "2744:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5064,18 +5064,18 @@ "typeString": "bytes32" } ], - "id": 453, + "id": 477, "name": "checkAndClearConfirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 546, - "src": "2717:26:3", + "referencedDeclaration": 570, + "src": "2717:26:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", "typeString": "function (bytes32)" } }, - "id": 455, + "id": 479, "isConstant": false, "isLValue": false, "isPure": false, @@ -5083,20 +5083,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2717:43:3", + "src": "2717:43:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 456, + "id": 480, "nodeType": "ExpressionStatement", - "src": "2717:43:3" + "src": "2717:43:4" }, { "expression": { "argumentTypes": null, - "id": 461, + "id": 485, "isConstant": false, "isLValue": false, "isPure": false, @@ -5105,26 +5105,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 457, + "id": 481, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 363, - "src": "2823:10:3", + "referencedDeclaration": 387, + "src": "2823:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" } }, - "id": 459, + "id": 483, "indexExpression": { "argumentTypes": null, - "id": 458, + "id": 482, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 435, - "src": "2834:15:3", + "referencedDeclaration": 459, + "src": "2834:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5135,7 +5135,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2823:27:3", + "src": "2823:27:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5146,14 +5146,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 460, + "id": 484, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2853:1:3", + "src": "2853:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5161,15 +5161,15 @@ }, "value": "1" }, - "src": "2823:31:3", + "src": "2823:31:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 462, + "id": 486, "nodeType": "ExpressionStatement", - "src": "2823:31:3" + "src": "2823:31:4" }, { "expression": { @@ -5180,12 +5180,12 @@ "arguments": [ { "argumentTypes": null, - "id": 465, + "id": 489, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 423, - "src": "2880:2:3", + "referencedDeclaration": 447, + "src": "2880:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5193,12 +5193,12 @@ }, { "argumentTypes": null, - "id": 466, + "id": 490, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 425, - "src": "2884:5:3", + "referencedDeclaration": 449, + "src": "2884:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5206,12 +5206,12 @@ }, { "argumentTypes": null, - "id": 467, + "id": 491, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 427, - "src": "2891:4:3", + "referencedDeclaration": 451, + "src": "2891:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5219,14 +5219,14 @@ }, { "argumentTypes": null, - "id": 468, + "id": 492, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 429, - "src": "2897:9:3", + "referencedDeclaration": 453, + "src": "2897:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -5235,18 +5235,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 469, + "id": 493, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1766, - "src": "2908:7:3", + "referencedDeclaration": 4029, + "src": "2908:7:4", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 470, + "id": 494, "isConstant": false, "isLValue": false, "isPure": false, @@ -5254,7 +5254,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2908:9:3", + "src": "2908:9:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5276,7 +5276,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -5284,18 +5284,18 @@ "typeString": "uint256" } ], - "id": 464, + "id": 488, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "2872:7:3", + "referencedDeclaration": 2121, + "src": "2872:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 471, + "id": 495, "isConstant": false, "isLValue": false, "isPure": false, @@ -5303,7 +5303,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2872:46:3", + "src": "2872:46:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5312,14 +5312,14 @@ { "argumentTypes": null, "hexValue": "436f756c64206e6f7420657865637574652073616665207472616e73616374696f6e", - "id": 472, + "id": 496, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2920:36:3", + "src": "2920:36:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_d12b254798790cac45e0b54201b0ecf8f3257f9e4c1cfc4633e272006616c878", @@ -5339,21 +5339,21 @@ "typeString": "literal_string \"Could not execute safe transaction\"" } ], - "id": 463, + "id": 487, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2864:7:3", + "referencedDeclaration": 4040, + "src": "2864:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 473, + "id": 497, "isConstant": false, "isLValue": false, "isPure": false, @@ -5361,20 +5361,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2864:93:3", + "src": "2864:93:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 474, + "id": 498, "nodeType": "ExpressionStatement", - "src": "2864:93:3" + "src": "2864:93:4" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 476, + "id": 500, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5382,16 +5382,16 @@ "name": "execTransactionIfApproved", "nodeType": "FunctionDefinition", "parameters": { - "id": 432, + "id": 456, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 423, + "id": 447, "name": "to", "nodeType": "VariableDeclaration", - "scope": 476, - "src": "2390:10:3", + "scope": 500, + "src": "2390:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5399,10 +5399,10 @@ "typeString": "address" }, "typeName": { - "id": 422, + "id": 446, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2390:7:3", + "src": "2390:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5413,11 +5413,11 @@ }, { "constant": false, - "id": 425, + "id": 449, "name": "value", "nodeType": "VariableDeclaration", - "scope": 476, - "src": "2411:13:3", + "scope": 500, + "src": "2411:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5425,10 +5425,10 @@ "typeString": "uint256" }, "typeName": { - "id": 424, + "id": 448, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2411:7:3", + "src": "2411:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5439,11 +5439,11 @@ }, { "constant": false, - "id": 427, + "id": 451, "name": "data", "nodeType": "VariableDeclaration", - "scope": 476, - "src": "2435:10:3", + "scope": 500, + "src": "2435:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5451,10 +5451,10 @@ "typeString": "bytes" }, "typeName": { - "id": 426, + "id": 450, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2435:5:3", + "src": "2435:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5465,26 +5465,26 @@ }, { "constant": false, - "id": 429, + "id": 453, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 476, - "src": "2456:24:3", + "scope": 500, + "src": "2456:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 428, + "id": 452, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2456:14:3", + "referencedDeclaration": 29, + "src": "2456:14:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -5493,11 +5493,11 @@ }, { "constant": false, - "id": 431, + "id": 455, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 476, - "src": "2491:13:3", + "scope": 500, + "src": "2491:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5505,10 +5505,10 @@ "typeString": "uint256" }, "typeName": { - "id": 430, + "id": 454, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2491:7:3", + "src": "2491:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5518,39 +5518,39 @@ "visibility": "internal" } ], - "src": "2380:130:3" + "src": "2380:130:4" }, "payable": false, "returnParameters": { - "id": 433, + "id": 457, "nodeType": "ParameterList", "parameters": [], - "src": "2530:0:3" + "src": "2530:0:4" }, - "scope": 581, - "src": "2346:618:3", + "scope": 605, + "src": "2346:618:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 545, + "id": 569, "nodeType": "Block", - "src": "3052:679:3", + "src": "3052:679:4", "statements": [ { "assignments": [ - 484 + 508 ], "declarations": [ { "constant": false, - "id": 484, + "id": 508, "name": "approvals", "nodeType": "VariableDeclaration", - "scope": 546, - "src": "3062:37:3", + "scope": 570, + "src": "3062:37:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5558,28 +5558,28 @@ "typeString": "mapping(address => uint256)" }, "typeName": { - "id": 483, + "id": 507, "keyType": { - "id": 481, + "id": 505, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3070:7:3", + "src": "3070:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "3062:27:3", + "src": "3062:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 482, + "id": 506, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3081:7:3", + "src": "3081:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5590,31 +5590,31 @@ "visibility": "internal" } ], - "id": 488, + "id": 512, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 485, + "id": 509, "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 369, - "src": "3102:10:3", + "referencedDeclaration": 393, + "src": "3102:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(bytes32 => mapping(address => uint256))" } }, - "id": 487, + "id": 511, "indexExpression": { "argumentTypes": null, - "id": 486, + "id": 510, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "3113:15:3", + "referencedDeclaration": 502, + "src": "3113:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5625,27 +5625,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3102:27:3", + "src": "3102:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "nodeType": "VariableDeclarationStatement", - "src": "3062:67:3" + "src": "3062:67:4" }, { "assignments": [ - 490 + 514 ], "declarations": [ { "constant": false, - "id": 490, + "id": 514, "name": "confirmations", "nodeType": "VariableDeclaration", - "scope": 546, - "src": "3139:21:3", + "scope": 570, + "src": "3139:21:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5653,10 +5653,10 @@ "typeString": "uint256" }, "typeName": { - "id": 489, + "id": 513, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3139:7:3", + "src": "3139:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5666,18 +5666,18 @@ "visibility": "internal" } ], - "id": 492, + "id": 516, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 491, + "id": 515, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3163:1:3", + "src": "3163:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5686,20 +5686,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3139:25:3" + "src": "3139:25:4" }, { "assignments": [ - 494 + 518 ], "declarations": [ { "constant": false, - "id": 494, + "id": 518, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 546, - "src": "3216:20:3", + "scope": 570, + "src": "3216:20:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5707,10 +5707,10 @@ "typeString": "address" }, "typeName": { - "id": 493, + "id": 517, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3216:7:3", + "src": "3216:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5720,31 +5720,31 @@ "visibility": "internal" } ], - "id": 498, + "id": 522, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 495, + "id": 519, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "3239:6:3", + "referencedDeclaration": 2494, + "src": "3239:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 497, + "id": 521, "indexExpression": { "argumentTypes": null, - "id": 496, + "id": 520, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "3246:15:3", + "referencedDeclaration": 2490, + "src": "3246:15:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5755,33 +5755,33 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3239:23:3", + "src": "3239:23:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3216:46:3" + "src": "3216:46:4" }, { "body": { - "id": 536, + "id": 560, "nodeType": "Block", - "src": "3312:340:3", + "src": "3312:340:4", "statements": [ { "assignments": [ - 503 + 527 ], "declarations": [ { "constant": false, - "id": 503, + "id": 527, "name": "ownerConfirmed", "nodeType": "VariableDeclaration", - "scope": 546, - "src": "3326:19:3", + "scope": 570, + "src": "3326:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5789,10 +5789,10 @@ "typeString": "bool" }, "typeName": { - "id": 502, + "id": 526, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3326:4:3", + "src": "3326:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5802,14 +5802,14 @@ "visibility": "internal" } ], - "id": 509, + "id": 533, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 508, + "id": 532, "isConstant": false, "isLValue": false, "isPure": false, @@ -5818,26 +5818,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 504, + "id": 528, "name": "approvals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "3348:9:3", + "referencedDeclaration": 508, + "src": "3348:9:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 506, + "id": 530, "indexExpression": { "argumentTypes": null, - "id": 505, + "id": 529, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 494, - "src": "3358:12:3", + "referencedDeclaration": 518, + "src": "3358:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5848,7 +5848,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3348:23:3", + "src": "3348:23:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5859,14 +5859,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 507, + "id": 531, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3375:1:3", + "src": "3375:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5874,14 +5874,14 @@ }, "value": "0" }, - "src": "3348:28:3", + "src": "3348:28:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "3326:50:3" + "src": "3326:50:4" }, { "condition": { @@ -5890,7 +5890,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 515, + "id": 539, "isConstant": false, "isLValue": false, "isPure": false, @@ -5901,19 +5901,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 513, + "id": 537, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 510, + "id": 534, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 494, - "src": "3393:12:3", + "referencedDeclaration": 518, + "src": "3393:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5925,18 +5925,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 511, + "id": 535, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1773, - "src": "3409:3:3", + "referencedDeclaration": 4036, + "src": "3409:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 512, + "id": 536, "isConstant": false, "isLValue": false, "isPure": false, @@ -5944,13 +5944,13 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3409:10:3", + "src": "3409:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3393:26:3", + "src": "3393:26:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5960,59 +5960,59 @@ "operator": "||", "rightExpression": { "argumentTypes": null, - "id": 514, + "id": 538, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 503, - "src": "3423:14:3", + "referencedDeclaration": 527, + "src": "3423:14:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3393:44:3", + "src": "3393:44:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 529, + "id": 553, "nodeType": "IfStatement", - "src": "3390:203:3", + "src": "3390:203:4", "trueBody": { - "id": 528, + "id": 552, "nodeType": "Block", - "src": "3439:154:3", + "src": "3439:154:4", "statements": [ { "condition": { "argumentTypes": null, - "id": 516, + "id": 540, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 503, - "src": "3461:14:3", + "referencedDeclaration": 527, + "src": "3461:14:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 524, + "id": 548, "nodeType": "IfStatement", - "src": "3457:88:3", + "src": "3457:88:4", "trueBody": { - "id": 523, + "id": 547, "nodeType": "Block", - "src": "3477:68:3", + "src": "3477:68:4", "statements": [ { "expression": { "argumentTypes": null, - "id": 521, + "id": 545, "isConstant": false, "isLValue": false, "isPure": false, @@ -6021,26 +6021,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 517, + "id": 541, "name": "approvals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "3499:9:3", + "referencedDeclaration": 508, + "src": "3499:9:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 519, + "id": 543, "indexExpression": { "argumentTypes": null, - "id": 518, + "id": 542, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 494, - "src": "3509:12:3", + "referencedDeclaration": 518, + "src": "3509:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6051,7 +6051,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3499:23:3", + "src": "3499:23:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6062,14 +6062,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 520, + "id": 544, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3525:1:3", + "src": "3525:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6077,15 +6077,15 @@ }, "value": "0" }, - "src": "3499:27:3", + "src": "3499:27:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 522, + "id": 546, "nodeType": "ExpressionStatement", - "src": "3499:27:3" + "src": "3499:27:4" } ] } @@ -6093,7 +6093,7 @@ { "expression": { "argumentTypes": null, - "id": 526, + "id": 550, "isConstant": false, "isLValue": false, "isPure": false, @@ -6101,15 +6101,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3562:16:3", + "src": "3562:16:4", "subExpression": { "argumentTypes": null, - "id": 525, + "id": 549, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 490, - "src": "3562:13:3", + "referencedDeclaration": 514, + "src": "3562:13:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6120,9 +6120,9 @@ "typeString": "uint256" } }, - "id": 527, + "id": 551, "nodeType": "ExpressionStatement", - "src": "3562:16:3" + "src": "3562:16:4" } ] } @@ -6130,19 +6130,19 @@ { "expression": { "argumentTypes": null, - "id": 534, + "id": 558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 530, + "id": 554, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 494, - "src": "3606:12:3", + "referencedDeclaration": 518, + "src": "3606:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6154,26 +6154,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 531, + "id": 555, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "3621:6:3", + "referencedDeclaration": 2494, + "src": "3621:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 533, + "id": 557, "indexExpression": { "argumentTypes": null, - "id": 532, + "id": 556, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 494, - "src": "3628:12:3", + "referencedDeclaration": 518, + "src": "3628:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6184,21 +6184,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3621:20:3", + "src": "3621:20:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3606:35:3", + "src": "3606:35:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 535, + "id": 559, "nodeType": "ExpressionStatement", - "src": "3606:35:3" + "src": "3606:35:4" } ] }, @@ -6208,19 +6208,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 501, + "id": 525, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 499, + "id": 523, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 494, - "src": "3279:12:3", + "referencedDeclaration": 518, + "src": "3279:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6230,26 +6230,26 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 500, + "id": 524, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "3295:15:3", + "referencedDeclaration": 2490, + "src": "3295:15:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3279:31:3", + "src": "3279:31:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 537, + "id": 561, "nodeType": "WhileStatement", - "src": "3272:380:3" + "src": "3272:380:4" }, { "expression": { @@ -6261,19 +6261,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 541, + "id": 565, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 539, + "id": 563, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 490, - "src": "3669:13:3", + "referencedDeclaration": 514, + "src": "3669:13:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6283,18 +6283,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 540, + "id": 564, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "3686:9:3", + "referencedDeclaration": 2498, + "src": "3686:9:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3669:26:3", + "src": "3669:26:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6303,14 +6303,14 @@ { "argumentTypes": null, "hexValue": "4e6f7420656e6f75676820636f6e6669726d6174696f6e73", - "id": 542, + "id": 566, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3697:26:3", + "src": "3697:26:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b345da2aaad39251196728cc7926bed93e890843c2a47c2cdd1122427d828094", @@ -6330,21 +6330,21 @@ "typeString": "literal_string \"Not enough confirmations\"" } ], - "id": 538, + "id": 562, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "3661:7:3", + "referencedDeclaration": 4040, + "src": "3661:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 543, + "id": 567, "isConstant": false, "isLValue": false, "isPure": false, @@ -6352,20 +6352,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3661:63:3", + "src": "3661:63:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 544, + "id": 568, "nodeType": "ExpressionStatement", - "src": "3661:63:3" + "src": "3661:63:4" } ] }, "documentation": null, - "id": 546, + "id": 570, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6373,16 +6373,16 @@ "name": "checkAndClearConfirmations", "nodeType": "FunctionDefinition", "parameters": { - "id": 479, + "id": 503, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 478, + "id": 502, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 546, - "src": "3006:23:3", + "scope": 570, + "src": "3006:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6390,10 +6390,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 477, + "id": 501, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3006:7:3", + "src": "3006:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6403,26 +6403,26 @@ "visibility": "internal" } ], - "src": "3005:25:3" + "src": "3005:25:4" }, "payable": false, "returnParameters": { - "id": 480, + "id": 504, "nodeType": "ParameterList", "parameters": [], - "src": "3052:0:3" + "src": "3052:0:4" }, - "scope": 581, - "src": "2970:761:3", + "scope": 605, + "src": "2970:761:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 579, + "id": 603, "nodeType": "Block", - "src": "4225:113:3", + "src": "4225:113:4", "statements": [ { "expression": { @@ -6437,14 +6437,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 565, + "id": 589, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4274:4:3", + "src": "4274:4:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -6460,20 +6460,20 @@ "typeString": "int_const 25" } ], - "id": 564, + "id": 588, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4269:4:3", + "src": "4269:4:4", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 566, + "id": 590, "isConstant": false, "isLValue": false, "isPure": true, @@ -6481,7 +6481,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4269:10:3", + "src": "4269:10:4", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -6493,14 +6493,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 568, + "id": 592, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4286:1:3", + "src": "4286:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6516,20 +6516,20 @@ "typeString": "int_const 0" } ], - "id": 567, + "id": 591, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4281:4:3", + "src": "4281:4:4", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 569, + "id": 593, "isConstant": false, "isLValue": false, "isPure": true, @@ -6537,7 +6537,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4281:7:3", + "src": "4281:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -6545,25 +6545,25 @@ }, { "argumentTypes": null, - "id": 570, + "id": 594, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1806, - "src": "4290:4:3", + "referencedDeclaration": 4073, + "src": "4290:4:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$581", + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$605", "typeString": "contract GnosisSafeTeamEdition" } }, { "argumentTypes": null, - "id": 571, + "id": 595, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 548, - "src": "4296:2:3", + "referencedDeclaration": 572, + "src": "4296:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6571,12 +6571,12 @@ }, { "argumentTypes": null, - "id": 572, + "id": 596, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 550, - "src": "4300:5:3", + "referencedDeclaration": 574, + "src": "4300:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6584,12 +6584,12 @@ }, { "argumentTypes": null, - "id": 573, + "id": 597, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 552, - "src": "4307:4:3", + "referencedDeclaration": 576, + "src": "4307:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6597,25 +6597,25 @@ }, { "argumentTypes": null, - "id": 574, + "id": 598, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 554, - "src": "4313:9:3", + "referencedDeclaration": 578, + "src": "4313:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 575, + "id": 599, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4324:5:3", + "referencedDeclaration": 580, + "src": "4324:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6633,7 +6633,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$581", + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$605", "typeString": "contract GnosisSafeTeamEdition" }, { @@ -6649,7 +6649,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -6659,18 +6659,18 @@ ], "expression": { "argumentTypes": null, - "id": 562, + "id": 586, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1760, - "src": "4252:3:3", + "referencedDeclaration": 4023, + "src": "4252:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 563, + "id": 587, "isConstant": false, "isLValue": false, "isPure": true, @@ -6678,13 +6678,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4252:16:3", + "src": "4252:16:4", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 576, + "id": 600, "isConstant": false, "isLValue": false, "isPure": false, @@ -6692,7 +6692,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4252:78:3", + "src": "4252:78:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6706,18 +6706,18 @@ "typeString": "bytes memory" } ], - "id": 561, + "id": 585, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1767, - "src": "4242:9:3", + "referencedDeclaration": 4030, + "src": "4242:9:4", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 577, + "id": 601, "isConstant": false, "isLValue": false, "isPure": false, @@ -6725,21 +6725,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4242:89:3", + "src": "4242:89:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 560, - "id": 578, + "functionReturnParameters": 584, + "id": 602, "nodeType": "Return", - "src": "4235:96:3" + "src": "4235:96:4" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 580, + "id": 604, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6747,16 +6747,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 557, + "id": 581, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 548, + "id": 572, "name": "to", "nodeType": "VariableDeclaration", - "scope": 580, - "src": "4046:10:3", + "scope": 604, + "src": "4046:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6764,10 +6764,10 @@ "typeString": "address" }, "typeName": { - "id": 547, + "id": 571, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4046:7:3", + "src": "4046:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6778,11 +6778,11 @@ }, { "constant": false, - "id": 550, + "id": 574, "name": "value", "nodeType": "VariableDeclaration", - "scope": 580, - "src": "4067:13:3", + "scope": 604, + "src": "4067:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6790,10 +6790,10 @@ "typeString": "uint256" }, "typeName": { - "id": 549, + "id": 573, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4067:7:3", + "src": "4067:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6804,11 +6804,11 @@ }, { "constant": false, - "id": 552, + "id": 576, "name": "data", "nodeType": "VariableDeclaration", - "scope": 580, - "src": "4091:10:3", + "scope": 604, + "src": "4091:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6816,10 +6816,10 @@ "typeString": "bytes" }, "typeName": { - "id": 551, + "id": 575, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4091:5:3", + "src": "4091:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6830,26 +6830,26 @@ }, { "constant": false, - "id": 554, + "id": 578, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 580, - "src": "4112:24:3", + "scope": 604, + "src": "4112:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 553, + "id": 577, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "4112:14:3", + "referencedDeclaration": 29, + "src": "4112:14:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -6858,11 +6858,11 @@ }, { "constant": false, - "id": 556, + "id": 580, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 580, - "src": "4147:13:3", + "scope": 604, + "src": "4147:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6870,10 +6870,10 @@ "typeString": "uint256" }, "typeName": { - "id": 555, + "id": 579, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4147:7:3", + "src": "4147:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6883,20 +6883,20 @@ "visibility": "internal" } ], - "src": "4036:130:3" + "src": "4036:130:4" }, "payable": false, "returnParameters": { - "id": 560, + "id": 584, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 559, + "id": 583, "name": "", "nodeType": "VariableDeclaration", - "scope": 580, - "src": "4212:7:3", + "scope": 604, + "src": "4212:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6904,10 +6904,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 558, + "id": 582, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4212:7:3", + "src": "4212:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6917,20 +6917,20 @@ "visibility": "internal" } ], - "src": "4211:9:3" + "src": "4211:9:4" }, - "scope": 581, - "src": "4009:329:3", + "scope": 605, + "src": "4009:329:4", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 582, - "src": "272:4068:3" + "scope": 606, + "src": "272:4068:4" } ], - "src": "0:4341:3" + "src": "0:4341:4" }, "compiler": { "name": "solc", @@ -6940,28 +6940,28 @@ "4": { "events": {}, "links": {}, - "address": "0xb3525a082c7c49ae8f9f94b69cc08998eecca073", - "transactionHash": "0x11f3dc7f2d63dce24f54b14dbc0dccb81b589ee711616ba54501a5e36cd4e401" + "address": "0x302d18608065ff4920d868690ed33156883c503e", + "transactionHash": "0xfc9db9588365ec18aaf1a6cc78a164a7cfcf7386272e273098ac307d8a92bbbc" }, - "1529327661534": { + "1530013596495": { "events": {}, "links": {}, - "address": "0xd9e50ec7f35dbf414b9831d352f0b64c63cb3ae5", - "transactionHash": "0xe92cb4d126ad63d0d96c1cad668d14eb7f693b6b754488c898cf294c792af802" + "address": "0x148118e4ddffe5df4b451451d55be4530bfc9d3e", + "transactionHash": "0xb8ed579291e3ccad4c5beb93c32744d0cca11907f5a0c90cabb6d8ff84bb2031" }, - "1529333415702": { + "1530525742205": { "events": {}, "links": {}, - "address": "0xd748a53c2061521b6b3b5b0d40b91461591b0dc7", - "transactionHash": "0xe82ec5350517d60310a99990cfa668570eb06a1d69fa9f4b884eab0d5caa1ad1" + "address": "0x70b94da9b269ca9c1580e7fb069fa465c3a88e0e", + "transactionHash": "0x7b929dca2948e3f48a96ca43d31a392f30f8ba4f51a778436c9df26006682054" }, - "1529652204341": { + "1530611935189": { "events": {}, "links": {}, - "address": "0xffc8d32e746202b3676a206fa5296edd43cb2cd3", - "transactionHash": "0x9ae1de406cd8d0ca8fe85c77d43349ae77fd4d9691defa15cd9380f4c49e3a98" + "address": "0x47fdfa601a5df4e99ac374b05baeb36dd1fca288", + "transactionHash": "0x7b929dca2948e3f48a96ca43d31a392f30f8ba4f51a778436c9df26006682054" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-22T07:24:16.250Z" + "updatedAt": "2018-07-03T09:59:18.543Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MasterCopy.json b/safe-contracts/build/contracts/MasterCopy.json index cebf14d095..99d5b2fc08 100644 --- a/safe-contracts/build/contracts/MasterCopy.json +++ b/safe-contracts/build/contracts/MasterCopy.json @@ -18,38 +18,38 @@ ], "bytecode": "0x608060405234801561001057600080fd5b50610276806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820243ca7a44eb0464a47c14309cc3a29e407df6e966674981a787df22c0d9280220029", "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820243ca7a44eb0464a47c14309cc3a29e407df6e966674981a787df22c0d9280220029", - "sourceMap": "203:673:4:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;203:673:4;;;;;;;", - "deployedSourceMap": "203:673:4:-;;;;;;;;;;;;;;;;;;;;;;;;626:248;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:4;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o", + "sourceMap": "203:673:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;203:673:5;;;;;;;", + "deployedSourceMap": "203:673:5:-;;;;;;;;;;;;;;;;;;;;;;;;626:248;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o", "source": "pragma solidity 0.4.24;\nimport \"./SelfAuthorized.sol\";\n\n\n/// @title MasterCopy - Base for master copy contracts (should always be first super contract)\n/// @author Richard Meissner - \ncontract MasterCopy is SelfAuthorized {\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location as in the Proxy contract.\n // It should also always be ensured that the address is stored alone (uses a full word)\n address masterCopy;\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(address _masterCopy)\n public\n authorized\n {\n // Master copy address cannot be null.\n require(_masterCopy != 0, \"Invalid master copy address provided\");\n masterCopy = _masterCopy;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "exportedSymbols": { "MasterCopy": [ - 608 + 632 ] }, - "id": 609, + "id": 633, "nodeType": "SourceUnit", "nodes": [ { - "id": 583, + "id": 607, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:4" + "src": "0:23:5" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 584, + "id": 608, "nodeType": "ImportDirective", - "scope": 609, - "sourceUnit": 1450, - "src": "24:30:4", + "scope": 633, + "sourceUnit": 3066, + "src": "24:30:5", "symbolAliases": [], "unitAlias": "" }, @@ -59,42 +59,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 585, + "id": 609, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1449, - "src": "226:14:4", + "referencedDeclaration": 3065, + "src": "226:14:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1449", + "typeIdentifier": "t_contract$_SelfAuthorized_$3065", "typeString": "contract SelfAuthorized" } }, - "id": 586, + "id": 610, "nodeType": "InheritanceSpecifier", - "src": "226:14:4" + "src": "226:14:5" } ], "contractDependencies": [ - 1449 + 3065 ], "contractKind": "contract", "documentation": "@title MasterCopy - Base for master copy contracts (should always be first super contract)\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 608, + "id": 632, "linearizedBaseContracts": [ - 608, - 1449 + 632, + 3065 ], "name": "MasterCopy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 588, + "id": 612, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 608, - "src": "465:18:4", + "scope": 632, + "src": "465:18:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -102,10 +102,10 @@ "typeString": "address" }, "typeName": { - "id": 587, + "id": 611, "name": "address", "nodeType": "ElementaryTypeName", - "src": "465:7:4", + "src": "465:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -116,9 +116,9 @@ }, { "body": { - "id": 606, + "id": 630, "nodeType": "Block", - "src": "711:163:4", + "src": "711:163:5", "statements": [ { "expression": { @@ -130,19 +130,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 598, + "id": 622, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 596, + "id": 620, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 590, - "src": "776:11:4", + "referencedDeclaration": 614, + "src": "776:11:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -153,14 +153,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 597, + "id": 621, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "791:1:4", + "src": "791:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -168,7 +168,7 @@ }, "value": "0" }, - "src": "776:16:4", + "src": "776:16:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -177,14 +177,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206d617374657220636f707920616464726573732070726f7669646564", - "id": 599, + "id": 623, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "794:38:4", + "src": "794:38:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", @@ -204,21 +204,21 @@ "typeString": "literal_string \"Invalid master copy address provided\"" } ], - "id": 595, + "id": 619, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "768:7:4", + "referencedDeclaration": 4040, + "src": "768:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 600, + "id": 624, "isConstant": false, "isLValue": false, "isPure": false, @@ -226,32 +226,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:65:4", + "src": "768:65:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 601, + "id": 625, "nodeType": "ExpressionStatement", - "src": "768:65:4" + "src": "768:65:5" }, { "expression": { "argumentTypes": null, - "id": 604, + "id": 628, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 602, + "id": 626, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "843:10:4", + "referencedDeclaration": 612, + "src": "843:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -261,68 +261,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 603, + "id": 627, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 590, - "src": "856:11:4", + "referencedDeclaration": 614, + "src": "856:11:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "843:24:4", + "src": "843:24:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 605, + "id": 629, "nodeType": "ExpressionStatement", - "src": "843:24:4" + "src": "843:24:5" } ] }, "documentation": "@dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n @param _masterCopy New contract address.", - "id": 607, + "id": 631, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 593, + "id": 617, "modifierName": { "argumentTypes": null, - "id": 592, + "id": 616, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1448, - "src": "696:10:4", + "referencedDeclaration": 3064, + "src": "696:10:5", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "696:10:4" + "src": "696:10:5" } ], "name": "changeMasterCopy", "nodeType": "FunctionDefinition", "parameters": { - "id": 591, + "id": 615, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 590, + "id": 614, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 607, - "src": "652:19:4", + "scope": 631, + "src": "652:19:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -330,10 +330,10 @@ "typeString": "address" }, "typeName": { - "id": 589, + "id": 613, "name": "address", "nodeType": "ElementaryTypeName", - "src": "652:7:4", + "src": "652:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -343,56 +343,56 @@ "visibility": "internal" } ], - "src": "651:21:4" + "src": "651:21:5" }, "payable": false, "returnParameters": { - "id": 594, + "id": 618, "nodeType": "ParameterList", "parameters": [], - "src": "711:0:4" + "src": "711:0:5" }, - "scope": 608, - "src": "626:248:4", + "scope": 632, + "src": "626:248:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 609, - "src": "203:673:4" + "scope": 633, + "src": "203:673:5" } ], - "src": "0:877:4" + "src": "0:877:5" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "exportedSymbols": { "MasterCopy": [ - 608 + 632 ] }, - "id": 609, + "id": 633, "nodeType": "SourceUnit", "nodes": [ { - "id": 583, + "id": 607, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:4" + "src": "0:23:5" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 584, + "id": 608, "nodeType": "ImportDirective", - "scope": 609, - "sourceUnit": 1450, - "src": "24:30:4", + "scope": 633, + "sourceUnit": 3066, + "src": "24:30:5", "symbolAliases": [], "unitAlias": "" }, @@ -402,42 +402,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 585, + "id": 609, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1449, - "src": "226:14:4", + "referencedDeclaration": 3065, + "src": "226:14:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1449", + "typeIdentifier": "t_contract$_SelfAuthorized_$3065", "typeString": "contract SelfAuthorized" } }, - "id": 586, + "id": 610, "nodeType": "InheritanceSpecifier", - "src": "226:14:4" + "src": "226:14:5" } ], "contractDependencies": [ - 1449 + 3065 ], "contractKind": "contract", "documentation": "@title MasterCopy - Base for master copy contracts (should always be first super contract)\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 608, + "id": 632, "linearizedBaseContracts": [ - 608, - 1449 + 632, + 3065 ], "name": "MasterCopy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 588, + "id": 612, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 608, - "src": "465:18:4", + "scope": 632, + "src": "465:18:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -445,10 +445,10 @@ "typeString": "address" }, "typeName": { - "id": 587, + "id": 611, "name": "address", "nodeType": "ElementaryTypeName", - "src": "465:7:4", + "src": "465:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -459,9 +459,9 @@ }, { "body": { - "id": 606, + "id": 630, "nodeType": "Block", - "src": "711:163:4", + "src": "711:163:5", "statements": [ { "expression": { @@ -473,19 +473,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 598, + "id": 622, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 596, + "id": 620, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 590, - "src": "776:11:4", + "referencedDeclaration": 614, + "src": "776:11:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -496,14 +496,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 597, + "id": 621, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "791:1:4", + "src": "791:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -511,7 +511,7 @@ }, "value": "0" }, - "src": "776:16:4", + "src": "776:16:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -520,14 +520,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206d617374657220636f707920616464726573732070726f7669646564", - "id": 599, + "id": 623, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "794:38:4", + "src": "794:38:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", @@ -547,21 +547,21 @@ "typeString": "literal_string \"Invalid master copy address provided\"" } ], - "id": 595, + "id": 619, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "768:7:4", + "referencedDeclaration": 4040, + "src": "768:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 600, + "id": 624, "isConstant": false, "isLValue": false, "isPure": false, @@ -569,32 +569,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:65:4", + "src": "768:65:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 601, + "id": 625, "nodeType": "ExpressionStatement", - "src": "768:65:4" + "src": "768:65:5" }, { "expression": { "argumentTypes": null, - "id": 604, + "id": 628, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 602, + "id": 626, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "843:10:4", + "referencedDeclaration": 612, + "src": "843:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -604,68 +604,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 603, + "id": 627, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 590, - "src": "856:11:4", + "referencedDeclaration": 614, + "src": "856:11:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "843:24:4", + "src": "843:24:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 605, + "id": 629, "nodeType": "ExpressionStatement", - "src": "843:24:4" + "src": "843:24:5" } ] }, "documentation": "@dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n @param _masterCopy New contract address.", - "id": 607, + "id": 631, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 593, + "id": 617, "modifierName": { "argumentTypes": null, - "id": 592, + "id": 616, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1448, - "src": "696:10:4", + "referencedDeclaration": 3064, + "src": "696:10:5", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "696:10:4" + "src": "696:10:5" } ], "name": "changeMasterCopy", "nodeType": "FunctionDefinition", "parameters": { - "id": 591, + "id": 615, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 590, + "id": 614, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 607, - "src": "652:19:4", + "scope": 631, + "src": "652:19:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -673,10 +673,10 @@ "typeString": "address" }, "typeName": { - "id": 589, + "id": 613, "name": "address", "nodeType": "ElementaryTypeName", - "src": "652:7:4", + "src": "652:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -686,27 +686,27 @@ "visibility": "internal" } ], - "src": "651:21:4" + "src": "651:21:5" }, "payable": false, "returnParameters": { - "id": 594, + "id": 618, "nodeType": "ParameterList", "parameters": [], - "src": "711:0:4" + "src": "711:0:5" }, - "scope": 608, - "src": "626:248:4", + "scope": 632, + "src": "626:248:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 609, - "src": "203:673:4" + "scope": 633, + "src": "203:673:5" } ], - "src": "0:877:4" + "src": "0:877:5" }, "compiler": { "name": "solc", @@ -714,5 +714,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-20T07:57:27.004Z" + "updatedAt": "2018-06-29T09:01:22.057Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Migrations.json b/safe-contracts/build/contracts/Migrations.json index 4f1b96cda5..78a6b2734a 100644 --- a/safe-contracts/build/contracts/Migrations.json +++ b/safe-contracts/build/contracts/Migrations.json @@ -66,22 +66,22 @@ ], "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102f8806100606000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100aa5780638da5cb5b146100d5578063fdacd5761461012c575b600080fd5b34801561007357600080fd5b506100a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610159565b005b3480156100b657600080fd5b506100bf610241565b6040518082815260200191505060405180910390f35b3480156100e157600080fd5b506100ea610247565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101576004803603810190808035906020019092919050505061026c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023d578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102c957806001819055505b505600a165627a7a72305820395a1faf61b0f17e3924c1d3e3b1152739b523adb57dd5b79bb0bea6897a5ff70029", "deployedBytecode": "0x608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100aa5780638da5cb5b146100d5578063fdacd5761461012c575b600080fd5b34801561007357600080fd5b506100a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610159565b005b3480156100b657600080fd5b506100bf610241565b6040518082815260200191505060405180910390f35b3480156100e157600080fd5b506100ea610247565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101576004803603810190808035906020019092919050505061026c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023d578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102c957806001819055505b505600a165627a7a72305820395a1faf61b0f17e3924c1d3e3b1152739b523adb57dd5b79bb0bea6897a5ff70029", - "sourceMap": "25:572:6:-;;;191:68;8:9:-1;5:2;;;30:1;27;20:12;5:2;191:68:6;242:10;234:5;;:18;;;;;;;;;;;;;;;;;;25:572;;;;;;", - "deployedSourceMap": "25:572:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;400:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;400:195:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;77:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;77:36:6;;;;;;;;;;;;;;;;;;;;;;;51:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51:20:6;;;;;;;;;;;;;;;;;;;;;;;;;;;265:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;265:129:6;;;;;;;;;;;;;;;;;;;;;;;;;;400:195;486:19;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;519:11;486:45;;541:8;:21;;;563:24;;541:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;541:47:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;541:47:6;;;;152:26;400:195;;:::o;77:36::-;;;;:::o;51:20::-;;;;;;;;;;;;;:::o;265:129::-;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;378:9;351:24;:36;;;;152:26;265:129;:::o", + "sourceMap": "25:572:7:-;;;191:68;8:9:-1;5:2;;;30:1;27;20:12;5:2;191:68:7;242:10;234:5;;:18;;;;;;;;;;;;;;;;;;25:572;;;;;;", + "deployedSourceMap": "25:572:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;400:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;400:195:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;77:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;77:36:7;;;;;;;;;;;;;;;;;;;;;;;51:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51:20:7;;;;;;;;;;;;;;;;;;;;;;;;;;;265:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;265:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;400:195;486:19;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;519:11;486:45;;541:8;:21;;;563:24;;541:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;541:47:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;541:47:7;;;;152:26;400:195;;:::o;77:36::-;;;;:::o;51:20::-;;;;;;;;;;;;;:::o;265:129::-;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;378:9;351:24;:36;;;;152:26;265:129;:::o", "source": "pragma solidity ^0.4.4;\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n constructor()\n public\n {\n owner = msg.sender;\n }\n\n function setCompleted(uint completed)\n public\n restricted\n {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address)\n public\n restricted\n {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ - 689 + 1818 ] }, - "id": 690, + "id": 1819, "nodeType": "SourceUnit", "nodes": [ { - "id": 634, + "id": 1763, "literals": [ "solidity", "^", @@ -89,7 +89,7 @@ ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:6" + "src": "0:23:7" }, { "baseContracts": [], @@ -97,20 +97,20 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 689, + "id": 1818, "linearizedBaseContracts": [ - 689 + 1818 ], "name": "Migrations", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 636, + "id": 1765, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 689, - "src": "51:20:6", + "scope": 1818, + "src": "51:20:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -118,10 +118,10 @@ "typeString": "address" }, "typeName": { - "id": 635, + "id": 1764, "name": "address", "nodeType": "ElementaryTypeName", - "src": "51:7:6", + "src": "51:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -132,11 +132,11 @@ }, { "constant": false, - "id": 638, + "id": 1767, "name": "last_completed_migration", "nodeType": "VariableDeclaration", - "scope": 689, - "src": "77:36:6", + "scope": 1818, + "src": "77:36:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -144,10 +144,10 @@ "typeString": "uint256" }, "typeName": { - "id": 637, + "id": 1766, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "77:4:6", + "src": "77:4:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -158,9 +158,9 @@ }, { "body": { - "id": 646, + "id": 1775, "nodeType": "Block", - "src": "142:43:6", + "src": "142:43:7", "statements": [ { "condition": { @@ -169,7 +169,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 643, + "id": 1772, "isConstant": false, "isLValue": false, "isPure": false, @@ -178,18 +178,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 640, + "id": 1769, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2700, - "src": "156:3:6", + "referencedDeclaration": 4036, + "src": "156:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 641, + "id": 1770, "isConstant": false, "isLValue": false, "isPure": false, @@ -197,7 +197,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "156:10:6", + "src": "156:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -207,70 +207,70 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 642, + "id": 1771, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 636, - "src": "170:5:6", + "referencedDeclaration": 1765, + "src": "170:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "156:19:6", + "src": "156:19:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 645, + "id": 1774, "nodeType": "IfStatement", - "src": "152:26:6", + "src": "152:26:7", "trueBody": { - "id": 644, + "id": 1773, "nodeType": "PlaceholderStatement", - "src": "177:1:6" + "src": "177:1:7" } } ] }, "documentation": null, - "id": 647, + "id": 1776, "name": "restricted", "nodeType": "ModifierDefinition", "parameters": { - "id": 639, + "id": 1768, "nodeType": "ParameterList", "parameters": [], - "src": "139:2:6" + "src": "139:2:7" }, - "src": "120:65:6", + "src": "120:65:7", "visibility": "internal" }, { "body": { - "id": 655, + "id": 1784, "nodeType": "Block", - "src": "224:35:6", + "src": "224:35:7", "statements": [ { "expression": { "argumentTypes": null, - "id": 653, + "id": 1782, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 650, + "id": 1779, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 636, - "src": "234:5:6", + "referencedDeclaration": 1765, + "src": "234:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -282,18 +282,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 651, + "id": 1780, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2700, - "src": "242:3:6", + "referencedDeclaration": 4036, + "src": "242:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 652, + "id": 1781, "isConstant": false, "isLValue": false, "isPure": false, @@ -301,26 +301,26 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "242:10:6", + "src": "242:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "234:18:6", + "src": "234:18:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 654, + "id": 1783, "nodeType": "ExpressionStatement", - "src": "234:18:6" + "src": "234:18:7" } ] }, "documentation": null, - "id": 656, + "id": 1785, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -328,46 +328,46 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 648, + "id": 1777, "nodeType": "ParameterList", "parameters": [], - "src": "202:2:6" + "src": "202:2:7" }, "payable": false, "returnParameters": { - "id": 649, + "id": 1778, "nodeType": "ParameterList", "parameters": [], - "src": "224:0:6" + "src": "224:0:7" }, - "scope": 689, - "src": "191:68:6", + "scope": 1818, + "src": "191:68:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 667, + "id": 1796, "nodeType": "Block", - "src": "341:53:6", + "src": "341:53:7", "statements": [ { "expression": { "argumentTypes": null, - "id": 665, + "id": 1794, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 663, + "id": 1792, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 638, - "src": "351:24:6", + "referencedDeclaration": 1767, + "src": "351:24:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -377,68 +377,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 664, + "id": 1793, "name": "completed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 658, - "src": "378:9:6", + "referencedDeclaration": 1787, + "src": "378:9:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "351:36:6", + "src": "351:36:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 666, + "id": 1795, "nodeType": "ExpressionStatement", - "src": "351:36:6" + "src": "351:36:7" } ] }, "documentation": null, - "id": 668, + "id": 1797, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 661, + "id": 1790, "modifierName": { "argumentTypes": null, - "id": 660, + "id": 1789, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "326:10:6", + "referencedDeclaration": 1776, + "src": "326:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "326:10:6" + "src": "326:10:7" } ], "name": "setCompleted", "nodeType": "FunctionDefinition", "parameters": { - "id": 659, + "id": 1788, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 658, + "id": 1787, "name": "completed", "nodeType": "VariableDeclaration", - "scope": 668, - "src": "287:14:6", + "scope": 1797, + "src": "287:14:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -446,10 +446,10 @@ "typeString": "uint256" }, "typeName": { - "id": 657, + "id": 1786, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "287:4:6", + "src": "287:4:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -459,54 +459,54 @@ "visibility": "internal" } ], - "src": "286:16:6" + "src": "286:16:7" }, "payable": false, "returnParameters": { - "id": 662, + "id": 1791, "nodeType": "ParameterList", "parameters": [], - "src": "341:0:6" + "src": "341:0:7" }, - "scope": 689, - "src": "265:129:6", + "scope": 1818, + "src": "265:129:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 687, + "id": 1816, "nodeType": "Block", - "src": "476:119:6", + "src": "476:119:7", "statements": [ { "assignments": [ - 676 + 1805 ], "declarations": [ { "constant": false, - "id": 676, + "id": 1805, "name": "upgraded", "nodeType": "VariableDeclaration", - "scope": 688, - "src": "486:19:6", + "scope": 1817, + "src": "486:19:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$689", + "typeIdentifier": "t_contract$_Migrations_$1818", "typeString": "contract Migrations" }, "typeName": { "contractScope": null, - "id": 675, + "id": 1804, "name": "Migrations", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 689, - "src": "486:10:6", + "referencedDeclaration": 1818, + "src": "486:10:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$689", + "typeIdentifier": "t_contract$_Migrations_$1818", "typeString": "contract Migrations" } }, @@ -514,18 +514,18 @@ "visibility": "internal" } ], - "id": 680, + "id": 1809, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 678, + "id": 1807, "name": "new_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "519:11:6", + "referencedDeclaration": 1799, + "src": "519:11:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -539,18 +539,18 @@ "typeString": "address" } ], - "id": 677, + "id": 1806, "name": "Migrations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 689, - "src": "508:10:6", + "referencedDeclaration": 1818, + "src": "508:10:7", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Migrations_$689_$", + "typeIdentifier": "t_type$_t_contract$_Migrations_$1818_$", "typeString": "type(contract Migrations)" } }, - "id": 679, + "id": 1808, "isConstant": false, "isLValue": false, "isPure": false, @@ -558,14 +558,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "508:23:6", + "src": "508:23:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$689", + "typeIdentifier": "t_contract$_Migrations_$1818", "typeString": "contract Migrations" } }, "nodeType": "VariableDeclarationStatement", - "src": "486:45:6" + "src": "486:45:7" }, { "expression": { @@ -573,12 +573,12 @@ "arguments": [ { "argumentTypes": null, - "id": 684, + "id": 1813, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 638, - "src": "563:24:6", + "referencedDeclaration": 1767, + "src": "563:24:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -594,32 +594,32 @@ ], "expression": { "argumentTypes": null, - "id": 681, + "id": 1810, "name": "upgraded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "541:8:6", + "referencedDeclaration": 1805, + "src": "541:8:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$689", + "typeIdentifier": "t_contract$_Migrations_$1818", "typeString": "contract Migrations" } }, - "id": 683, + "id": 1812, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "setCompleted", "nodeType": "MemberAccess", - "referencedDeclaration": 668, - "src": "541:21:6", + "referencedDeclaration": 1797, + "src": "541:21:7", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 685, + "id": 1814, "isConstant": false, "isLValue": false, "isPure": false, @@ -627,57 +627,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "541:47:6", + "src": "541:47:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 686, + "id": 1815, "nodeType": "ExpressionStatement", - "src": "541:47:6" + "src": "541:47:7" } ] }, "documentation": null, - "id": 688, + "id": 1817, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 673, + "id": 1802, "modifierName": { "argumentTypes": null, - "id": 672, + "id": 1801, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "461:10:6", + "referencedDeclaration": 1776, + "src": "461:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "461:10:6" + "src": "461:10:7" } ], "name": "upgrade", "nodeType": "FunctionDefinition", "parameters": { - "id": 671, + "id": 1800, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 670, + "id": 1799, "name": "new_address", "nodeType": "VariableDeclaration", - "scope": 688, - "src": "417:19:6", + "scope": 1817, + "src": "417:19:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -685,10 +685,10 @@ "typeString": "address" }, "typeName": { - "id": 669, + "id": 1798, "name": "address", "nodeType": "ElementaryTypeName", - "src": "417:7:6", + "src": "417:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -698,40 +698,40 @@ "visibility": "internal" } ], - "src": "416:21:6" + "src": "416:21:7" }, "payable": false, "returnParameters": { - "id": 674, + "id": 1803, "nodeType": "ParameterList", "parameters": [], - "src": "476:0:6" + "src": "476:0:7" }, - "scope": 689, - "src": "400:195:6", + "scope": 1818, + "src": "400:195:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 690, - "src": "25:572:6" + "scope": 1819, + "src": "25:572:7" } ], - "src": "0:598:6" + "src": "0:598:7" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ - 689 + 1818 ] }, - "id": 690, + "id": 1819, "nodeType": "SourceUnit", "nodes": [ { - "id": 634, + "id": 1763, "literals": [ "solidity", "^", @@ -739,7 +739,7 @@ ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:6" + "src": "0:23:7" }, { "baseContracts": [], @@ -747,20 +747,20 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 689, + "id": 1818, "linearizedBaseContracts": [ - 689 + 1818 ], "name": "Migrations", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 636, + "id": 1765, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 689, - "src": "51:20:6", + "scope": 1818, + "src": "51:20:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -768,10 +768,10 @@ "typeString": "address" }, "typeName": { - "id": 635, + "id": 1764, "name": "address", "nodeType": "ElementaryTypeName", - "src": "51:7:6", + "src": "51:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -782,11 +782,11 @@ }, { "constant": false, - "id": 638, + "id": 1767, "name": "last_completed_migration", "nodeType": "VariableDeclaration", - "scope": 689, - "src": "77:36:6", + "scope": 1818, + "src": "77:36:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -794,10 +794,10 @@ "typeString": "uint256" }, "typeName": { - "id": 637, + "id": 1766, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "77:4:6", + "src": "77:4:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -808,9 +808,9 @@ }, { "body": { - "id": 646, + "id": 1775, "nodeType": "Block", - "src": "142:43:6", + "src": "142:43:7", "statements": [ { "condition": { @@ -819,7 +819,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 643, + "id": 1772, "isConstant": false, "isLValue": false, "isPure": false, @@ -828,18 +828,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 640, + "id": 1769, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2700, - "src": "156:3:6", + "referencedDeclaration": 4036, + "src": "156:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 641, + "id": 1770, "isConstant": false, "isLValue": false, "isPure": false, @@ -847,7 +847,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "156:10:6", + "src": "156:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -857,70 +857,70 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 642, + "id": 1771, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 636, - "src": "170:5:6", + "referencedDeclaration": 1765, + "src": "170:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "156:19:6", + "src": "156:19:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 645, + "id": 1774, "nodeType": "IfStatement", - "src": "152:26:6", + "src": "152:26:7", "trueBody": { - "id": 644, + "id": 1773, "nodeType": "PlaceholderStatement", - "src": "177:1:6" + "src": "177:1:7" } } ] }, "documentation": null, - "id": 647, + "id": 1776, "name": "restricted", "nodeType": "ModifierDefinition", "parameters": { - "id": 639, + "id": 1768, "nodeType": "ParameterList", "parameters": [], - "src": "139:2:6" + "src": "139:2:7" }, - "src": "120:65:6", + "src": "120:65:7", "visibility": "internal" }, { "body": { - "id": 655, + "id": 1784, "nodeType": "Block", - "src": "224:35:6", + "src": "224:35:7", "statements": [ { "expression": { "argumentTypes": null, - "id": 653, + "id": 1782, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 650, + "id": 1779, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 636, - "src": "234:5:6", + "referencedDeclaration": 1765, + "src": "234:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -932,18 +932,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 651, + "id": 1780, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2700, - "src": "242:3:6", + "referencedDeclaration": 4036, + "src": "242:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 652, + "id": 1781, "isConstant": false, "isLValue": false, "isPure": false, @@ -951,26 +951,26 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "242:10:6", + "src": "242:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "234:18:6", + "src": "234:18:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 654, + "id": 1783, "nodeType": "ExpressionStatement", - "src": "234:18:6" + "src": "234:18:7" } ] }, "documentation": null, - "id": 656, + "id": 1785, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -978,46 +978,46 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 648, + "id": 1777, "nodeType": "ParameterList", "parameters": [], - "src": "202:2:6" + "src": "202:2:7" }, "payable": false, "returnParameters": { - "id": 649, + "id": 1778, "nodeType": "ParameterList", "parameters": [], - "src": "224:0:6" + "src": "224:0:7" }, - "scope": 689, - "src": "191:68:6", + "scope": 1818, + "src": "191:68:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 667, + "id": 1796, "nodeType": "Block", - "src": "341:53:6", + "src": "341:53:7", "statements": [ { "expression": { "argumentTypes": null, - "id": 665, + "id": 1794, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 663, + "id": 1792, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 638, - "src": "351:24:6", + "referencedDeclaration": 1767, + "src": "351:24:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1027,68 +1027,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 664, + "id": 1793, "name": "completed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 658, - "src": "378:9:6", + "referencedDeclaration": 1787, + "src": "378:9:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "351:36:6", + "src": "351:36:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 666, + "id": 1795, "nodeType": "ExpressionStatement", - "src": "351:36:6" + "src": "351:36:7" } ] }, "documentation": null, - "id": 668, + "id": 1797, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 661, + "id": 1790, "modifierName": { "argumentTypes": null, - "id": 660, + "id": 1789, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "326:10:6", + "referencedDeclaration": 1776, + "src": "326:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "326:10:6" + "src": "326:10:7" } ], "name": "setCompleted", "nodeType": "FunctionDefinition", "parameters": { - "id": 659, + "id": 1788, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 658, + "id": 1787, "name": "completed", "nodeType": "VariableDeclaration", - "scope": 668, - "src": "287:14:6", + "scope": 1797, + "src": "287:14:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1096,10 +1096,10 @@ "typeString": "uint256" }, "typeName": { - "id": 657, + "id": 1786, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "287:4:6", + "src": "287:4:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1109,54 +1109,54 @@ "visibility": "internal" } ], - "src": "286:16:6" + "src": "286:16:7" }, "payable": false, "returnParameters": { - "id": 662, + "id": 1791, "nodeType": "ParameterList", "parameters": [], - "src": "341:0:6" + "src": "341:0:7" }, - "scope": 689, - "src": "265:129:6", + "scope": 1818, + "src": "265:129:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 687, + "id": 1816, "nodeType": "Block", - "src": "476:119:6", + "src": "476:119:7", "statements": [ { "assignments": [ - 676 + 1805 ], "declarations": [ { "constant": false, - "id": 676, + "id": 1805, "name": "upgraded", "nodeType": "VariableDeclaration", - "scope": 688, - "src": "486:19:6", + "scope": 1817, + "src": "486:19:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$689", + "typeIdentifier": "t_contract$_Migrations_$1818", "typeString": "contract Migrations" }, "typeName": { "contractScope": null, - "id": 675, + "id": 1804, "name": "Migrations", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 689, - "src": "486:10:6", + "referencedDeclaration": 1818, + "src": "486:10:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$689", + "typeIdentifier": "t_contract$_Migrations_$1818", "typeString": "contract Migrations" } }, @@ -1164,18 +1164,18 @@ "visibility": "internal" } ], - "id": 680, + "id": 1809, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 678, + "id": 1807, "name": "new_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "519:11:6", + "referencedDeclaration": 1799, + "src": "519:11:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1189,18 +1189,18 @@ "typeString": "address" } ], - "id": 677, + "id": 1806, "name": "Migrations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 689, - "src": "508:10:6", + "referencedDeclaration": 1818, + "src": "508:10:7", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Migrations_$689_$", + "typeIdentifier": "t_type$_t_contract$_Migrations_$1818_$", "typeString": "type(contract Migrations)" } }, - "id": 679, + "id": 1808, "isConstant": false, "isLValue": false, "isPure": false, @@ -1208,14 +1208,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "508:23:6", + "src": "508:23:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$689", + "typeIdentifier": "t_contract$_Migrations_$1818", "typeString": "contract Migrations" } }, "nodeType": "VariableDeclarationStatement", - "src": "486:45:6" + "src": "486:45:7" }, { "expression": { @@ -1223,12 +1223,12 @@ "arguments": [ { "argumentTypes": null, - "id": 684, + "id": 1813, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 638, - "src": "563:24:6", + "referencedDeclaration": 1767, + "src": "563:24:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1244,32 +1244,32 @@ ], "expression": { "argumentTypes": null, - "id": 681, + "id": 1810, "name": "upgraded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "541:8:6", + "referencedDeclaration": 1805, + "src": "541:8:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$689", + "typeIdentifier": "t_contract$_Migrations_$1818", "typeString": "contract Migrations" } }, - "id": 683, + "id": 1812, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "setCompleted", "nodeType": "MemberAccess", - "referencedDeclaration": 668, - "src": "541:21:6", + "referencedDeclaration": 1797, + "src": "541:21:7", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 685, + "id": 1814, "isConstant": false, "isLValue": false, "isPure": false, @@ -1277,57 +1277,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "541:47:6", + "src": "541:47:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 686, + "id": 1815, "nodeType": "ExpressionStatement", - "src": "541:47:6" + "src": "541:47:7" } ] }, "documentation": null, - "id": 688, + "id": 1817, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 673, + "id": 1802, "modifierName": { "argumentTypes": null, - "id": 672, + "id": 1801, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "461:10:6", + "referencedDeclaration": 1776, + "src": "461:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "461:10:6" + "src": "461:10:7" } ], "name": "upgrade", "nodeType": "FunctionDefinition", "parameters": { - "id": 671, + "id": 1800, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 670, + "id": 1799, "name": "new_address", "nodeType": "VariableDeclaration", - "scope": 688, - "src": "417:19:6", + "scope": 1817, + "src": "417:19:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1335,10 +1335,10 @@ "typeString": "address" }, "typeName": { - "id": 669, + "id": 1798, "name": "address", "nodeType": "ElementaryTypeName", - "src": "417:7:6", + "src": "417:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1348,27 +1348,27 @@ "visibility": "internal" } ], - "src": "416:21:6" + "src": "416:21:7" }, "payable": false, "returnParameters": { - "id": 674, + "id": 1803, "nodeType": "ParameterList", "parameters": [], - "src": "476:0:6" + "src": "476:0:7" }, - "scope": 689, - "src": "400:195:6", + "scope": 1818, + "src": "400:195:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 690, - "src": "25:572:6" + "scope": 1819, + "src": "25:572:7" } ], - "src": "0:598:6" + "src": "0:598:7" }, "compiler": { "name": "solc", @@ -1378,28 +1378,28 @@ "4": { "events": {}, "links": {}, - "address": "0xce32c7e2149a331aee2b5c187ed2f6f9c11aeab8", - "transactionHash": "0xfc72d7fe2765cd48383b0b544a4ac17b07652fc9c8202d0f0e4a9042b4bc1104" + "address": "0x41bfe82423b23d9614c7f1e47d23ab0896ca133c", + "transactionHash": "0xd781fb709a95e639590e52d8a2995b4e91856fc367a74a3fd44ac37de4ea2f24" }, - "1529327661534": { + "1530013596495": { "events": {}, "links": {}, - "address": "0x889100a6d41c4f2006ee7fcde320db2482f1859d", - "transactionHash": "0xb9d5d8746b5ee7d2b4473e13f48d0caaffc8a0ee327d1336c40c660fe5706bc1" + "address": "0x85e77316223883c077f5e71767e1681b4bc0deb6", + "transactionHash": "0x451bf5d2511f1070b76e11bc9e2d074f885d950124eece67f6ac30d98b2cf558" }, - "1529333415702": { + "1530525742205": { "events": {}, "links": {}, - "address": "0xf1a3a15c821eb31eadcbbdb05e3a19d41e622074", - "transactionHash": "0x78a7a50665062991b8931337e43ac4f21200e6cecaa102d7685d9a391119c3ce" + "address": "0xaf6dba5fd3a2132778f8597a9cfd55d561ed6bfb", + "transactionHash": "0xb6a19a7a679a1474c09c651e4151421f210afa3f47effed019d4c0206144ee5f" }, - "1529652204341": { + "1530611935189": { "events": {}, "links": {}, - "address": "0x8b8f0365a24b4c968b7a1ada7b116c510f2df133", + "address": "0x70b6c3a4bc8da13c036845ac1f49f13aed8a33c3", "transactionHash": "0xb6a19a7a679a1474c09c651e4151421f210afa3f47effed019d4c0206144ee5f" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-22T07:24:16.275Z" + "updatedAt": "2018-07-03T09:59:18.520Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Module.json b/safe-contracts/build/contracts/Module.json index 94a46b4934..7ba6909079 100644 --- a/safe-contracts/build/contracts/Module.json +++ b/safe-contracts/build/contracts/Module.json @@ -32,49 +32,49 @@ ], "bytecode": "0x608060405234801561001057600080fd5b50610320806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156101fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156102b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058209951147672cfe41d050b6272c4cb5ea71158398cc1e2f233091154979218fedc0029", "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156101fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156102b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058209951147672cfe41d050b6272c4cb5ea71158398cc1e2f233091154979218fedc0029", - "sourceMap": "225:511:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:511:5;;;;;;;", - "deployedSourceMap": "225:511:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;;;;;;;;;;;;:::o;626:248:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:4;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o", + "sourceMap": "225:511:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:511:8;;;;;;;", + "deployedSourceMap": "225:511:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:8;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:8;;;;;;;;;;;;;:::o;626:248:5:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o", "source": "pragma solidity 0.4.24;\nimport \"./MasterCopy.sol\";\nimport \"./ModuleManager.sol\";\n\n\n/// @title Module - Base class for modules.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract Module is MasterCopy {\n\n ModuleManager public manager;\n\n modifier authorized() {\n require(msg.sender == address(manager), \"Method can only be called from manager\");\n _;\n }\n\n function setManager()\n internal\n {\n // manager can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(manager) == 0, \"Manager has already been set\");\n manager = ModuleManager(msg.sender);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "exportedSymbols": { "Module": [ - 651 + 1861 ] }, - "id": 652, + "id": 1862, "nodeType": "SourceUnit", "nodes": [ { - "id": 610, + "id": 1820, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:5" + "src": "0:23:8" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 611, + "id": 1821, "nodeType": "ImportDirective", - "scope": 652, - "sourceUnit": 609, - "src": "24:26:5", + "scope": 1862, + "sourceUnit": 633, + "src": "24:26:8", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 612, + "id": 1822, "nodeType": "ImportDirective", - "scope": 652, - "sourceUnit": 1023, - "src": "51:29:5", + "scope": 1862, + "sourceUnit": 2233, + "src": "51:29:8", "symbolAliases": [], "unitAlias": "" }, @@ -84,59 +84,59 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 613, + "id": 1823, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 608, - "src": "244:10:5", + "referencedDeclaration": 632, + "src": "244:10:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$608", + "typeIdentifier": "t_contract$_MasterCopy_$632", "typeString": "contract MasterCopy" } }, - "id": 614, + "id": 1824, "nodeType": "InheritanceSpecifier", - "src": "244:10:5" + "src": "244:10:8" } ], "contractDependencies": [ - 608, - 1449 + 632, + 3065 ], "contractKind": "contract", "documentation": "@title Module - Base class for modules.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 651, + "id": 1861, "linearizedBaseContracts": [ - 651, - 608, - 1449 + 1861, + 632, + 3065 ], "name": "Module", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 616, + "id": 1826, "name": "manager", "nodeType": "VariableDeclaration", - "scope": 651, - "src": "262:28:5", + "scope": 1861, + "src": "262:28:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" }, "typeName": { "contractScope": null, - "id": 615, + "id": 1825, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1022, - "src": "262:13:5", + "referencedDeclaration": 2232, + "src": "262:13:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, @@ -145,9 +145,9 @@ }, { "body": { - "id": 629, + "id": 1839, "nodeType": "Block", - "src": "319:109:5", + "src": "319:109:8", "statements": [ { "expression": { @@ -159,7 +159,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 624, + "id": 1834, "isConstant": false, "isLValue": false, "isPure": false, @@ -168,18 +168,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 619, + "id": 1829, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1773, - "src": "337:3:5", + "referencedDeclaration": 4036, + "src": "337:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 620, + "id": 1830, "isConstant": false, "isLValue": false, "isPure": false, @@ -187,7 +187,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "337:10:5", + "src": "337:10:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -200,14 +200,14 @@ "arguments": [ { "argumentTypes": null, - "id": 622, + "id": 1832, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 616, - "src": "359:7:5", + "referencedDeclaration": 1826, + "src": "359:7:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } } @@ -215,24 +215,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } ], - "id": 621, + "id": 1831, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "351:7:5", + "src": "351:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 623, + "id": 1833, "isConstant": false, "isLValue": false, "isPure": false, @@ -240,13 +240,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "351:16:5", + "src": "351:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "337:30:5", + "src": "337:30:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -255,14 +255,14 @@ { "argumentTypes": null, "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d616e61676572", - "id": 625, + "id": 1835, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "369:40:5", + "src": "369:40:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f857f17fb7e241a141cb689ce417fc402008e9655fbe55c721e32587b5d510de", @@ -282,21 +282,21 @@ "typeString": "literal_string \"Method can only be called from manager\"" } ], - "id": 618, + "id": 1828, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "329:7:5", + "referencedDeclaration": 4040, + "src": "329:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 626, + "id": 1836, "isConstant": false, "isLValue": false, "isPure": false, @@ -304,41 +304,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:81:5", + "src": "329:81:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 627, + "id": 1837, "nodeType": "ExpressionStatement", - "src": "329:81:5" + "src": "329:81:8" }, { - "id": 628, + "id": 1838, "nodeType": "PlaceholderStatement", - "src": "420:1:5" + "src": "420:1:8" } ] }, "documentation": null, - "id": 630, + "id": 1840, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 617, + "id": 1827, "nodeType": "ParameterList", "parameters": [], - "src": "316:2:5" + "src": "316:2:8" }, - "src": "297:131:5", + "src": "297:131:8", "visibility": "internal" }, { "body": { - "id": 649, + "id": 1859, "nodeType": "Block", - "src": "477:257:5", + "src": "477:257:8", "statements": [ { "expression": { @@ -350,7 +350,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 638, + "id": 1848, "isConstant": false, "isLValue": false, "isPure": false, @@ -360,14 +360,14 @@ "arguments": [ { "argumentTypes": null, - "id": 635, + "id": 1845, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 616, - "src": "636:7:5", + "referencedDeclaration": 1826, + "src": "636:7:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } } @@ -375,24 +375,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } ], - "id": 634, + "id": 1844, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "628:7:5", + "src": "628:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 636, + "id": 1846, "isConstant": false, "isLValue": false, "isPure": false, @@ -400,7 +400,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "628:16:5", + "src": "628:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -411,14 +411,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 637, + "id": 1847, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "648:1:5", + "src": "648:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -426,7 +426,7 @@ }, "value": "0" }, - "src": "628:21:5", + "src": "628:21:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -435,14 +435,14 @@ { "argumentTypes": null, "hexValue": "4d616e616765722068617320616c7265616479206265656e20736574", - "id": 639, + "id": 1849, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "651:30:5", + "src": "651:30:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_5b4e79257e154cde85ff5a3cf5bf48eb2c3921f8c031de73d371d41be013f3cc", @@ -462,21 +462,21 @@ "typeString": "literal_string \"Manager has already been set\"" } ], - "id": 633, + "id": 1843, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "620:7:5", + "referencedDeclaration": 4040, + "src": "620:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 640, + "id": 1850, "isConstant": false, "isLValue": false, "isPure": false, @@ -484,34 +484,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "620:62:5", + "src": "620:62:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 641, + "id": 1851, "nodeType": "ExpressionStatement", - "src": "620:62:5" + "src": "620:62:8" }, { "expression": { "argumentTypes": null, - "id": 647, + "id": 1857, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 642, + "id": 1852, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 616, - "src": "692:7:5", + "referencedDeclaration": 1826, + "src": "692:7:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, @@ -524,18 +524,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 644, + "id": 1854, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1773, - "src": "716:3:5", + "referencedDeclaration": 4036, + "src": "716:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 645, + "id": 1855, "isConstant": false, "isLValue": false, "isPure": false, @@ -543,7 +543,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "716:10:5", + "src": "716:10:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -557,18 +557,18 @@ "typeString": "address" } ], - "id": 643, + "id": 1853, "name": "ModuleManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1022, - "src": "702:13:5", + "referencedDeclaration": 2232, + "src": "702:13:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ModuleManager_$1022_$", + "typeIdentifier": "t_type$_t_contract$_ModuleManager_$2232_$", "typeString": "type(contract ModuleManager)" } }, - "id": 646, + "id": 1856, "isConstant": false, "isLValue": false, "isPure": false, @@ -576,26 +576,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "702:25:5", + "src": "702:25:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, - "src": "692:35:5", + "src": "692:35:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, - "id": 648, + "id": 1858, "nodeType": "ExpressionStatement", - "src": "692:35:5" + "src": "692:35:8" } ] }, "documentation": null, - "id": 650, + "id": 1860, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -603,70 +603,70 @@ "name": "setManager", "nodeType": "FunctionDefinition", "parameters": { - "id": 631, + "id": 1841, "nodeType": "ParameterList", "parameters": [], - "src": "453:2:5" + "src": "453:2:8" }, "payable": false, "returnParameters": { - "id": 632, + "id": 1842, "nodeType": "ParameterList", "parameters": [], - "src": "477:0:5" + "src": "477:0:8" }, - "scope": 651, - "src": "434:300:5", + "scope": 1861, + "src": "434:300:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 652, - "src": "225:511:5" + "scope": 1862, + "src": "225:511:8" } ], - "src": "0:737:5" + "src": "0:737:8" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "exportedSymbols": { "Module": [ - 651 + 1861 ] }, - "id": 652, + "id": 1862, "nodeType": "SourceUnit", "nodes": [ { - "id": 610, + "id": 1820, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:5" + "src": "0:23:8" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 611, + "id": 1821, "nodeType": "ImportDirective", - "scope": 652, - "sourceUnit": 609, - "src": "24:26:5", + "scope": 1862, + "sourceUnit": 633, + "src": "24:26:8", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 612, + "id": 1822, "nodeType": "ImportDirective", - "scope": 652, - "sourceUnit": 1023, - "src": "51:29:5", + "scope": 1862, + "sourceUnit": 2233, + "src": "51:29:8", "symbolAliases": [], "unitAlias": "" }, @@ -676,59 +676,59 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 613, + "id": 1823, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 608, - "src": "244:10:5", + "referencedDeclaration": 632, + "src": "244:10:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$608", + "typeIdentifier": "t_contract$_MasterCopy_$632", "typeString": "contract MasterCopy" } }, - "id": 614, + "id": 1824, "nodeType": "InheritanceSpecifier", - "src": "244:10:5" + "src": "244:10:8" } ], "contractDependencies": [ - 608, - 1449 + 632, + 3065 ], "contractKind": "contract", "documentation": "@title Module - Base class for modules.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 651, + "id": 1861, "linearizedBaseContracts": [ - 651, - 608, - 1449 + 1861, + 632, + 3065 ], "name": "Module", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 616, + "id": 1826, "name": "manager", "nodeType": "VariableDeclaration", - "scope": 651, - "src": "262:28:5", + "scope": 1861, + "src": "262:28:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" }, "typeName": { "contractScope": null, - "id": 615, + "id": 1825, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1022, - "src": "262:13:5", + "referencedDeclaration": 2232, + "src": "262:13:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, @@ -737,9 +737,9 @@ }, { "body": { - "id": 629, + "id": 1839, "nodeType": "Block", - "src": "319:109:5", + "src": "319:109:8", "statements": [ { "expression": { @@ -751,7 +751,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 624, + "id": 1834, "isConstant": false, "isLValue": false, "isPure": false, @@ -760,18 +760,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 619, + "id": 1829, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1773, - "src": "337:3:5", + "referencedDeclaration": 4036, + "src": "337:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 620, + "id": 1830, "isConstant": false, "isLValue": false, "isPure": false, @@ -779,7 +779,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "337:10:5", + "src": "337:10:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -792,14 +792,14 @@ "arguments": [ { "argumentTypes": null, - "id": 622, + "id": 1832, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 616, - "src": "359:7:5", + "referencedDeclaration": 1826, + "src": "359:7:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } } @@ -807,24 +807,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } ], - "id": 621, + "id": 1831, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "351:7:5", + "src": "351:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 623, + "id": 1833, "isConstant": false, "isLValue": false, "isPure": false, @@ -832,13 +832,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "351:16:5", + "src": "351:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "337:30:5", + "src": "337:30:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -847,14 +847,14 @@ { "argumentTypes": null, "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d616e61676572", - "id": 625, + "id": 1835, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "369:40:5", + "src": "369:40:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f857f17fb7e241a141cb689ce417fc402008e9655fbe55c721e32587b5d510de", @@ -874,21 +874,21 @@ "typeString": "literal_string \"Method can only be called from manager\"" } ], - "id": 618, + "id": 1828, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "329:7:5", + "referencedDeclaration": 4040, + "src": "329:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 626, + "id": 1836, "isConstant": false, "isLValue": false, "isPure": false, @@ -896,41 +896,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:81:5", + "src": "329:81:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 627, + "id": 1837, "nodeType": "ExpressionStatement", - "src": "329:81:5" + "src": "329:81:8" }, { - "id": 628, + "id": 1838, "nodeType": "PlaceholderStatement", - "src": "420:1:5" + "src": "420:1:8" } ] }, "documentation": null, - "id": 630, + "id": 1840, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 617, + "id": 1827, "nodeType": "ParameterList", "parameters": [], - "src": "316:2:5" + "src": "316:2:8" }, - "src": "297:131:5", + "src": "297:131:8", "visibility": "internal" }, { "body": { - "id": 649, + "id": 1859, "nodeType": "Block", - "src": "477:257:5", + "src": "477:257:8", "statements": [ { "expression": { @@ -942,7 +942,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 638, + "id": 1848, "isConstant": false, "isLValue": false, "isPure": false, @@ -952,14 +952,14 @@ "arguments": [ { "argumentTypes": null, - "id": 635, + "id": 1845, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 616, - "src": "636:7:5", + "referencedDeclaration": 1826, + "src": "636:7:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } } @@ -967,24 +967,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } ], - "id": 634, + "id": 1844, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "628:7:5", + "src": "628:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 636, + "id": 1846, "isConstant": false, "isLValue": false, "isPure": false, @@ -992,7 +992,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "628:16:5", + "src": "628:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1003,14 +1003,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 637, + "id": 1847, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "648:1:5", + "src": "648:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1018,7 +1018,7 @@ }, "value": "0" }, - "src": "628:21:5", + "src": "628:21:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1027,14 +1027,14 @@ { "argumentTypes": null, "hexValue": "4d616e616765722068617320616c7265616479206265656e20736574", - "id": 639, + "id": 1849, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "651:30:5", + "src": "651:30:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_5b4e79257e154cde85ff5a3cf5bf48eb2c3921f8c031de73d371d41be013f3cc", @@ -1054,21 +1054,21 @@ "typeString": "literal_string \"Manager has already been set\"" } ], - "id": 633, + "id": 1843, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "620:7:5", + "referencedDeclaration": 4040, + "src": "620:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 640, + "id": 1850, "isConstant": false, "isLValue": false, "isPure": false, @@ -1076,34 +1076,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "620:62:5", + "src": "620:62:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 641, + "id": 1851, "nodeType": "ExpressionStatement", - "src": "620:62:5" + "src": "620:62:8" }, { "expression": { "argumentTypes": null, - "id": 647, + "id": 1857, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 642, + "id": 1852, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 616, - "src": "692:7:5", + "referencedDeclaration": 1826, + "src": "692:7:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, @@ -1116,18 +1116,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 644, + "id": 1854, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1773, - "src": "716:3:5", + "referencedDeclaration": 4036, + "src": "716:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 645, + "id": 1855, "isConstant": false, "isLValue": false, "isPure": false, @@ -1135,7 +1135,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "716:10:5", + "src": "716:10:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1149,18 +1149,18 @@ "typeString": "address" } ], - "id": 643, + "id": 1853, "name": "ModuleManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1022, - "src": "702:13:5", + "referencedDeclaration": 2232, + "src": "702:13:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ModuleManager_$1022_$", + "typeIdentifier": "t_type$_t_contract$_ModuleManager_$2232_$", "typeString": "type(contract ModuleManager)" } }, - "id": 646, + "id": 1856, "isConstant": false, "isLValue": false, "isPure": false, @@ -1168,26 +1168,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "702:25:5", + "src": "702:25:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, - "src": "692:35:5", + "src": "692:35:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, - "id": 648, + "id": 1858, "nodeType": "ExpressionStatement", - "src": "692:35:5" + "src": "692:35:8" } ] }, "documentation": null, - "id": 650, + "id": 1860, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1195,30 +1195,30 @@ "name": "setManager", "nodeType": "FunctionDefinition", "parameters": { - "id": 631, + "id": 1841, "nodeType": "ParameterList", "parameters": [], - "src": "453:2:5" + "src": "453:2:8" }, "payable": false, "returnParameters": { - "id": 632, + "id": 1842, "nodeType": "ParameterList", "parameters": [], - "src": "477:0:5" + "src": "477:0:8" }, - "scope": 651, - "src": "434:300:5", + "scope": 1861, + "src": "434:300:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 652, - "src": "225:511:5" + "scope": 1862, + "src": "225:511:8" } ], - "src": "0:737:5" + "src": "0:737:8" }, "compiler": { "name": "solc", @@ -1226,5 +1226,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-20T07:57:27.004Z" + "updatedAt": "2018-06-29T09:01:22.064Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ModuleManager.json b/safe-contracts/build/contracts/ModuleManager.json index da7aae749e..1921acde45 100644 --- a/safe-contracts/build/contracts/ModuleManager.json +++ b/safe-contracts/build/contracts/ModuleManager.json @@ -140,60 +140,60 @@ ], "bytecode": "0x608060405234801561001057600080fd5b50611165806100206000396000f300608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104f1565b005b34801561018c57600080fd5b506101956108cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6108d0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610909565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bac565b005b34801561034257600080fd5b5061034b610fc1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b6104e7858585855a610ffa565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561060e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561076e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515610a1b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610977565b82604051908082528060200260200182016040528015610a4a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515610ba357818184815181101515610af957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610ab4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610cc95750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610d3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000600281111561100a57fe5b84600281111561101657fe5b141561102f57611028878787866110f7565b91506110ed565b6001600281111561103c57fe5b84600281111561104857fe5b141561106057611059878685611110565b91506110ec565b61106985611127565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820f43e83d5443f40446e47e2fddd6078716f3db286865b817224b5e97c0bf020390029", "deployedBytecode": "0x608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104f1565b005b34801561018c57600080fd5b506101956108cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6108d0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610909565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bac565b005b34801561034257600080fd5b5061034b610fc1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b6104e7858585855a610ffa565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561060e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561076e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515610a1b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610977565b82604051908082528060200260200182016040528015610a4a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515610ba357818184815181101515610af957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610ab4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610cc95750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610d3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000600281111561100a57fe5b84600281111561101657fe5b141561102f57611028878787866110f7565b91506110ed565b6001600281111561103c57fe5b84600281111561104857fe5b141561106057611059878685611110565b91506110ec565b61106985611127565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820f43e83d5443f40446e47e2fddd6078716f3db286865b817224b5e97c0bf020390029", - "sourceMap": "303:5231:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;303:5231:6;;;;;;;", - "deployedSourceMap": "303:5231:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2841:429;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2841:429:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:459;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:459:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;401:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;401:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4794:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4794:738:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4794:738:6;;;;;;;;;;;;;;;;;2031:474;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:474:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;453:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2841:429;2973:12;3081:1;3058:7;:19;3066:10;3058:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;3050:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3217:46;3225:2;3229:5;3236:4;3242:9;3253;3217:7;:46::i;:::-;3207:56;;2841:429;;;;;;:::o;1311:459::-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:1:6;1466:6;1458:20;;;;:59;;;;;550:3;1482:35;;1490:6;1482:35;;;;1458:59;1450:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1631:1;1612:7;:15;1620:6;1612:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1604:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:7;:25;550:3;1694:25;;;;;;;;;;;;;;;;;;;;;;;;;1676:7;:15;1684:6;1676:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1757:6;1729:7;:25;550:3;1729:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1311:459;:::o;499:55::-;550:3;499:55;:::o;401:46::-;;;;;;;;;;;;;;;;;;;;:::o;4794:738::-;4861:9;4920:19;4953:21;5153:22;4942:1;4920:23;;4977:7;:25;550:3;4977:25;;;;;;;;;;;;;;;;;;;;;;;;;4953:49;;5012:132;550:3;5018:33;;:13;:33;;;;5012:132;;;5083:7;:22;5091:13;5083:22;;;;;;;;;;;;;;;;;;;;;;;;;5067:38;;5119:14;;;;;;;5012:132;;;5192:11;5178:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5178:26:6;;;;5153:51;;5262:1;5248:15;;5289:7;:25;550:3;5289:25;;;;;;;;;;;;;;;;;;;;;;;;;5273:41;;5324:180;550:3;5330:33;;:13;:33;;;;5324:180;;;5400:13;5379:5;5385:11;5379:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5443:7;:22;5451:13;5443:22;;;;;;;;;;;;;;;;;;;;;;;;;5427:38;;5479:14;;;;;;;5324:180;;;5520:5;5513:12;;4794:738;;;;:::o;2031:474::-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:1:6;2234:6;2226:20;;;;:59;;;;;550:3;2250:35;;2258:6;2250:35;;;;2226:59;2218:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2370:6;2339:38;;:7;:19;2347:10;2339:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2331:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2454:7;:15;2462:6;2454:15;;;;;;;;;;;;;;;;;;;;;;;;;2432:7;:19;2440:10;2432:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2497:1;2479:7;:15;2487:6;2479:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;2031:474;;:::o;453:40::-;;;;;;;;;;;;;;;;;;;;:::o;3276:548::-;3407:12;3678:19;3452;3439:32;;;;;;;;:9;:32;;;;;;;;;3435:383;;;3495:35;3507:2;3511:5;3518:4;3524:5;3495:11;:35::i;:::-;3485:45;;3435:383;;;3562:27;3549:40;;;;;;;;:9;:40;;;;;;;;;3545:273;;;3613:36;3633:2;3637:4;3643:5;3613:19;:36::i;:::-;3603:46;;3545:273;;;3700:19;3714:4;3700:13;:19::i;:::-;3678:41;;3758:1;3743:11;:16;;;;3733:26;;3778:29;3795:11;3778:29;;;;;;;;;;;;;;;;;;;;;;3545:273;3435:383;3276:548;;;;;;;;:::o;3830:309::-;3939:12;4121:1;4118;4111:4;4105:11;4098:4;4092;4088:15;4081:5;4077:2;4070:5;4065:58;4054:69;;4040:93;;;;;;:::o;4145:303::-;4247:12;4430:1;4427;4420:4;4414:11;4407:4;4401;4397:15;4393:2;4386:5;4373:59;4362:70;;4348:94;;;;;:::o;4454:261::-;4523:19;4693:4;4687:11;4680:4;4674;4670:15;4667:1;4660:39;4645:54;;4631:78;;;:::o", + "sourceMap": "303:5231:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;303:5231:9;;;;;;;", + "deployedSourceMap": "303:5231:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2841:429;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2841:429:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:459;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:459:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:9;;;;;;;;;;;;;;;;;;;;;;;;;;;401:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;401:46:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4794:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4794:738:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4794:738:9;;;;;;;;;;;;;;;;;2031:474;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:474:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;453:40:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2841:429;2973:12;3081:1;3058:7;:19;3066:10;3058:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;3050:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3217:46;3225:2;3229:5;3236:4;3242:9;3253;3217:7;:46::i;:::-;3207:56;;2841:429;;;;;;:::o;1311:459::-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:1:9;1466:6;1458:20;;;;:59;;;;;550:3;1482:35;;1490:6;1482:35;;;;1458:59;1450:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1631:1;1612:7;:15;1620:6;1612:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1604:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:7;:25;550:3;1694:25;;;;;;;;;;;;;;;;;;;;;;;;;1676:7;:15;1684:6;1676:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1757:6;1729:7;:25;550:3;1729:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1311:459;:::o;499:55::-;550:3;499:55;:::o;401:46::-;;;;;;;;;;;;;;;;;;;;:::o;4794:738::-;4861:9;4920:19;4953:21;5153:22;4942:1;4920:23;;4977:7;:25;550:3;4977:25;;;;;;;;;;;;;;;;;;;;;;;;;4953:49;;5012:132;550:3;5018:33;;:13;:33;;;;5012:132;;;5083:7;:22;5091:13;5083:22;;;;;;;;;;;;;;;;;;;;;;;;;5067:38;;5119:14;;;;;;;5012:132;;;5192:11;5178:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5178:26:9;;;;5153:51;;5262:1;5248:15;;5289:7;:25;550:3;5289:25;;;;;;;;;;;;;;;;;;;;;;;;;5273:41;;5324:180;550:3;5330:33;;:13;:33;;;;5324:180;;;5400:13;5379:5;5385:11;5379:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5443:7;:22;5451:13;5443:22;;;;;;;;;;;;;;;;;;;;;;;;;5427:38;;5479:14;;;;;;;5324:180;;;5520:5;5513:12;;4794:738;;;;:::o;2031:474::-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:1:9;2234:6;2226:20;;;;:59;;;;;550:3;2250:35;;2258:6;2250:35;;;;2226:59;2218:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2370:6;2339:38;;:7;:19;2347:10;2339:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2331:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2454:7;:15;2462:6;2454:15;;;;;;;;;;;;;;;;;;;;;;;;;2432:7;:19;2440:10;2432:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2497:1;2479:7;:15;2487:6;2479:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;2031:474;;:::o;453:40::-;;;;;;;;;;;;;;;;;;;;:::o;3276:548::-;3407:12;3678:19;3452;3439:32;;;;;;;;:9;:32;;;;;;;;;3435:383;;;3495:35;3507:2;3511:5;3518:4;3524:5;3495:11;:35::i;:::-;3485:45;;3435:383;;;3562:27;3549:40;;;;;;;;:9;:40;;;;;;;;;3545:273;;;3613:36;3633:2;3637:4;3643:5;3613:19;:36::i;:::-;3603:46;;3545:273;;;3700:19;3714:4;3700:13;:19::i;:::-;3678:41;;3758:1;3743:11;:16;;;;3733:26;;3778:29;3795:11;3778:29;;;;;;;;;;;;;;;;;;;;;;3545:273;3435:383;3276:548;;;;;;;;:::o;3830:309::-;3939:12;4121:1;4118;4111:4;4105:11;4098:4;4092;4088:15;4081:5;4077:2;4070:5;4065:58;4054:69;;4040:93;;;;;;:::o;4145:303::-;4247:12;4430:1;4427;4420:4;4414:11;4407:4;4401;4397:15;4393:2;4386:5;4373:59;4362:70;;4348:94;;;;;:::o;4454:261::-;4523:19;4693:4;4687:11;4680:4;4674;4670:15;4667:1;4660:39;4645:54;;4631:78;;;:::o", "source": "pragma solidity 0.4.24;\nimport \"./Module.sol\";\nimport \"./MasterCopy.sol\";\nimport \"./Enum.sol\";\n\n\n/// @title Module Manager - A contract that manages modules that can execute transactions via this contract\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract ModuleManager is SelfAuthorized {\n\n event ContractCreation(address newContract);\n\n string public constant NAME = \"Module Manager\";\n string public constant VERSION = \"0.0.1\";\n address public constant SENTINEL_MODULES = address(0x1);\n\n mapping (address => address) internal modules;\n\n /// @dev Fallback function accepts Ether transactions.\n function ()\n external\n payable\n {\n\n }\n\n function setupModules(address to, bytes data)\n internal\n {\n require(modules[SENTINEL_MODULES] == 0, \"Modules have already been initialized\");\n modules[SENTINEL_MODULES] = SENTINEL_MODULES;\n if (to != 0)\n // Setup has to complete successfully or transaction fails.\n require(executeDelegateCall(to, data, gasleft()), \"Could not finish initialization\");\n }\n\n /// @dev Allows to add a module to the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param module Module to be whitelisted.\n function enableModule(Module module)\n public\n authorized\n {\n // Module address cannot be null or sentinel.\n require(address(module) != 0 && address(module) != SENTINEL_MODULES, \"Invalid module address provided\");\n // Module cannot be added twice.\n require(modules[module] == 0, \"Module has already been added\");\n modules[module] = modules[SENTINEL_MODULES];\n modules[SENTINEL_MODULES] = module;\n }\n\n /// @dev Allows to remove a module from the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param prevModule Module that pointed to the module to be removed in the linked list\n /// @param module Module to be removed.\n function disableModule(Module prevModule, Module module)\n public\n authorized\n {\n // Validate module address and check that it corresponds to module index.\n require(address(module) != 0 && address(module) != SENTINEL_MODULES, \"Invalid module address provided\");\n require(modules[prevModule] == address(module), \"Invalid prevModule, module pair provided\");\n modules[prevModule] = modules[module];\n modules[module] = 0;\n }\n\n /// @dev Allows a Module to execute a Safe transaction without any further confirmations.\n /// @param to Destination address of module transaction.\n /// @param value Ether value of module transaction.\n /// @param data Data payload of module transaction.\n /// @param operation Operation type of module transaction.\n function execTransactionFromModule(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n returns (bool success)\n {\n // Only whitelisted modules are allowed.\n require(modules[msg.sender] != 0, \"Method can only be called from an enabled module\");\n // Execute transaction without further confirmations.\n success = execute(to, value, data, operation, gasleft());\n }\n\n function execute(address to, uint256 value, bytes data, Enum.Operation operation, uint256 txGas)\n internal\n returns (bool success)\n {\n if (operation == Enum.Operation.Call)\n success = executeCall(to, value, data, txGas);\n else if (operation == Enum.Operation.DelegateCall)\n success = executeDelegateCall(to, data, txGas);\n else {\n address newContract = executeCreate(data);\n success = newContract != 0;\n emit ContractCreation(newContract);\n }\n }\n\n function executeCall(address to, uint256 value, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeDelegateCall(address to, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeCreate(bytes data)\n internal\n returns (address newContract)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n newContract := create(0, add(data, 0x20), mload(data))\n }\n }\n\n /// @dev Returns array of modules.\n /// @return Array of modules.\n function getModules()\n public\n view\n returns (address[])\n {\n // Calculate module count\n uint256 moduleCount = 0;\n address currentModule = modules[SENTINEL_MODULES];\n while(currentModule != SENTINEL_MODULES) {\n currentModule = modules[currentModule];\n moduleCount ++;\n }\n address[] memory array = new address[](moduleCount);\n\n // populate return array\n moduleCount = 0;\n currentModule = modules[SENTINEL_MODULES];\n while(currentModule != SENTINEL_MODULES) {\n array[moduleCount] = currentModule;\n currentModule = modules[currentModule];\n moduleCount ++;\n }\n return array;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "exportedSymbols": { "ModuleManager": [ - 1022 + 2232 ] }, - "id": 1023, + "id": 2233, "nodeType": "SourceUnit", "nodes": [ { - "id": 653, + "id": 1863, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:6" + "src": "0:23:9" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 654, + "id": 1864, "nodeType": "ImportDirective", - "scope": 1023, - "sourceUnit": 652, - "src": "24:22:6", + "scope": 2233, + "sourceUnit": 1862, + "src": "24:22:9", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 655, + "id": 1865, "nodeType": "ImportDirective", - "scope": 1023, - "sourceUnit": 609, - "src": "47:26:6", + "scope": 2233, + "sourceUnit": 633, + "src": "47:26:9", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "./Enum.sol", - "id": 656, + "id": 1866, "nodeType": "ImportDirective", - "scope": 1023, - "sourceUnit": 7, - "src": "74:20:6", + "scope": 2233, + "sourceUnit": 31, + "src": "74:20:9", "symbolAliases": [], "unitAlias": "" }, @@ -203,31 +203,31 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 657, + "id": 1867, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1449, - "src": "329:14:6", + "referencedDeclaration": 3065, + "src": "329:14:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1449", + "typeIdentifier": "t_contract$_SelfAuthorized_$3065", "typeString": "contract SelfAuthorized" } }, - "id": 658, + "id": 1868, "nodeType": "InheritanceSpecifier", - "src": "329:14:6" + "src": "329:14:9" } ], "contractDependencies": [ - 1449 + 3065 ], "contractKind": "contract", "documentation": "@title Module Manager - A contract that manages modules that can execute transactions via this contract\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1022, + "id": 2232, "linearizedBaseContracts": [ - 1022, - 1449 + 2232, + 3065 ], "name": "ModuleManager", "nodeType": "ContractDefinition", @@ -235,21 +235,21 @@ { "anonymous": false, "documentation": null, - "id": 662, + "id": 1872, "name": "ContractCreation", "nodeType": "EventDefinition", "parameters": { - "id": 661, + "id": 1871, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 660, + "id": 1870, "indexed": false, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 662, - "src": "374:19:6", + "scope": 1872, + "src": "374:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -257,10 +257,10 @@ "typeString": "address" }, "typeName": { - "id": 659, + "id": 1869, "name": "address", "nodeType": "ElementaryTypeName", - "src": "374:7:6", + "src": "374:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -270,17 +270,17 @@ "visibility": "internal" } ], - "src": "373:21:6" + "src": "373:21:9" }, - "src": "351:44:6" + "src": "351:44:9" }, { "constant": true, - "id": 665, + "id": 1875, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1022, - "src": "401:46:6", + "scope": 2232, + "src": "401:46:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -288,10 +288,10 @@ "typeString": "string" }, "typeName": { - "id": 663, + "id": 1873, "name": "string", "nodeType": "ElementaryTypeName", - "src": "401:6:6", + "src": "401:6:9", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -300,14 +300,14 @@ "value": { "argumentTypes": null, "hexValue": "4d6f64756c65204d616e61676572", - "id": 664, + "id": 1874, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "431:16:6", + "src": "431:16:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_12aaa44a1bae367a1e1d9881f5d80283afded6373c2a1ca586db420944084efb", @@ -319,11 +319,11 @@ }, { "constant": true, - "id": 668, + "id": 1878, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1022, - "src": "453:40:6", + "scope": 2232, + "src": "453:40:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -331,10 +331,10 @@ "typeString": "string" }, "typeName": { - "id": 666, + "id": 1876, "name": "string", "nodeType": "ElementaryTypeName", - "src": "453:6:6", + "src": "453:6:9", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -343,14 +343,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 667, + "id": 1877, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "486:7:6", + "src": "486:7:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -362,11 +362,11 @@ }, { "constant": true, - "id": 673, + "id": 1883, "name": "SENTINEL_MODULES", "nodeType": "VariableDeclaration", - "scope": 1022, - "src": "499:55:6", + "scope": 2232, + "src": "499:55:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -374,10 +374,10 @@ "typeString": "address" }, "typeName": { - "id": 669, + "id": 1879, "name": "address", "nodeType": "ElementaryTypeName", - "src": "499:7:6", + "src": "499:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -389,14 +389,14 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 671, + "id": 1881, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "550:3:6", + "src": "550:3:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -412,20 +412,20 @@ "typeString": "int_const 1" } ], - "id": 670, + "id": 1880, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "542:7:6", + "src": "542:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 672, + "id": 1882, "isConstant": false, "isLValue": false, "isPure": true, @@ -433,7 +433,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "542:12:6", + "src": "542:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -443,11 +443,11 @@ }, { "constant": false, - "id": 677, + "id": 1887, "name": "modules", "nodeType": "VariableDeclaration", - "scope": 1022, - "src": "561:45:6", + "scope": 2232, + "src": "561:45:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -455,28 +455,28 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 676, + "id": 1886, "keyType": { - "id": 674, + "id": 1884, "name": "address", "nodeType": "ElementaryTypeName", - "src": "570:7:6", + "src": "570:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "561:28:6", + "src": "561:28:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" }, "valueType": { - "id": 675, + "id": 1885, "name": "address", "nodeType": "ElementaryTypeName", - "src": "581:7:6", + "src": "581:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -488,13 +488,13 @@ }, { "body": { - "id": 680, + "id": 1890, "nodeType": "Block", - "src": "721:8:6", + "src": "721:8:9", "statements": [] }, "documentation": "@dev Fallback function accepts Ether transactions.", - "id": 681, + "id": 1891, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -502,29 +502,29 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 678, + "id": 1888, "nodeType": "ParameterList", "parameters": [], - "src": "681:2:6" + "src": "681:2:9" }, "payable": true, "returnParameters": { - "id": 679, + "id": 1889, "nodeType": "ParameterList", "parameters": [], - "src": "721:0:6" + "src": "721:0:9" }, - "scope": 1022, - "src": "672:57:6", + "scope": 2232, + "src": "672:57:9", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 717, + "id": 1927, "nodeType": "Block", - "src": "802:342:6", + "src": "802:342:9", "statements": [ { "expression": { @@ -536,7 +536,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 693, + "id": 1903, "isConstant": false, "isLValue": false, "isPure": false, @@ -545,26 +545,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 689, + "id": 1899, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "820:7:6", + "referencedDeclaration": 1887, + "src": "820:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 691, + "id": 1901, "indexExpression": { "argumentTypes": null, - "id": 690, + "id": 1900, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "828:16:6", + "referencedDeclaration": 1883, + "src": "828:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -575,7 +575,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "820:25:6", + "src": "820:25:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -586,14 +586,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 692, + "id": 1902, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "849:1:6", + "src": "849:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -601,7 +601,7 @@ }, "value": "0" }, - "src": "820:30:6", + "src": "820:30:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -610,14 +610,14 @@ { "argumentTypes": null, "hexValue": "4d6f64756c6573206861766520616c7265616479206265656e20696e697469616c697a6564", - "id": 694, + "id": 1904, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "852:39:6", + "src": "852:39:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1e0428ffa69bff65645154a36d5017c238f946ddaf89430d30eec813f30bdd77", @@ -637,21 +637,21 @@ "typeString": "literal_string \"Modules have already been initialized\"" } ], - "id": 688, + "id": 1898, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "812:7:6", + "referencedDeclaration": 4040, + "src": "812:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 695, + "id": 1905, "isConstant": false, "isLValue": false, "isPure": false, @@ -659,20 +659,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "812:80:6", + "src": "812:80:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 696, + "id": 1906, "nodeType": "ExpressionStatement", - "src": "812:80:6" + "src": "812:80:9" }, { "expression": { "argumentTypes": null, - "id": 701, + "id": 1911, "isConstant": false, "isLValue": false, "isPure": false, @@ -681,26 +681,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 697, + "id": 1907, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "902:7:6", + "referencedDeclaration": 1887, + "src": "902:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 699, + "id": 1909, "indexExpression": { "argumentTypes": null, - "id": 698, + "id": 1908, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "910:16:6", + "referencedDeclaration": 1883, + "src": "910:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -711,7 +711,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "902:25:6", + "src": "902:25:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -721,26 +721,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 700, + "id": 1910, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "930:16:6", + "referencedDeclaration": 1883, + "src": "930:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "902:44:6", + "src": "902:44:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 702, + "id": 1912, "nodeType": "ExpressionStatement", - "src": "902:44:6" + "src": "902:44:9" }, { "condition": { @@ -749,19 +749,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 705, + "id": 1915, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 703, + "id": 1913, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 683, - "src": "960:2:6", + "referencedDeclaration": 1893, + "src": "960:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -772,14 +772,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 704, + "id": 1914, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "966:1:6", + "src": "966:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -787,16 +787,16 @@ }, "value": "0" }, - "src": "960:7:6", + "src": "960:7:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 716, + "id": 1926, "nodeType": "IfStatement", - "src": "956:181:6", + "src": "956:181:9", "trueBody": { "expression": { "argumentTypes": null, @@ -806,12 +806,12 @@ "arguments": [ { "argumentTypes": null, - "id": 708, + "id": 1918, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 683, - "src": "1081:2:6", + "referencedDeclaration": 1893, + "src": "1081:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -819,12 +819,12 @@ }, { "argumentTypes": null, - "id": 709, + "id": 1919, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 685, - "src": "1085:4:6", + "referencedDeclaration": 1895, + "src": "1085:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -835,18 +835,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 710, + "id": 1920, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1766, - "src": "1091:7:6", + "referencedDeclaration": 4029, + "src": "1091:7:9", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 711, + "id": 1921, "isConstant": false, "isLValue": false, "isPure": false, @@ -854,7 +854,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1091:9:6", + "src": "1091:9:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -876,18 +876,18 @@ "typeString": "uint256" } ], - "id": 707, + "id": 1917, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "1061:19:6", + "referencedDeclaration": 2149, + "src": "1061:19:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 712, + "id": 1922, "isConstant": false, "isLValue": false, "isPure": false, @@ -895,7 +895,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:40:6", + "src": "1061:40:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -904,14 +904,14 @@ { "argumentTypes": null, "hexValue": "436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e", - "id": 713, + "id": 1923, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1103:33:6", + "src": "1103:33:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_7913a3f9168bf3e458e3f42eb08db5c4b33f44228d345660887090b75e24c6aa", @@ -931,21 +931,21 @@ "typeString": "literal_string \"Could not finish initialization\"" } ], - "id": 706, + "id": 1916, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1053:7:6", + "referencedDeclaration": 4040, + "src": "1053:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 714, + "id": 1924, "isConstant": false, "isLValue": false, "isPure": false, @@ -953,21 +953,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1053:84:6", + "src": "1053:84:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 715, + "id": 1925, "nodeType": "ExpressionStatement", - "src": "1053:84:6" + "src": "1053:84:9" } } ] }, "documentation": null, - "id": 718, + "id": 1928, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -975,16 +975,16 @@ "name": "setupModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 686, + "id": 1896, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 683, + "id": 1893, "name": "to", "nodeType": "VariableDeclaration", - "scope": 718, - "src": "757:10:6", + "scope": 1928, + "src": "757:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -992,10 +992,10 @@ "typeString": "address" }, "typeName": { - "id": 682, + "id": 1892, "name": "address", "nodeType": "ElementaryTypeName", - "src": "757:7:6", + "src": "757:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1006,11 +1006,11 @@ }, { "constant": false, - "id": 685, + "id": 1895, "name": "data", "nodeType": "VariableDeclaration", - "scope": 718, - "src": "769:10:6", + "scope": 1928, + "src": "769:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1018,10 +1018,10 @@ "typeString": "bytes" }, "typeName": { - "id": 684, + "id": 1894, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "769:5:6", + "src": "769:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1031,26 +1031,26 @@ "visibility": "internal" } ], - "src": "756:24:6" + "src": "756:24:9" }, "payable": false, "returnParameters": { - "id": 687, + "id": 1897, "nodeType": "ParameterList", "parameters": [], - "src": "802:0:6" + "src": "802:0:9" }, - "scope": 1022, - "src": "735:409:6", + "scope": 2232, + "src": "735:409:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 763, + "id": 1973, "nodeType": "Block", - "src": "1386:384:6", + "src": "1386:384:9", "statements": [ { "expression": { @@ -1062,7 +1062,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 736, + "id": 1946, "isConstant": false, "isLValue": false, "isPure": false, @@ -1073,7 +1073,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 730, + "id": 1940, "isConstant": false, "isLValue": false, "isPure": false, @@ -1083,14 +1083,14 @@ "arguments": [ { "argumentTypes": null, - "id": 727, + "id": 1937, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 720, - "src": "1466:6:6", + "referencedDeclaration": 1930, + "src": "1466:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } } @@ -1098,24 +1098,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } ], - "id": 726, + "id": 1936, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1458:7:6", + "src": "1458:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 728, + "id": 1938, "isConstant": false, "isLValue": false, "isPure": false, @@ -1123,7 +1123,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1458:15:6", + "src": "1458:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1134,14 +1134,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 729, + "id": 1939, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1477:1:6", + "src": "1477:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1149,7 +1149,7 @@ }, "value": "0" }, - "src": "1458:20:6", + "src": "1458:20:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1163,7 +1163,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 735, + "id": 1945, "isConstant": false, "isLValue": false, "isPure": false, @@ -1173,14 +1173,14 @@ "arguments": [ { "argumentTypes": null, - "id": 732, + "id": 1942, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 720, - "src": "1490:6:6", + "referencedDeclaration": 1930, + "src": "1490:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } } @@ -1188,24 +1188,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } ], - "id": 731, + "id": 1941, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1482:7:6", + "src": "1482:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 733, + "id": 1943, "isConstant": false, "isLValue": false, "isPure": false, @@ -1213,7 +1213,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1482:15:6", + "src": "1482:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1223,24 +1223,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 734, + "id": 1944, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "1501:16:6", + "referencedDeclaration": 1883, + "src": "1501:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1482:35:6", + "src": "1482:35:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1458:59:6", + "src": "1458:59:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1249,14 +1249,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206d6f64756c6520616464726573732070726f7669646564", - "id": 737, + "id": 1947, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1519:33:6", + "src": "1519:33:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8c2199b479423c52a835dfe8b0f2e9eb4c1ec1069ba198ccc38077a4a88a5c00", @@ -1276,21 +1276,21 @@ "typeString": "literal_string \"Invalid module address provided\"" } ], - "id": 725, + "id": 1935, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1450:7:6", + "referencedDeclaration": 4040, + "src": "1450:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 738, + "id": 1948, "isConstant": false, "isLValue": false, "isPure": false, @@ -1298,15 +1298,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1450:103:6", + "src": "1450:103:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 739, + "id": 1949, "nodeType": "ExpressionStatement", - "src": "1450:103:6" + "src": "1450:103:9" }, { "expression": { @@ -1318,7 +1318,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 745, + "id": 1955, "isConstant": false, "isLValue": false, "isPure": false, @@ -1327,28 +1327,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 741, + "id": 1951, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "1612:7:6", + "referencedDeclaration": 1887, + "src": "1612:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 743, + "id": 1953, "indexExpression": { "argumentTypes": null, - "id": 742, + "id": 1952, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 720, - "src": "1620:6:6", + "referencedDeclaration": 1930, + "src": "1620:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -1357,7 +1357,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1612:15:6", + "src": "1612:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1368,14 +1368,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 744, + "id": 1954, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1631:1:6", + "src": "1631:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1383,7 +1383,7 @@ }, "value": "0" }, - "src": "1612:20:6", + "src": "1612:20:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1392,14 +1392,14 @@ { "argumentTypes": null, "hexValue": "4d6f64756c652068617320616c7265616479206265656e206164646564", - "id": 746, + "id": 1956, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1634:31:6", + "src": "1634:31:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae2b4ea52eaf6de3fb2d8a64b7555be2dfd285b837a62821bf24e7dc6f329450", @@ -1419,21 +1419,21 @@ "typeString": "literal_string \"Module has already been added\"" } ], - "id": 740, + "id": 1950, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1604:7:6", + "referencedDeclaration": 4040, + "src": "1604:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 747, + "id": 1957, "isConstant": false, "isLValue": false, "isPure": false, @@ -1441,20 +1441,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1604:62:6", + "src": "1604:62:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 748, + "id": 1958, "nodeType": "ExpressionStatement", - "src": "1604:62:6" + "src": "1604:62:9" }, { "expression": { "argumentTypes": null, - "id": 755, + "id": 1965, "isConstant": false, "isLValue": false, "isPure": false, @@ -1463,28 +1463,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 749, + "id": 1959, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "1676:7:6", + "referencedDeclaration": 1887, + "src": "1676:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 751, + "id": 1961, "indexExpression": { "argumentTypes": null, - "id": 750, + "id": 1960, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 720, - "src": "1684:6:6", + "referencedDeclaration": 1930, + "src": "1684:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -1493,7 +1493,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1676:15:6", + "src": "1676:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1505,26 +1505,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 752, + "id": 1962, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "1694:7:6", + "referencedDeclaration": 1887, + "src": "1694:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 754, + "id": 1964, "indexExpression": { "argumentTypes": null, - "id": 753, + "id": 1963, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "1702:16:6", + "referencedDeclaration": 1883, + "src": "1702:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1535,26 +1535,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1694:25:6", + "src": "1694:25:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1676:43:6", + "src": "1676:43:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 756, + "id": 1966, "nodeType": "ExpressionStatement", - "src": "1676:43:6" + "src": "1676:43:9" }, { "expression": { "argumentTypes": null, - "id": 761, + "id": 1971, "isConstant": false, "isLValue": false, "isPure": false, @@ -1563,26 +1563,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 757, + "id": 1967, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "1729:7:6", + "referencedDeclaration": 1887, + "src": "1729:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 759, + "id": 1969, "indexExpression": { "argumentTypes": null, - "id": 758, + "id": 1968, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "1737:16:6", + "referencedDeclaration": 1883, + "src": "1737:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1593,7 +1593,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1729:25:6", + "src": "1729:25:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1603,83 +1603,83 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 760, + "id": 1970, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 720, - "src": "1757:6:6", + "referencedDeclaration": 1930, + "src": "1757:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, - "src": "1729:34:6", + "src": "1729:34:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 762, + "id": 1972, "nodeType": "ExpressionStatement", - "src": "1729:34:6" + "src": "1729:34:9" } ] }, "documentation": "@dev Allows to add a module to the whitelist.\n This can only be done via a Safe transaction.\n @param module Module to be whitelisted.", - "id": 764, + "id": 1974, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 723, + "id": 1933, "modifierName": { "argumentTypes": null, - "id": 722, + "id": 1932, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1448, - "src": "1371:10:6", + "referencedDeclaration": 3064, + "src": "1371:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1371:10:6" + "src": "1371:10:9" } ], "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 721, + "id": 1931, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 720, + "id": 1930, "name": "module", "nodeType": "VariableDeclaration", - "scope": 764, - "src": "1333:13:6", + "scope": 1974, + "src": "1333:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 719, + "id": 1929, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 651, - "src": "1333:6:6", + "referencedDeclaration": 1861, + "src": "1333:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -1687,26 +1687,26 @@ "visibility": "internal" } ], - "src": "1332:15:6" + "src": "1332:15:9" }, "payable": false, "returnParameters": { - "id": 724, + "id": 1934, "nodeType": "ParameterList", "parameters": [], - "src": "1386:0:6" + "src": "1386:0:9" }, - "scope": 1022, - "src": "1311:459:6", + "scope": 2232, + "src": "1311:459:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 813, + "id": 2023, "nodeType": "Block", - "src": "2126:379:6", + "src": "2126:379:9", "statements": [ { "expression": { @@ -1718,7 +1718,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 784, + "id": 1994, "isConstant": false, "isLValue": false, "isPure": false, @@ -1729,7 +1729,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 778, + "id": 1988, "isConstant": false, "isLValue": false, "isPure": false, @@ -1739,14 +1739,14 @@ "arguments": [ { "argumentTypes": null, - "id": 775, + "id": 1985, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "2234:6:6", + "referencedDeclaration": 1978, + "src": "2234:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } } @@ -1754,24 +1754,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } ], - "id": 774, + "id": 1984, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2226:7:6", + "src": "2226:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 776, + "id": 1986, "isConstant": false, "isLValue": false, "isPure": false, @@ -1779,7 +1779,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2226:15:6", + "src": "2226:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1790,14 +1790,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 777, + "id": 1987, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2245:1:6", + "src": "2245:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1805,7 +1805,7 @@ }, "value": "0" }, - "src": "2226:20:6", + "src": "2226:20:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1819,7 +1819,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 783, + "id": 1993, "isConstant": false, "isLValue": false, "isPure": false, @@ -1829,14 +1829,14 @@ "arguments": [ { "argumentTypes": null, - "id": 780, + "id": 1990, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "2258:6:6", + "referencedDeclaration": 1978, + "src": "2258:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } } @@ -1844,24 +1844,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } ], - "id": 779, + "id": 1989, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2250:7:6", + "src": "2250:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 781, + "id": 1991, "isConstant": false, "isLValue": false, "isPure": false, @@ -1869,7 +1869,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2250:15:6", + "src": "2250:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1879,24 +1879,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 782, + "id": 1992, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "2269:16:6", + "referencedDeclaration": 1883, + "src": "2269:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2250:35:6", + "src": "2250:35:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2226:59:6", + "src": "2226:59:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1905,14 +1905,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206d6f64756c6520616464726573732070726f7669646564", - "id": 785, + "id": 1995, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2287:33:6", + "src": "2287:33:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8c2199b479423c52a835dfe8b0f2e9eb4c1ec1069ba198ccc38077a4a88a5c00", @@ -1932,21 +1932,21 @@ "typeString": "literal_string \"Invalid module address provided\"" } ], - "id": 773, + "id": 1983, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2218:7:6", + "referencedDeclaration": 4040, + "src": "2218:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 786, + "id": 1996, "isConstant": false, "isLValue": false, "isPure": false, @@ -1954,15 +1954,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2218:103:6", + "src": "2218:103:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 787, + "id": 1997, "nodeType": "ExpressionStatement", - "src": "2218:103:6" + "src": "2218:103:9" }, { "expression": { @@ -1974,7 +1974,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 795, + "id": 2005, "isConstant": false, "isLValue": false, "isPure": false, @@ -1983,28 +1983,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 789, + "id": 1999, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "2339:7:6", + "referencedDeclaration": 1887, + "src": "2339:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 791, + "id": 2001, "indexExpression": { "argumentTypes": null, - "id": 790, + "id": 2000, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 766, - "src": "2347:10:6", + "referencedDeclaration": 1976, + "src": "2347:10:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -2013,7 +2013,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2339:19:6", + "src": "2339:19:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2026,14 +2026,14 @@ "arguments": [ { "argumentTypes": null, - "id": 793, + "id": 2003, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "2370:6:6", + "referencedDeclaration": 1978, + "src": "2370:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } } @@ -2041,24 +2041,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } ], - "id": 792, + "id": 2002, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2362:7:6", + "src": "2362:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 794, + "id": 2004, "isConstant": false, "isLValue": false, "isPure": false, @@ -2066,13 +2066,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2362:15:6", + "src": "2362:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2339:38:6", + "src": "2339:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2081,14 +2081,14 @@ { "argumentTypes": null, "hexValue": "496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722070726f7669646564", - "id": 796, + "id": 2006, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2379:42:6", + "src": "2379:42:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_5caa315f9c5cf61be71c182eef2dc9ef7b6ce6b42c320d36694e1d23e09c287e", @@ -2108,21 +2108,21 @@ "typeString": "literal_string \"Invalid prevModule, module pair provided\"" } ], - "id": 788, + "id": 1998, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2331:7:6", + "referencedDeclaration": 4040, + "src": "2331:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 797, + "id": 2007, "isConstant": false, "isLValue": false, "isPure": false, @@ -2130,20 +2130,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2331:91:6", + "src": "2331:91:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 798, + "id": 2008, "nodeType": "ExpressionStatement", - "src": "2331:91:6" + "src": "2331:91:9" }, { "expression": { "argumentTypes": null, - "id": 805, + "id": 2015, "isConstant": false, "isLValue": false, "isPure": false, @@ -2152,28 +2152,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 799, + "id": 2009, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "2432:7:6", + "referencedDeclaration": 1887, + "src": "2432:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 801, + "id": 2011, "indexExpression": { "argumentTypes": null, - "id": 800, + "id": 2010, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 766, - "src": "2440:10:6", + "referencedDeclaration": 1976, + "src": "2440:10:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -2182,7 +2182,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2432:19:6", + "src": "2432:19:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2194,28 +2194,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 802, + "id": 2012, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "2454:7:6", + "referencedDeclaration": 1887, + "src": "2454:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 804, + "id": 2014, "indexExpression": { "argumentTypes": null, - "id": 803, + "id": 2013, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "2462:6:6", + "referencedDeclaration": 1978, + "src": "2462:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -2224,26 +2224,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2454:15:6", + "src": "2454:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2432:37:6", + "src": "2432:37:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 806, + "id": 2016, "nodeType": "ExpressionStatement", - "src": "2432:37:6" + "src": "2432:37:9" }, { "expression": { "argumentTypes": null, - "id": 811, + "id": 2021, "isConstant": false, "isLValue": false, "isPure": false, @@ -2252,28 +2252,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 807, + "id": 2017, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "2479:7:6", + "referencedDeclaration": 1887, + "src": "2479:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 809, + "id": 2019, "indexExpression": { "argumentTypes": null, - "id": 808, + "id": 2018, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "2487:6:6", + "referencedDeclaration": 1978, + "src": "2487:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -2282,7 +2282,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2479:15:6", + "src": "2479:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2293,14 +2293,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 810, + "id": 2020, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2497:1:6", + "src": "2497:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2308,72 +2308,72 @@ }, "value": "0" }, - "src": "2479:19:6", + "src": "2479:19:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 812, + "id": 2022, "nodeType": "ExpressionStatement", - "src": "2479:19:6" + "src": "2479:19:9" } ] }, "documentation": "@dev Allows to remove a module from the whitelist.\n This can only be done via a Safe transaction.\n @param prevModule Module that pointed to the module to be removed in the linked list\n @param module Module to be removed.", - "id": 814, + "id": 2024, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 771, + "id": 1981, "modifierName": { "argumentTypes": null, - "id": 770, + "id": 1980, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1448, - "src": "2111:10:6", + "referencedDeclaration": 3064, + "src": "2111:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2111:10:6" + "src": "2111:10:9" } ], "name": "disableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 769, + "id": 1979, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 766, + "id": 1976, "name": "prevModule", "nodeType": "VariableDeclaration", - "scope": 814, - "src": "2054:17:6", + "scope": 2024, + "src": "2054:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 765, + "id": 1975, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 651, - "src": "2054:6:6", + "referencedDeclaration": 1861, + "src": "2054:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -2382,26 +2382,26 @@ }, { "constant": false, - "id": 768, + "id": 1978, "name": "module", "nodeType": "VariableDeclaration", - "scope": 814, - "src": "2073:13:6", + "scope": 2024, + "src": "2073:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 767, + "id": 1977, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 651, - "src": "2073:6:6", + "referencedDeclaration": 1861, + "src": "2073:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -2409,26 +2409,26 @@ "visibility": "internal" } ], - "src": "2053:34:6" + "src": "2053:34:9" }, "payable": false, "returnParameters": { - "id": 772, + "id": 1982, "nodeType": "ParameterList", "parameters": [], - "src": "2126:0:6" + "src": "2126:0:9" }, - "scope": 1022, - "src": "2031:474:6", + "scope": 2232, + "src": "2031:474:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 848, + "id": 2058, "nodeType": "Block", - "src": "2991:279:6", + "src": "2991:279:9", "statements": [ { "expression": { @@ -2440,7 +2440,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 833, + "id": 2043, "isConstant": false, "isLValue": false, "isPure": false, @@ -2449,34 +2449,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 828, + "id": 2038, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "3058:7:6", + "referencedDeclaration": 1887, + "src": "3058:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 831, + "id": 2041, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 829, + "id": 2039, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1773, - "src": "3066:3:6", + "referencedDeclaration": 4036, + "src": "3066:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 830, + "id": 2040, "isConstant": false, "isLValue": false, "isPure": false, @@ -2484,7 +2484,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3066:10:6", + "src": "3066:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2495,7 +2495,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3058:19:6", + "src": "3058:19:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2506,14 +2506,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 832, + "id": 2042, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3081:1:6", + "src": "3081:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2521,7 +2521,7 @@ }, "value": "0" }, - "src": "3058:24:6", + "src": "3058:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2530,14 +2530,14 @@ { "argumentTypes": null, "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d20616e20656e61626c6564206d6f64756c65", - "id": 834, + "id": 2044, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3084:50:6", + "src": "3084:50:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_cd36462b17a97c5a3df33333c859d5933a4fb7f5e1a0750f5def8eb51f3272e4", @@ -2557,21 +2557,21 @@ "typeString": "literal_string \"Method can only be called from an enabled module\"" } ], - "id": 827, + "id": 2037, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "3050:7:6", + "referencedDeclaration": 4040, + "src": "3050:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 835, + "id": 2045, "isConstant": false, "isLValue": false, "isPure": false, @@ -2579,32 +2579,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3050:85:6", + "src": "3050:85:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 836, + "id": 2046, "nodeType": "ExpressionStatement", - "src": "3050:85:6" + "src": "3050:85:9" }, { "expression": { "argumentTypes": null, - "id": 846, + "id": 2056, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 837, + "id": 2047, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 825, - "src": "3207:7:6", + "referencedDeclaration": 2035, + "src": "3207:7:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2617,12 +2617,12 @@ "arguments": [ { "argumentTypes": null, - "id": 839, + "id": 2049, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 816, - "src": "3225:2:6", + "referencedDeclaration": 2026, + "src": "3225:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2630,12 +2630,12 @@ }, { "argumentTypes": null, - "id": 840, + "id": 2050, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 818, - "src": "3229:5:6", + "referencedDeclaration": 2028, + "src": "3229:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2643,12 +2643,12 @@ }, { "argumentTypes": null, - "id": 841, + "id": 2051, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 820, - "src": "3236:4:6", + "referencedDeclaration": 2030, + "src": "3236:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2656,14 +2656,14 @@ }, { "argumentTypes": null, - "id": 842, + "id": 2052, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 822, - "src": "3242:9:6", + "referencedDeclaration": 2032, + "src": "3242:9:9", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2672,18 +2672,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 843, + "id": 2053, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1766, - "src": "3253:7:6", + "referencedDeclaration": 4029, + "src": "3253:7:9", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 844, + "id": 2054, "isConstant": false, "isLValue": false, "isPure": false, @@ -2691,7 +2691,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3253:9:6", + "src": "3253:9:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2713,7 +2713,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -2721,18 +2721,18 @@ "typeString": "uint256" } ], - "id": 838, + "id": 2048, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "3217:7:6", + "referencedDeclaration": 2121, + "src": "3217:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 845, + "id": 2055, "isConstant": false, "isLValue": false, "isPure": false, @@ -2740,26 +2740,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3217:46:6", + "src": "3217:46:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3207:56:6", + "src": "3207:56:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 847, + "id": 2057, "nodeType": "ExpressionStatement", - "src": "3207:56:6" + "src": "3207:56:9" } ] }, "documentation": "@dev Allows a Module to execute a Safe transaction without any further confirmations.\n @param to Destination address of module transaction.\n @param value Ether value of module transaction.\n @param data Data payload of module transaction.\n @param operation Operation type of module transaction.", - "id": 849, + "id": 2059, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2767,16 +2767,16 @@ "name": "execTransactionFromModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 823, + "id": 2033, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 816, + "id": 2026, "name": "to", "nodeType": "VariableDeclaration", - "scope": 849, - "src": "2876:10:6", + "scope": 2059, + "src": "2876:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2784,10 +2784,10 @@ "typeString": "address" }, "typeName": { - "id": 815, + "id": 2025, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2876:7:6", + "src": "2876:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2798,11 +2798,11 @@ }, { "constant": false, - "id": 818, + "id": 2028, "name": "value", "nodeType": "VariableDeclaration", - "scope": 849, - "src": "2888:13:6", + "scope": 2059, + "src": "2888:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2810,10 +2810,10 @@ "typeString": "uint256" }, "typeName": { - "id": 817, + "id": 2027, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2888:7:6", + "src": "2888:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2824,11 +2824,11 @@ }, { "constant": false, - "id": 820, + "id": 2030, "name": "data", "nodeType": "VariableDeclaration", - "scope": 849, - "src": "2903:10:6", + "scope": 2059, + "src": "2903:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2836,10 +2836,10 @@ "typeString": "bytes" }, "typeName": { - "id": 819, + "id": 2029, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2903:5:6", + "src": "2903:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2850,26 +2850,26 @@ }, { "constant": false, - "id": 822, + "id": 2032, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 849, - "src": "2915:24:6", + "scope": 2059, + "src": "2915:24:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 821, + "id": 2031, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2915:14:6", + "referencedDeclaration": 29, + "src": "2915:14:9", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2877,20 +2877,20 @@ "visibility": "internal" } ], - "src": "2875:65:6" + "src": "2875:65:9" }, "payable": false, "returnParameters": { - "id": 826, + "id": 2036, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 825, + "id": 2035, "name": "success", "nodeType": "VariableDeclaration", - "scope": 849, - "src": "2973:12:6", + "scope": 2059, + "src": "2973:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2898,10 +2898,10 @@ "typeString": "bool" }, "typeName": { - "id": 824, + "id": 2034, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2973:4:6", + "src": "2973:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2911,42 +2911,42 @@ "visibility": "internal" } ], - "src": "2972:14:6" + "src": "2972:14:9" }, - "scope": 1022, - "src": "2841:429:6", + "scope": 2232, + "src": "2841:429:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 910, + "id": 2120, "nodeType": "Block", - "src": "3425:399:6", + "src": "3425:399:9", "statements": [ { "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 868, + "id": 2078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 864, + "id": 2074, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 857, - "src": "3439:9:6", + "referencedDeclaration": 2067, + "src": "3439:9:9", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2958,32 +2958,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 865, + "id": 2075, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "3452:4:6", + "referencedDeclaration": 30, + "src": "3452:4:9", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 866, + "id": 2076, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "3452:14:6", + "referencedDeclaration": 29, + "src": "3452:14:9", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 867, + "id": 2077, "isConstant": false, "isLValue": false, "isPure": true, @@ -2991,13 +2991,13 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3452:19:6", + "src": "3452:19:9", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3439:32:6", + "src": "3439:32:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3007,24 +3007,24 @@ "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 882, + "id": 2092, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 878, + "id": 2088, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 857, - "src": "3549:9:6", + "referencedDeclaration": 2067, + "src": "3549:9:9", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -3036,32 +3036,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 879, + "id": 2089, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "3562:4:6", + "referencedDeclaration": 30, + "src": "3562:4:9", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 880, + "id": 2090, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "3562:14:6", + "referencedDeclaration": 29, + "src": "3562:14:9", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 881, + "id": 2091, "isConstant": false, "isLValue": false, "isPure": true, @@ -3069,35 +3069,35 @@ "memberName": "DelegateCall", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3562:27:6", + "src": "3562:27:9", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3549:40:6", + "src": "3549:40:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 907, + "id": 2117, "nodeType": "Block", - "src": "3664:154:6", + "src": "3664:154:9", "statements": [ { "assignments": [ - 892 + 2102 ], "declarations": [ { "constant": false, - "id": 892, + "id": 2102, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 911, - "src": "3678:19:6", + "scope": 2121, + "src": "3678:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3105,10 +3105,10 @@ "typeString": "address" }, "typeName": { - "id": 891, + "id": 2101, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3678:7:6", + "src": "3678:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3118,18 +3118,18 @@ "visibility": "internal" } ], - "id": 896, + "id": 2106, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 894, + "id": 2104, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 855, - "src": "3714:4:6", + "referencedDeclaration": 2065, + "src": "3714:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3143,18 +3143,18 @@ "typeString": "bytes memory" } ], - "id": 893, + "id": 2103, "name": "executeCreate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 948, - "src": "3700:13:6", + "referencedDeclaration": 2158, + "src": "3700:13:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", "typeString": "function (bytes memory) returns (address)" } }, - "id": 895, + "id": 2105, "isConstant": false, "isLValue": false, "isPure": false, @@ -3162,31 +3162,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3700:19:6", + "src": "3700:19:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3678:41:6" + "src": "3678:41:9" }, { "expression": { "argumentTypes": null, - "id": 901, + "id": 2111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 897, + "id": 2107, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 862, - "src": "3733:7:6", + "referencedDeclaration": 2072, + "src": "3733:7:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3200,19 +3200,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 900, + "id": 2110, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 898, + "id": 2108, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 892, - "src": "3743:11:6", + "referencedDeclaration": 2102, + "src": "3743:11:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3223,14 +3223,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 899, + "id": 2109, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3758:1:6", + "src": "3758:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3238,21 +3238,21 @@ }, "value": "0" }, - "src": "3743:16:6", + "src": "3743:16:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3733:26:6", + "src": "3733:26:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 902, + "id": 2112, "nodeType": "ExpressionStatement", - "src": "3733:26:6" + "src": "3733:26:9" }, { "eventCall": { @@ -3260,12 +3260,12 @@ "arguments": [ { "argumentTypes": null, - "id": 904, + "id": 2114, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 892, - "src": "3795:11:6", + "referencedDeclaration": 2102, + "src": "3795:11:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3279,18 +3279,18 @@ "typeString": "address" } ], - "id": 903, + "id": 2113, "name": "ContractCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 662, - "src": "3778:16:6", + "referencedDeclaration": 1872, + "src": "3778:16:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 905, + "id": 2115, "isConstant": false, "isLValue": false, "isPure": false, @@ -3298,37 +3298,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3778:29:6", + "src": "3778:29:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 906, + "id": 2116, "nodeType": "EmitStatement", - "src": "3773:34:6" + "src": "3773:34:9" } ] }, - "id": 908, + "id": 2118, "nodeType": "IfStatement", - "src": "3545:273:6", + "src": "3545:273:9", "trueBody": { "expression": { "argumentTypes": null, - "id": 889, + "id": 2099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 883, + "id": 2093, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 862, - "src": "3603:7:6", + "referencedDeclaration": 2072, + "src": "3603:7:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3341,12 +3341,12 @@ "arguments": [ { "argumentTypes": null, - "id": 885, + "id": 2095, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 851, - "src": "3633:2:6", + "referencedDeclaration": 2061, + "src": "3633:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3354,12 +3354,12 @@ }, { "argumentTypes": null, - "id": 886, + "id": 2096, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 855, - "src": "3637:4:6", + "referencedDeclaration": 2065, + "src": "3637:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3367,12 +3367,12 @@ }, { "argumentTypes": null, - "id": 887, + "id": 2097, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 859, - "src": "3643:5:6", + "referencedDeclaration": 2069, + "src": "3643:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3394,18 +3394,18 @@ "typeString": "uint256" } ], - "id": 884, + "id": 2094, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "3613:19:6", + "referencedDeclaration": 2149, + "src": "3613:19:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 888, + "id": 2098, "isConstant": false, "isLValue": false, "isPure": false, @@ -3413,42 +3413,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3613:36:6", + "src": "3613:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3603:46:6", + "src": "3603:46:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 890, + "id": 2100, "nodeType": "ExpressionStatement", - "src": "3603:46:6" + "src": "3603:46:9" } }, - "id": 909, + "id": 2119, "nodeType": "IfStatement", - "src": "3435:383:6", + "src": "3435:383:9", "trueBody": { "expression": { "argumentTypes": null, - "id": 876, + "id": 2086, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 869, + "id": 2079, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 862, - "src": "3485:7:6", + "referencedDeclaration": 2072, + "src": "3485:7:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3461,12 +3461,12 @@ "arguments": [ { "argumentTypes": null, - "id": 871, + "id": 2081, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 851, - "src": "3507:2:6", + "referencedDeclaration": 2061, + "src": "3507:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3474,12 +3474,12 @@ }, { "argumentTypes": null, - "id": 872, + "id": 2082, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 853, - "src": "3511:5:6", + "referencedDeclaration": 2063, + "src": "3511:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3487,12 +3487,12 @@ }, { "argumentTypes": null, - "id": 873, + "id": 2083, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 855, - "src": "3518:4:6", + "referencedDeclaration": 2065, + "src": "3518:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3500,12 +3500,12 @@ }, { "argumentTypes": null, - "id": 874, + "id": 2084, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 859, - "src": "3524:5:6", + "referencedDeclaration": 2069, + "src": "3524:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3531,18 +3531,18 @@ "typeString": "uint256" } ], - "id": 870, + "id": 2080, "name": "executeCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 926, - "src": "3495:11:6", + "referencedDeclaration": 2136, + "src": "3495:11:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,uint256) returns (bool)" } }, - "id": 875, + "id": 2085, "isConstant": false, "isLValue": false, "isPure": false, @@ -3550,27 +3550,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3495:35:6", + "src": "3495:35:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3485:45:6", + "src": "3485:45:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 877, + "id": 2087, "nodeType": "ExpressionStatement", - "src": "3485:45:6" + "src": "3485:45:9" } } ] }, "documentation": null, - "id": 911, + "id": 2121, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3578,16 +3578,16 @@ "name": "execute", "nodeType": "FunctionDefinition", "parameters": { - "id": 860, + "id": 2070, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 851, + "id": 2061, "name": "to", "nodeType": "VariableDeclaration", - "scope": 911, - "src": "3293:10:6", + "scope": 2121, + "src": "3293:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3595,10 +3595,10 @@ "typeString": "address" }, "typeName": { - "id": 850, + "id": 2060, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3293:7:6", + "src": "3293:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3609,11 +3609,11 @@ }, { "constant": false, - "id": 853, + "id": 2063, "name": "value", "nodeType": "VariableDeclaration", - "scope": 911, - "src": "3305:13:6", + "scope": 2121, + "src": "3305:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3621,10 +3621,10 @@ "typeString": "uint256" }, "typeName": { - "id": 852, + "id": 2062, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3305:7:6", + "src": "3305:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3635,11 +3635,11 @@ }, { "constant": false, - "id": 855, + "id": 2065, "name": "data", "nodeType": "VariableDeclaration", - "scope": 911, - "src": "3320:10:6", + "scope": 2121, + "src": "3320:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3647,10 +3647,10 @@ "typeString": "bytes" }, "typeName": { - "id": 854, + "id": 2064, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3320:5:6", + "src": "3320:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3661,26 +3661,26 @@ }, { "constant": false, - "id": 857, + "id": 2067, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 911, - "src": "3332:24:6", + "scope": 2121, + "src": "3332:24:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 856, + "id": 2066, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "3332:14:6", + "referencedDeclaration": 29, + "src": "3332:14:9", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -3689,11 +3689,11 @@ }, { "constant": false, - "id": 859, + "id": 2069, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 911, - "src": "3358:13:6", + "scope": 2121, + "src": "3358:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3701,10 +3701,10 @@ "typeString": "uint256" }, "typeName": { - "id": 858, + "id": 2068, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3358:7:6", + "src": "3358:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3714,20 +3714,20 @@ "visibility": "internal" } ], - "src": "3292:80:6" + "src": "3292:80:9" }, "payable": false, "returnParameters": { - "id": 863, + "id": 2073, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 862, + "id": 2072, "name": "success", "nodeType": "VariableDeclaration", - "scope": 911, - "src": "3407:12:6", + "scope": 2121, + "src": "3407:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3735,10 +3735,10 @@ "typeString": "bool" }, "typeName": { - "id": 861, + "id": 2071, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3407:4:6", + "src": "3407:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3748,86 +3748,86 @@ "visibility": "internal" } ], - "src": "3406:14:6" + "src": "3406:14:9" }, - "scope": 1022, - "src": "3276:548:6", + "scope": 2232, + "src": "3276:548:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 925, + "id": 2135, "nodeType": "Block", - "src": "3957:182:6", + "src": "3957:182:9", "statements": [ { "externalReferences": [ { "data": { - "declaration": 917, + "declaration": 2127, "isOffset": false, "isSlot": false, - "src": "4111:4:6", + "src": "4111:4:9", "valueSize": 1 } }, { "data": { - "declaration": 917, + "declaration": 2127, "isOffset": false, "isSlot": false, - "src": "4092:4:6", + "src": "4092:4:9", "valueSize": 1 } }, { "success": { - "declaration": 922, + "declaration": 2132, "isOffset": false, "isSlot": false, - "src": "4054:7:6", + "src": "4054:7:9", "valueSize": 1 } }, { "txGas": { - "declaration": 919, + "declaration": 2129, "isOffset": false, "isSlot": false, - "src": "4070:5:6", + "src": "4070:5:9", "valueSize": 1 } }, { "to": { - "declaration": 913, + "declaration": 2123, "isOffset": false, "isSlot": false, - "src": "4077:2:6", + "src": "4077:2:9", "valueSize": 1 } }, { "value": { - "declaration": 915, + "declaration": 2125, "isOffset": false, "isSlot": false, - "src": "4081:5:6", + "src": "4081:5:9", "valueSize": 1 } } ], - "id": 924, + "id": 2134, "nodeType": "InlineAssembly", "operations": "{\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "4031:108:6" + "src": "4031:108:9" } ] }, "documentation": null, - "id": 926, + "id": 2136, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3835,16 +3835,16 @@ "name": "executeCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 920, + "id": 2130, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 913, + "id": 2123, "name": "to", "nodeType": "VariableDeclaration", - "scope": 926, - "src": "3851:10:6", + "scope": 2136, + "src": "3851:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3852,10 +3852,10 @@ "typeString": "address" }, "typeName": { - "id": 912, + "id": 2122, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3851:7:6", + "src": "3851:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3866,11 +3866,11 @@ }, { "constant": false, - "id": 915, + "id": 2125, "name": "value", "nodeType": "VariableDeclaration", - "scope": 926, - "src": "3863:13:6", + "scope": 2136, + "src": "3863:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3878,10 +3878,10 @@ "typeString": "uint256" }, "typeName": { - "id": 914, + "id": 2124, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3863:7:6", + "src": "3863:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3892,11 +3892,11 @@ }, { "constant": false, - "id": 917, + "id": 2127, "name": "data", "nodeType": "VariableDeclaration", - "scope": 926, - "src": "3878:10:6", + "scope": 2136, + "src": "3878:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3904,10 +3904,10 @@ "typeString": "bytes" }, "typeName": { - "id": 916, + "id": 2126, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3878:5:6", + "src": "3878:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3918,11 +3918,11 @@ }, { "constant": false, - "id": 919, + "id": 2129, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 926, - "src": "3890:13:6", + "scope": 2136, + "src": "3890:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3930,10 +3930,10 @@ "typeString": "uint256" }, "typeName": { - "id": 918, + "id": 2128, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3890:7:6", + "src": "3890:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3943,20 +3943,20 @@ "visibility": "internal" } ], - "src": "3850:54:6" + "src": "3850:54:9" }, "payable": false, "returnParameters": { - "id": 923, + "id": 2133, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 922, + "id": 2132, "name": "success", "nodeType": "VariableDeclaration", - "scope": 926, - "src": "3939:12:6", + "scope": 2136, + "src": "3939:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3964,10 +3964,10 @@ "typeString": "bool" }, "typeName": { - "id": 921, + "id": 2131, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3939:4:6", + "src": "3939:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3977,77 +3977,77 @@ "visibility": "internal" } ], - "src": "3938:14:6" + "src": "3938:14:9" }, - "scope": 1022, - "src": "3830:309:6", + "scope": 2232, + "src": "3830:309:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 938, + "id": 2148, "nodeType": "Block", - "src": "4265:183:6", + "src": "4265:183:9", "statements": [ { "externalReferences": [ { "data": { - "declaration": 930, + "declaration": 2140, "isOffset": false, "isSlot": false, - "src": "4420:4:6", + "src": "4420:4:9", "valueSize": 1 } }, { "data": { - "declaration": 930, + "declaration": 2140, "isOffset": false, "isSlot": false, - "src": "4401:4:6", + "src": "4401:4:9", "valueSize": 1 } }, { "success": { - "declaration": 935, + "declaration": 2145, "isOffset": false, "isSlot": false, - "src": "4362:7:6", + "src": "4362:7:9", "valueSize": 1 } }, { "txGas": { - "declaration": 932, + "declaration": 2142, "isOffset": false, "isSlot": false, - "src": "4386:5:6", + "src": "4386:5:9", "valueSize": 1 } }, { "to": { - "declaration": 928, + "declaration": 2138, "isOffset": false, "isSlot": false, - "src": "4393:2:6", + "src": "4393:2:9", "valueSize": 1 } } ], - "id": 937, + "id": 2147, "nodeType": "InlineAssembly", "operations": "{\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "4339:109:6" + "src": "4339:109:9" } ] }, "documentation": null, - "id": 939, + "id": 2149, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -4055,16 +4055,16 @@ "name": "executeDelegateCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 933, + "id": 2143, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 928, + "id": 2138, "name": "to", "nodeType": "VariableDeclaration", - "scope": 939, - "src": "4174:10:6", + "scope": 2149, + "src": "4174:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4072,10 +4072,10 @@ "typeString": "address" }, "typeName": { - "id": 927, + "id": 2137, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4174:7:6", + "src": "4174:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4086,11 +4086,11 @@ }, { "constant": false, - "id": 930, + "id": 2140, "name": "data", "nodeType": "VariableDeclaration", - "scope": 939, - "src": "4186:10:6", + "scope": 2149, + "src": "4186:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4098,10 +4098,10 @@ "typeString": "bytes" }, "typeName": { - "id": 929, + "id": 2139, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4186:5:6", + "src": "4186:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4112,11 +4112,11 @@ }, { "constant": false, - "id": 932, + "id": 2142, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 939, - "src": "4198:13:6", + "scope": 2149, + "src": "4198:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4124,10 +4124,10 @@ "typeString": "uint256" }, "typeName": { - "id": 931, + "id": 2141, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4198:7:6", + "src": "4198:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4137,20 +4137,20 @@ "visibility": "internal" } ], - "src": "4173:39:6" + "src": "4173:39:9" }, "payable": false, "returnParameters": { - "id": 936, + "id": 2146, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 935, + "id": 2145, "name": "success", "nodeType": "VariableDeclaration", - "scope": 939, - "src": "4247:12:6", + "scope": 2149, + "src": "4247:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4158,10 +4158,10 @@ "typeString": "bool" }, "typeName": { - "id": 934, + "id": 2144, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4247:4:6", + "src": "4247:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4171,59 +4171,59 @@ "visibility": "internal" } ], - "src": "4246:14:6" + "src": "4246:14:9" }, - "scope": 1022, - "src": "4145:303:6", + "scope": 2232, + "src": "4145:303:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 947, + "id": 2157, "nodeType": "Block", - "src": "4548:167:6", + "src": "4548:167:9", "statements": [ { "externalReferences": [ { "newContract": { - "declaration": 944, + "declaration": 2154, "isOffset": false, "isSlot": false, - "src": "4645:11:6", + "src": "4645:11:9", "valueSize": 1 } }, { "data": { - "declaration": 941, + "declaration": 2151, "isOffset": false, "isSlot": false, - "src": "4674:4:6", + "src": "4674:4:9", "valueSize": 1 } }, { "data": { - "declaration": 941, + "declaration": 2151, "isOffset": false, "isSlot": false, - "src": "4693:4:6", + "src": "4693:4:9", "valueSize": 1 } } ], - "id": 946, + "id": 2156, "nodeType": "InlineAssembly", "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", - "src": "4622:93:6" + "src": "4622:93:9" } ] }, "documentation": null, - "id": 948, + "id": 2158, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -4231,16 +4231,16 @@ "name": "executeCreate", "nodeType": "FunctionDefinition", "parameters": { - "id": 942, + "id": 2152, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 941, + "id": 2151, "name": "data", "nodeType": "VariableDeclaration", - "scope": 948, - "src": "4477:10:6", + "scope": 2158, + "src": "4477:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4248,10 +4248,10 @@ "typeString": "bytes" }, "typeName": { - "id": 940, + "id": 2150, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4477:5:6", + "src": "4477:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4261,20 +4261,20 @@ "visibility": "internal" } ], - "src": "4476:12:6" + "src": "4476:12:9" }, "payable": false, "returnParameters": { - "id": 945, + "id": 2155, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 944, + "id": 2154, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 948, - "src": "4523:19:6", + "scope": 2158, + "src": "4523:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4282,10 +4282,10 @@ "typeString": "address" }, "typeName": { - "id": 943, + "id": 2153, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4523:7:6", + "src": "4523:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4295,32 +4295,32 @@ "visibility": "internal" } ], - "src": "4522:21:6" + "src": "4522:21:9" }, - "scope": 1022, - "src": "4454:261:6", + "scope": 2232, + "src": "4454:261:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1020, + "id": 2230, "nodeType": "Block", - "src": "4876:656:6", + "src": "4876:656:9", "statements": [ { "assignments": [ - 955 + 2165 ], "declarations": [ { "constant": false, - "id": 955, + "id": 2165, "name": "moduleCount", "nodeType": "VariableDeclaration", - "scope": 1021, - "src": "4920:19:6", + "scope": 2231, + "src": "4920:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4328,10 +4328,10 @@ "typeString": "uint256" }, "typeName": { - "id": 954, + "id": 2164, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4920:7:6", + "src": "4920:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4341,18 +4341,18 @@ "visibility": "internal" } ], - "id": 957, + "id": 2167, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 956, + "id": 2166, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4942:1:6", + "src": "4942:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4361,20 +4361,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "4920:23:6" + "src": "4920:23:9" }, { "assignments": [ - 959 + 2169 ], "declarations": [ { "constant": false, - "id": 959, + "id": 2169, "name": "currentModule", "nodeType": "VariableDeclaration", - "scope": 1021, - "src": "4953:21:6", + "scope": 2231, + "src": "4953:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4382,10 +4382,10 @@ "typeString": "address" }, "typeName": { - "id": 958, + "id": 2168, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4953:7:6", + "src": "4953:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4395,31 +4395,31 @@ "visibility": "internal" } ], - "id": 963, + "id": 2173, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 960, + "id": 2170, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "4977:7:6", + "referencedDeclaration": 1887, + "src": "4977:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 962, + "id": 2172, "indexExpression": { "argumentTypes": null, - "id": 961, + "id": 2171, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "4985:16:6", + "referencedDeclaration": 1883, + "src": "4985:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4430,37 +4430,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4977:25:6", + "src": "4977:25:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4953:49:6" + "src": "4953:49:9" }, { "body": { - "id": 976, + "id": 2186, "nodeType": "Block", - "src": "5053:91:6", + "src": "5053:91:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 971, + "id": 2181, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 967, + "id": 2177, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "5067:13:6", + "referencedDeclaration": 2169, + "src": "5067:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4472,26 +4472,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 968, + "id": 2178, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "5083:7:6", + "referencedDeclaration": 1887, + "src": "5083:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 970, + "id": 2180, "indexExpression": { "argumentTypes": null, - "id": 969, + "id": 2179, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "5091:13:6", + "referencedDeclaration": 2169, + "src": "5091:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4502,26 +4502,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5083:22:6", + "src": "5083:22:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5067:38:6", + "src": "5067:38:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 972, + "id": 2182, "nodeType": "ExpressionStatement", - "src": "5067:38:6" + "src": "5067:38:9" }, { "expression": { "argumentTypes": null, - "id": 974, + "id": 2184, "isConstant": false, "isLValue": false, "isPure": false, @@ -4529,15 +4529,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5119:14:6", + "src": "5119:14:9", "subExpression": { "argumentTypes": null, - "id": 973, + "id": 2183, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 955, - "src": "5119:11:6", + "referencedDeclaration": 2165, + "src": "5119:11:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4548,9 +4548,9 @@ "typeString": "uint256" } }, - "id": 975, + "id": 2185, "nodeType": "ExpressionStatement", - "src": "5119:14:6" + "src": "5119:14:9" } ] }, @@ -4560,19 +4560,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 966, + "id": 2176, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 964, + "id": 2174, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "5018:13:6", + "referencedDeclaration": 2169, + "src": "5018:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4582,39 +4582,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 965, + "id": 2175, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "5035:16:6", + "referencedDeclaration": 1883, + "src": "5035:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5018:33:6", + "src": "5018:33:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 977, + "id": 2187, "nodeType": "WhileStatement", - "src": "5012:132:6" + "src": "5012:132:9" }, { "assignments": [ - 981 + 2191 ], "declarations": [ { "constant": false, - "id": 981, + "id": 2191, "name": "array", "nodeType": "VariableDeclaration", - "scope": 1021, - "src": "5153:22:6", + "scope": 2231, + "src": "5153:22:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4623,19 +4623,19 @@ }, "typeName": { "baseType": { - "id": 979, + "id": 2189, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5153:7:6", + "src": "5153:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 980, + "id": 2190, "length": null, "nodeType": "ArrayTypeName", - "src": "5153:9:6", + "src": "5153:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4645,18 +4645,18 @@ "visibility": "internal" } ], - "id": 987, + "id": 2197, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 985, + "id": 2195, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 955, - "src": "5192:11:6", + "referencedDeclaration": 2165, + "src": "5192:11:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4670,39 +4670,39 @@ "typeString": "uint256" } ], - "id": 984, + "id": 2194, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "5178:13:6", + "src": "5178:13:9", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 982, + "id": 2192, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5182:7:6", + "src": "5182:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 983, + "id": 2193, "length": null, "nodeType": "ArrayTypeName", - "src": "5182:9:6", + "src": "5182:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 986, + "id": 2196, "isConstant": false, "isLValue": false, "isPure": false, @@ -4710,31 +4710,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5178:26:6", + "src": "5178:26:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "5153:51:6" + "src": "5153:51:9" }, { "expression": { "argumentTypes": null, - "id": 990, + "id": 2200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 988, + "id": 2198, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 955, - "src": "5248:11:6", + "referencedDeclaration": 2165, + "src": "5248:11:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4745,14 +4745,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 989, + "id": 2199, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5262:1:6", + "src": "5262:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4760,32 +4760,32 @@ }, "value": "0" }, - "src": "5248:15:6", + "src": "5248:15:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 991, + "id": 2201, "nodeType": "ExpressionStatement", - "src": "5248:15:6" + "src": "5248:15:9" }, { "expression": { "argumentTypes": null, - "id": 996, + "id": 2206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 992, + "id": 2202, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "5273:13:6", + "referencedDeclaration": 2169, + "src": "5273:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4797,26 +4797,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 993, + "id": 2203, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "5289:7:6", + "referencedDeclaration": 1887, + "src": "5289:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 995, + "id": 2205, "indexExpression": { "argumentTypes": null, - "id": 994, + "id": 2204, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "5297:16:6", + "referencedDeclaration": 1883, + "src": "5297:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4827,32 +4827,32 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5289:25:6", + "src": "5289:25:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5273:41:6", + "src": "5273:41:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 997, + "id": 2207, "nodeType": "ExpressionStatement", - "src": "5273:41:6" + "src": "5273:41:9" }, { "body": { - "id": 1016, + "id": 2226, "nodeType": "Block", - "src": "5365:139:6", + "src": "5365:139:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 1005, + "id": 2215, "isConstant": false, "isLValue": false, "isPure": false, @@ -4861,26 +4861,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1001, + "id": 2211, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "5379:5:6", + "referencedDeclaration": 2191, + "src": "5379:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1003, + "id": 2213, "indexExpression": { "argumentTypes": null, - "id": 1002, + "id": 2212, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 955, - "src": "5385:11:6", + "referencedDeclaration": 2165, + "src": "5385:11:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4891,7 +4891,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5379:18:6", + "src": "5379:18:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4901,43 +4901,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1004, + "id": 2214, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "5400:13:6", + "referencedDeclaration": 2169, + "src": "5400:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5379:34:6", + "src": "5379:34:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1006, + "id": 2216, "nodeType": "ExpressionStatement", - "src": "5379:34:6" + "src": "5379:34:9" }, { "expression": { "argumentTypes": null, - "id": 1011, + "id": 2221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1007, + "id": 2217, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "5427:13:6", + "referencedDeclaration": 2169, + "src": "5427:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4949,26 +4949,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1008, + "id": 2218, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "5443:7:6", + "referencedDeclaration": 1887, + "src": "5443:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1010, + "id": 2220, "indexExpression": { "argumentTypes": null, - "id": 1009, + "id": 2219, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "5451:13:6", + "referencedDeclaration": 2169, + "src": "5451:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4979,26 +4979,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5443:22:6", + "src": "5443:22:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5427:38:6", + "src": "5427:38:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1012, + "id": 2222, "nodeType": "ExpressionStatement", - "src": "5427:38:6" + "src": "5427:38:9" }, { "expression": { "argumentTypes": null, - "id": 1014, + "id": 2224, "isConstant": false, "isLValue": false, "isPure": false, @@ -5006,15 +5006,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5479:14:6", + "src": "5479:14:9", "subExpression": { "argumentTypes": null, - "id": 1013, + "id": 2223, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 955, - "src": "5479:11:6", + "referencedDeclaration": 2165, + "src": "5479:11:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5025,9 +5025,9 @@ "typeString": "uint256" } }, - "id": 1015, + "id": 2225, "nodeType": "ExpressionStatement", - "src": "5479:14:6" + "src": "5479:14:9" } ] }, @@ -5037,19 +5037,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1000, + "id": 2210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 998, + "id": 2208, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "5330:13:6", + "referencedDeclaration": 2169, + "src": "5330:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5059,50 +5059,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 999, + "id": 2209, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "5347:16:6", + "referencedDeclaration": 1883, + "src": "5347:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5330:33:6", + "src": "5330:33:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1017, + "id": 2227, "nodeType": "WhileStatement", - "src": "5324:180:6" + "src": "5324:180:9" }, { "expression": { "argumentTypes": null, - "id": 1018, + "id": 2228, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "5520:5:6", + "referencedDeclaration": 2191, + "src": "5520:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 953, - "id": 1019, + "functionReturnParameters": 2163, + "id": 2229, "nodeType": "Return", - "src": "5513:12:6" + "src": "5513:12:9" } ] }, "documentation": "@dev Returns array of modules.\n @return Array of modules.", - "id": 1021, + "id": 2231, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -5110,23 +5110,23 @@ "name": "getModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 949, + "id": 2159, "nodeType": "ParameterList", "parameters": [], - "src": "4813:2:6" + "src": "4813:2:9" }, "payable": false, "returnParameters": { - "id": 953, + "id": 2163, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 952, + "id": 2162, "name": "", "nodeType": "VariableDeclaration", - "scope": 1021, - "src": "4861:9:6", + "scope": 2231, + "src": "4861:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5135,19 +5135,19 @@ }, "typeName": { "baseType": { - "id": 950, + "id": 2160, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4861:7:6", + "src": "4861:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 951, + "id": 2161, "length": null, "nodeType": "ArrayTypeName", - "src": "4861:9:6", + "src": "4861:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -5157,71 +5157,71 @@ "visibility": "internal" } ], - "src": "4860:11:6" + "src": "4860:11:9" }, - "scope": 1022, - "src": "4794:738:6", + "scope": 2232, + "src": "4794:738:9", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1023, - "src": "303:5231:6" + "scope": 2233, + "src": "303:5231:9" } ], - "src": "0:5535:6" + "src": "0:5535:9" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "exportedSymbols": { "ModuleManager": [ - 1022 + 2232 ] }, - "id": 1023, + "id": 2233, "nodeType": "SourceUnit", "nodes": [ { - "id": 653, + "id": 1863, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:6" + "src": "0:23:9" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 654, + "id": 1864, "nodeType": "ImportDirective", - "scope": 1023, - "sourceUnit": 652, - "src": "24:22:6", + "scope": 2233, + "sourceUnit": 1862, + "src": "24:22:9", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 655, + "id": 1865, "nodeType": "ImportDirective", - "scope": 1023, - "sourceUnit": 609, - "src": "47:26:6", + "scope": 2233, + "sourceUnit": 633, + "src": "47:26:9", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "./Enum.sol", - "id": 656, + "id": 1866, "nodeType": "ImportDirective", - "scope": 1023, - "sourceUnit": 7, - "src": "74:20:6", + "scope": 2233, + "sourceUnit": 31, + "src": "74:20:9", "symbolAliases": [], "unitAlias": "" }, @@ -5231,31 +5231,31 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 657, + "id": 1867, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1449, - "src": "329:14:6", + "referencedDeclaration": 3065, + "src": "329:14:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1449", + "typeIdentifier": "t_contract$_SelfAuthorized_$3065", "typeString": "contract SelfAuthorized" } }, - "id": 658, + "id": 1868, "nodeType": "InheritanceSpecifier", - "src": "329:14:6" + "src": "329:14:9" } ], "contractDependencies": [ - 1449 + 3065 ], "contractKind": "contract", "documentation": "@title Module Manager - A contract that manages modules that can execute transactions via this contract\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1022, + "id": 2232, "linearizedBaseContracts": [ - 1022, - 1449 + 2232, + 3065 ], "name": "ModuleManager", "nodeType": "ContractDefinition", @@ -5263,21 +5263,21 @@ { "anonymous": false, "documentation": null, - "id": 662, + "id": 1872, "name": "ContractCreation", "nodeType": "EventDefinition", "parameters": { - "id": 661, + "id": 1871, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 660, + "id": 1870, "indexed": false, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 662, - "src": "374:19:6", + "scope": 1872, + "src": "374:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5285,10 +5285,10 @@ "typeString": "address" }, "typeName": { - "id": 659, + "id": 1869, "name": "address", "nodeType": "ElementaryTypeName", - "src": "374:7:6", + "src": "374:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5298,17 +5298,17 @@ "visibility": "internal" } ], - "src": "373:21:6" + "src": "373:21:9" }, - "src": "351:44:6" + "src": "351:44:9" }, { "constant": true, - "id": 665, + "id": 1875, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1022, - "src": "401:46:6", + "scope": 2232, + "src": "401:46:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5316,10 +5316,10 @@ "typeString": "string" }, "typeName": { - "id": 663, + "id": 1873, "name": "string", "nodeType": "ElementaryTypeName", - "src": "401:6:6", + "src": "401:6:9", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -5328,14 +5328,14 @@ "value": { "argumentTypes": null, "hexValue": "4d6f64756c65204d616e61676572", - "id": 664, + "id": 1874, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "431:16:6", + "src": "431:16:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_12aaa44a1bae367a1e1d9881f5d80283afded6373c2a1ca586db420944084efb", @@ -5347,11 +5347,11 @@ }, { "constant": true, - "id": 668, + "id": 1878, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1022, - "src": "453:40:6", + "scope": 2232, + "src": "453:40:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5359,10 +5359,10 @@ "typeString": "string" }, "typeName": { - "id": 666, + "id": 1876, "name": "string", "nodeType": "ElementaryTypeName", - "src": "453:6:6", + "src": "453:6:9", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -5371,14 +5371,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 667, + "id": 1877, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "486:7:6", + "src": "486:7:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -5390,11 +5390,11 @@ }, { "constant": true, - "id": 673, + "id": 1883, "name": "SENTINEL_MODULES", "nodeType": "VariableDeclaration", - "scope": 1022, - "src": "499:55:6", + "scope": 2232, + "src": "499:55:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5402,10 +5402,10 @@ "typeString": "address" }, "typeName": { - "id": 669, + "id": 1879, "name": "address", "nodeType": "ElementaryTypeName", - "src": "499:7:6", + "src": "499:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5417,14 +5417,14 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 671, + "id": 1881, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "550:3:6", + "src": "550:3:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5440,20 +5440,20 @@ "typeString": "int_const 1" } ], - "id": 670, + "id": 1880, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "542:7:6", + "src": "542:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 672, + "id": 1882, "isConstant": false, "isLValue": false, "isPure": true, @@ -5461,7 +5461,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "542:12:6", + "src": "542:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5471,11 +5471,11 @@ }, { "constant": false, - "id": 677, + "id": 1887, "name": "modules", "nodeType": "VariableDeclaration", - "scope": 1022, - "src": "561:45:6", + "scope": 2232, + "src": "561:45:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5483,28 +5483,28 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 676, + "id": 1886, "keyType": { - "id": 674, + "id": 1884, "name": "address", "nodeType": "ElementaryTypeName", - "src": "570:7:6", + "src": "570:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "561:28:6", + "src": "561:28:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" }, "valueType": { - "id": 675, + "id": 1885, "name": "address", "nodeType": "ElementaryTypeName", - "src": "581:7:6", + "src": "581:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5516,13 +5516,13 @@ }, { "body": { - "id": 680, + "id": 1890, "nodeType": "Block", - "src": "721:8:6", + "src": "721:8:9", "statements": [] }, "documentation": "@dev Fallback function accepts Ether transactions.", - "id": 681, + "id": 1891, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5530,29 +5530,29 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 678, + "id": 1888, "nodeType": "ParameterList", "parameters": [], - "src": "681:2:6" + "src": "681:2:9" }, "payable": true, "returnParameters": { - "id": 679, + "id": 1889, "nodeType": "ParameterList", "parameters": [], - "src": "721:0:6" + "src": "721:0:9" }, - "scope": 1022, - "src": "672:57:6", + "scope": 2232, + "src": "672:57:9", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 717, + "id": 1927, "nodeType": "Block", - "src": "802:342:6", + "src": "802:342:9", "statements": [ { "expression": { @@ -5564,7 +5564,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 693, + "id": 1903, "isConstant": false, "isLValue": false, "isPure": false, @@ -5573,26 +5573,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 689, + "id": 1899, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "820:7:6", + "referencedDeclaration": 1887, + "src": "820:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 691, + "id": 1901, "indexExpression": { "argumentTypes": null, - "id": 690, + "id": 1900, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "828:16:6", + "referencedDeclaration": 1883, + "src": "828:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5603,7 +5603,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "820:25:6", + "src": "820:25:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5614,14 +5614,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 692, + "id": 1902, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "849:1:6", + "src": "849:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5629,7 +5629,7 @@ }, "value": "0" }, - "src": "820:30:6", + "src": "820:30:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5638,14 +5638,14 @@ { "argumentTypes": null, "hexValue": "4d6f64756c6573206861766520616c7265616479206265656e20696e697469616c697a6564", - "id": 694, + "id": 1904, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "852:39:6", + "src": "852:39:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1e0428ffa69bff65645154a36d5017c238f946ddaf89430d30eec813f30bdd77", @@ -5665,21 +5665,21 @@ "typeString": "literal_string \"Modules have already been initialized\"" } ], - "id": 688, + "id": 1898, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "812:7:6", + "referencedDeclaration": 4040, + "src": "812:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 695, + "id": 1905, "isConstant": false, "isLValue": false, "isPure": false, @@ -5687,20 +5687,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "812:80:6", + "src": "812:80:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 696, + "id": 1906, "nodeType": "ExpressionStatement", - "src": "812:80:6" + "src": "812:80:9" }, { "expression": { "argumentTypes": null, - "id": 701, + "id": 1911, "isConstant": false, "isLValue": false, "isPure": false, @@ -5709,26 +5709,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 697, + "id": 1907, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "902:7:6", + "referencedDeclaration": 1887, + "src": "902:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 699, + "id": 1909, "indexExpression": { "argumentTypes": null, - "id": 698, + "id": 1908, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "910:16:6", + "referencedDeclaration": 1883, + "src": "910:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5739,7 +5739,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "902:25:6", + "src": "902:25:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5749,26 +5749,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 700, + "id": 1910, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "930:16:6", + "referencedDeclaration": 1883, + "src": "930:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "902:44:6", + "src": "902:44:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 702, + "id": 1912, "nodeType": "ExpressionStatement", - "src": "902:44:6" + "src": "902:44:9" }, { "condition": { @@ -5777,19 +5777,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 705, + "id": 1915, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 703, + "id": 1913, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 683, - "src": "960:2:6", + "referencedDeclaration": 1893, + "src": "960:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5800,14 +5800,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 704, + "id": 1914, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "966:1:6", + "src": "966:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5815,16 +5815,16 @@ }, "value": "0" }, - "src": "960:7:6", + "src": "960:7:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 716, + "id": 1926, "nodeType": "IfStatement", - "src": "956:181:6", + "src": "956:181:9", "trueBody": { "expression": { "argumentTypes": null, @@ -5834,12 +5834,12 @@ "arguments": [ { "argumentTypes": null, - "id": 708, + "id": 1918, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 683, - "src": "1081:2:6", + "referencedDeclaration": 1893, + "src": "1081:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5847,12 +5847,12 @@ }, { "argumentTypes": null, - "id": 709, + "id": 1919, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 685, - "src": "1085:4:6", + "referencedDeclaration": 1895, + "src": "1085:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5863,18 +5863,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 710, + "id": 1920, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1766, - "src": "1091:7:6", + "referencedDeclaration": 4029, + "src": "1091:7:9", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 711, + "id": 1921, "isConstant": false, "isLValue": false, "isPure": false, @@ -5882,7 +5882,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1091:9:6", + "src": "1091:9:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5904,18 +5904,18 @@ "typeString": "uint256" } ], - "id": 707, + "id": 1917, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "1061:19:6", + "referencedDeclaration": 2149, + "src": "1061:19:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 712, + "id": 1922, "isConstant": false, "isLValue": false, "isPure": false, @@ -5923,7 +5923,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:40:6", + "src": "1061:40:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5932,14 +5932,14 @@ { "argumentTypes": null, "hexValue": "436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e", - "id": 713, + "id": 1923, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1103:33:6", + "src": "1103:33:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_7913a3f9168bf3e458e3f42eb08db5c4b33f44228d345660887090b75e24c6aa", @@ -5959,21 +5959,21 @@ "typeString": "literal_string \"Could not finish initialization\"" } ], - "id": 706, + "id": 1916, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1053:7:6", + "referencedDeclaration": 4040, + "src": "1053:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 714, + "id": 1924, "isConstant": false, "isLValue": false, "isPure": false, @@ -5981,21 +5981,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1053:84:6", + "src": "1053:84:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 715, + "id": 1925, "nodeType": "ExpressionStatement", - "src": "1053:84:6" + "src": "1053:84:9" } } ] }, "documentation": null, - "id": 718, + "id": 1928, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6003,16 +6003,16 @@ "name": "setupModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 686, + "id": 1896, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 683, + "id": 1893, "name": "to", "nodeType": "VariableDeclaration", - "scope": 718, - "src": "757:10:6", + "scope": 1928, + "src": "757:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6020,10 +6020,10 @@ "typeString": "address" }, "typeName": { - "id": 682, + "id": 1892, "name": "address", "nodeType": "ElementaryTypeName", - "src": "757:7:6", + "src": "757:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6034,11 +6034,11 @@ }, { "constant": false, - "id": 685, + "id": 1895, "name": "data", "nodeType": "VariableDeclaration", - "scope": 718, - "src": "769:10:6", + "scope": 1928, + "src": "769:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6046,10 +6046,10 @@ "typeString": "bytes" }, "typeName": { - "id": 684, + "id": 1894, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "769:5:6", + "src": "769:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6059,26 +6059,26 @@ "visibility": "internal" } ], - "src": "756:24:6" + "src": "756:24:9" }, "payable": false, "returnParameters": { - "id": 687, + "id": 1897, "nodeType": "ParameterList", "parameters": [], - "src": "802:0:6" + "src": "802:0:9" }, - "scope": 1022, - "src": "735:409:6", + "scope": 2232, + "src": "735:409:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 763, + "id": 1973, "nodeType": "Block", - "src": "1386:384:6", + "src": "1386:384:9", "statements": [ { "expression": { @@ -6090,7 +6090,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 736, + "id": 1946, "isConstant": false, "isLValue": false, "isPure": false, @@ -6101,7 +6101,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 730, + "id": 1940, "isConstant": false, "isLValue": false, "isPure": false, @@ -6111,14 +6111,14 @@ "arguments": [ { "argumentTypes": null, - "id": 727, + "id": 1937, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 720, - "src": "1466:6:6", + "referencedDeclaration": 1930, + "src": "1466:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } } @@ -6126,24 +6126,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } ], - "id": 726, + "id": 1936, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1458:7:6", + "src": "1458:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 728, + "id": 1938, "isConstant": false, "isLValue": false, "isPure": false, @@ -6151,7 +6151,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1458:15:6", + "src": "1458:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6162,14 +6162,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 729, + "id": 1939, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1477:1:6", + "src": "1477:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6177,7 +6177,7 @@ }, "value": "0" }, - "src": "1458:20:6", + "src": "1458:20:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6191,7 +6191,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 735, + "id": 1945, "isConstant": false, "isLValue": false, "isPure": false, @@ -6201,14 +6201,14 @@ "arguments": [ { "argumentTypes": null, - "id": 732, + "id": 1942, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 720, - "src": "1490:6:6", + "referencedDeclaration": 1930, + "src": "1490:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } } @@ -6216,24 +6216,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } ], - "id": 731, + "id": 1941, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1482:7:6", + "src": "1482:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 733, + "id": 1943, "isConstant": false, "isLValue": false, "isPure": false, @@ -6241,7 +6241,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1482:15:6", + "src": "1482:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6251,24 +6251,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 734, + "id": 1944, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "1501:16:6", + "referencedDeclaration": 1883, + "src": "1501:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1482:35:6", + "src": "1482:35:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1458:59:6", + "src": "1458:59:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6277,14 +6277,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206d6f64756c6520616464726573732070726f7669646564", - "id": 737, + "id": 1947, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1519:33:6", + "src": "1519:33:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8c2199b479423c52a835dfe8b0f2e9eb4c1ec1069ba198ccc38077a4a88a5c00", @@ -6304,21 +6304,21 @@ "typeString": "literal_string \"Invalid module address provided\"" } ], - "id": 725, + "id": 1935, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1450:7:6", + "referencedDeclaration": 4040, + "src": "1450:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 738, + "id": 1948, "isConstant": false, "isLValue": false, "isPure": false, @@ -6326,15 +6326,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1450:103:6", + "src": "1450:103:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 739, + "id": 1949, "nodeType": "ExpressionStatement", - "src": "1450:103:6" + "src": "1450:103:9" }, { "expression": { @@ -6346,7 +6346,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 745, + "id": 1955, "isConstant": false, "isLValue": false, "isPure": false, @@ -6355,28 +6355,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 741, + "id": 1951, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "1612:7:6", + "referencedDeclaration": 1887, + "src": "1612:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 743, + "id": 1953, "indexExpression": { "argumentTypes": null, - "id": 742, + "id": 1952, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 720, - "src": "1620:6:6", + "referencedDeclaration": 1930, + "src": "1620:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -6385,7 +6385,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1612:15:6", + "src": "1612:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6396,14 +6396,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 744, + "id": 1954, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1631:1:6", + "src": "1631:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6411,7 +6411,7 @@ }, "value": "0" }, - "src": "1612:20:6", + "src": "1612:20:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6420,14 +6420,14 @@ { "argumentTypes": null, "hexValue": "4d6f64756c652068617320616c7265616479206265656e206164646564", - "id": 746, + "id": 1956, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1634:31:6", + "src": "1634:31:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae2b4ea52eaf6de3fb2d8a64b7555be2dfd285b837a62821bf24e7dc6f329450", @@ -6447,21 +6447,21 @@ "typeString": "literal_string \"Module has already been added\"" } ], - "id": 740, + "id": 1950, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1604:7:6", + "referencedDeclaration": 4040, + "src": "1604:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 747, + "id": 1957, "isConstant": false, "isLValue": false, "isPure": false, @@ -6469,20 +6469,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1604:62:6", + "src": "1604:62:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 748, + "id": 1958, "nodeType": "ExpressionStatement", - "src": "1604:62:6" + "src": "1604:62:9" }, { "expression": { "argumentTypes": null, - "id": 755, + "id": 1965, "isConstant": false, "isLValue": false, "isPure": false, @@ -6491,28 +6491,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 749, + "id": 1959, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "1676:7:6", + "referencedDeclaration": 1887, + "src": "1676:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 751, + "id": 1961, "indexExpression": { "argumentTypes": null, - "id": 750, + "id": 1960, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 720, - "src": "1684:6:6", + "referencedDeclaration": 1930, + "src": "1684:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -6521,7 +6521,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1676:15:6", + "src": "1676:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6533,26 +6533,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 752, + "id": 1962, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "1694:7:6", + "referencedDeclaration": 1887, + "src": "1694:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 754, + "id": 1964, "indexExpression": { "argumentTypes": null, - "id": 753, + "id": 1963, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "1702:16:6", + "referencedDeclaration": 1883, + "src": "1702:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6563,26 +6563,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1694:25:6", + "src": "1694:25:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1676:43:6", + "src": "1676:43:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 756, + "id": 1966, "nodeType": "ExpressionStatement", - "src": "1676:43:6" + "src": "1676:43:9" }, { "expression": { "argumentTypes": null, - "id": 761, + "id": 1971, "isConstant": false, "isLValue": false, "isPure": false, @@ -6591,26 +6591,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 757, + "id": 1967, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "1729:7:6", + "referencedDeclaration": 1887, + "src": "1729:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 759, + "id": 1969, "indexExpression": { "argumentTypes": null, - "id": 758, + "id": 1968, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "1737:16:6", + "referencedDeclaration": 1883, + "src": "1737:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6621,7 +6621,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1729:25:6", + "src": "1729:25:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6631,83 +6631,83 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 760, + "id": 1970, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 720, - "src": "1757:6:6", + "referencedDeclaration": 1930, + "src": "1757:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, - "src": "1729:34:6", + "src": "1729:34:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 762, + "id": 1972, "nodeType": "ExpressionStatement", - "src": "1729:34:6" + "src": "1729:34:9" } ] }, "documentation": "@dev Allows to add a module to the whitelist.\n This can only be done via a Safe transaction.\n @param module Module to be whitelisted.", - "id": 764, + "id": 1974, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 723, + "id": 1933, "modifierName": { "argumentTypes": null, - "id": 722, + "id": 1932, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1448, - "src": "1371:10:6", + "referencedDeclaration": 3064, + "src": "1371:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1371:10:6" + "src": "1371:10:9" } ], "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 721, + "id": 1931, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 720, + "id": 1930, "name": "module", "nodeType": "VariableDeclaration", - "scope": 764, - "src": "1333:13:6", + "scope": 1974, + "src": "1333:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 719, + "id": 1929, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 651, - "src": "1333:6:6", + "referencedDeclaration": 1861, + "src": "1333:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -6715,26 +6715,26 @@ "visibility": "internal" } ], - "src": "1332:15:6" + "src": "1332:15:9" }, "payable": false, "returnParameters": { - "id": 724, + "id": 1934, "nodeType": "ParameterList", "parameters": [], - "src": "1386:0:6" + "src": "1386:0:9" }, - "scope": 1022, - "src": "1311:459:6", + "scope": 2232, + "src": "1311:459:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 813, + "id": 2023, "nodeType": "Block", - "src": "2126:379:6", + "src": "2126:379:9", "statements": [ { "expression": { @@ -6746,7 +6746,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 784, + "id": 1994, "isConstant": false, "isLValue": false, "isPure": false, @@ -6757,7 +6757,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 778, + "id": 1988, "isConstant": false, "isLValue": false, "isPure": false, @@ -6767,14 +6767,14 @@ "arguments": [ { "argumentTypes": null, - "id": 775, + "id": 1985, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "2234:6:6", + "referencedDeclaration": 1978, + "src": "2234:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } } @@ -6782,24 +6782,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } ], - "id": 774, + "id": 1984, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2226:7:6", + "src": "2226:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 776, + "id": 1986, "isConstant": false, "isLValue": false, "isPure": false, @@ -6807,7 +6807,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2226:15:6", + "src": "2226:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6818,14 +6818,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 777, + "id": 1987, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2245:1:6", + "src": "2245:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6833,7 +6833,7 @@ }, "value": "0" }, - "src": "2226:20:6", + "src": "2226:20:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6847,7 +6847,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 783, + "id": 1993, "isConstant": false, "isLValue": false, "isPure": false, @@ -6857,14 +6857,14 @@ "arguments": [ { "argumentTypes": null, - "id": 780, + "id": 1990, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "2258:6:6", + "referencedDeclaration": 1978, + "src": "2258:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } } @@ -6872,24 +6872,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } ], - "id": 779, + "id": 1989, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2250:7:6", + "src": "2250:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 781, + "id": 1991, "isConstant": false, "isLValue": false, "isPure": false, @@ -6897,7 +6897,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2250:15:6", + "src": "2250:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6907,24 +6907,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 782, + "id": 1992, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "2269:16:6", + "referencedDeclaration": 1883, + "src": "2269:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2250:35:6", + "src": "2250:35:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2226:59:6", + "src": "2226:59:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6933,14 +6933,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206d6f64756c6520616464726573732070726f7669646564", - "id": 785, + "id": 1995, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2287:33:6", + "src": "2287:33:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8c2199b479423c52a835dfe8b0f2e9eb4c1ec1069ba198ccc38077a4a88a5c00", @@ -6960,21 +6960,21 @@ "typeString": "literal_string \"Invalid module address provided\"" } ], - "id": 773, + "id": 1983, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2218:7:6", + "referencedDeclaration": 4040, + "src": "2218:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 786, + "id": 1996, "isConstant": false, "isLValue": false, "isPure": false, @@ -6982,15 +6982,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2218:103:6", + "src": "2218:103:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 787, + "id": 1997, "nodeType": "ExpressionStatement", - "src": "2218:103:6" + "src": "2218:103:9" }, { "expression": { @@ -7002,7 +7002,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 795, + "id": 2005, "isConstant": false, "isLValue": false, "isPure": false, @@ -7011,28 +7011,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 789, + "id": 1999, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "2339:7:6", + "referencedDeclaration": 1887, + "src": "2339:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 791, + "id": 2001, "indexExpression": { "argumentTypes": null, - "id": 790, + "id": 2000, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 766, - "src": "2347:10:6", + "referencedDeclaration": 1976, + "src": "2347:10:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -7041,7 +7041,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2339:19:6", + "src": "2339:19:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7054,14 +7054,14 @@ "arguments": [ { "argumentTypes": null, - "id": 793, + "id": 2003, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "2370:6:6", + "referencedDeclaration": 1978, + "src": "2370:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } } @@ -7069,24 +7069,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } ], - "id": 792, + "id": 2002, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2362:7:6", + "src": "2362:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 794, + "id": 2004, "isConstant": false, "isLValue": false, "isPure": false, @@ -7094,13 +7094,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2362:15:6", + "src": "2362:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2339:38:6", + "src": "2339:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7109,14 +7109,14 @@ { "argumentTypes": null, "hexValue": "496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722070726f7669646564", - "id": 796, + "id": 2006, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2379:42:6", + "src": "2379:42:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_5caa315f9c5cf61be71c182eef2dc9ef7b6ce6b42c320d36694e1d23e09c287e", @@ -7136,21 +7136,21 @@ "typeString": "literal_string \"Invalid prevModule, module pair provided\"" } ], - "id": 788, + "id": 1998, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2331:7:6", + "referencedDeclaration": 4040, + "src": "2331:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 797, + "id": 2007, "isConstant": false, "isLValue": false, "isPure": false, @@ -7158,20 +7158,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2331:91:6", + "src": "2331:91:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 798, + "id": 2008, "nodeType": "ExpressionStatement", - "src": "2331:91:6" + "src": "2331:91:9" }, { "expression": { "argumentTypes": null, - "id": 805, + "id": 2015, "isConstant": false, "isLValue": false, "isPure": false, @@ -7180,28 +7180,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 799, + "id": 2009, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "2432:7:6", + "referencedDeclaration": 1887, + "src": "2432:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 801, + "id": 2011, "indexExpression": { "argumentTypes": null, - "id": 800, + "id": 2010, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 766, - "src": "2440:10:6", + "referencedDeclaration": 1976, + "src": "2440:10:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -7210,7 +7210,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2432:19:6", + "src": "2432:19:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7222,28 +7222,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 802, + "id": 2012, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "2454:7:6", + "referencedDeclaration": 1887, + "src": "2454:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 804, + "id": 2014, "indexExpression": { "argumentTypes": null, - "id": 803, + "id": 2013, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "2462:6:6", + "referencedDeclaration": 1978, + "src": "2462:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -7252,26 +7252,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2454:15:6", + "src": "2454:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2432:37:6", + "src": "2432:37:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 806, + "id": 2016, "nodeType": "ExpressionStatement", - "src": "2432:37:6" + "src": "2432:37:9" }, { "expression": { "argumentTypes": null, - "id": 811, + "id": 2021, "isConstant": false, "isLValue": false, "isPure": false, @@ -7280,28 +7280,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 807, + "id": 2017, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "2479:7:6", + "referencedDeclaration": 1887, + "src": "2479:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 809, + "id": 2019, "indexExpression": { "argumentTypes": null, - "id": 808, + "id": 2018, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "2487:6:6", + "referencedDeclaration": 1978, + "src": "2487:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -7310,7 +7310,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2479:15:6", + "src": "2479:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7321,14 +7321,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 810, + "id": 2020, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2497:1:6", + "src": "2497:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7336,72 +7336,72 @@ }, "value": "0" }, - "src": "2479:19:6", + "src": "2479:19:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 812, + "id": 2022, "nodeType": "ExpressionStatement", - "src": "2479:19:6" + "src": "2479:19:9" } ] }, "documentation": "@dev Allows to remove a module from the whitelist.\n This can only be done via a Safe transaction.\n @param prevModule Module that pointed to the module to be removed in the linked list\n @param module Module to be removed.", - "id": 814, + "id": 2024, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 771, + "id": 1981, "modifierName": { "argumentTypes": null, - "id": 770, + "id": 1980, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1448, - "src": "2111:10:6", + "referencedDeclaration": 3064, + "src": "2111:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2111:10:6" + "src": "2111:10:9" } ], "name": "disableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 769, + "id": 1979, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 766, + "id": 1976, "name": "prevModule", "nodeType": "VariableDeclaration", - "scope": 814, - "src": "2054:17:6", + "scope": 2024, + "src": "2054:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 765, + "id": 1975, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 651, - "src": "2054:6:6", + "referencedDeclaration": 1861, + "src": "2054:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -7410,26 +7410,26 @@ }, { "constant": false, - "id": 768, + "id": 1978, "name": "module", "nodeType": "VariableDeclaration", - "scope": 814, - "src": "2073:13:6", + "scope": 2024, + "src": "2073:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 767, + "id": 1977, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 651, - "src": "2073:6:6", + "referencedDeclaration": 1861, + "src": "2073:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, @@ -7437,26 +7437,26 @@ "visibility": "internal" } ], - "src": "2053:34:6" + "src": "2053:34:9" }, "payable": false, "returnParameters": { - "id": 772, + "id": 1982, "nodeType": "ParameterList", "parameters": [], - "src": "2126:0:6" + "src": "2126:0:9" }, - "scope": 1022, - "src": "2031:474:6", + "scope": 2232, + "src": "2031:474:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 848, + "id": 2058, "nodeType": "Block", - "src": "2991:279:6", + "src": "2991:279:9", "statements": [ { "expression": { @@ -7468,7 +7468,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 833, + "id": 2043, "isConstant": false, "isLValue": false, "isPure": false, @@ -7477,34 +7477,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 828, + "id": 2038, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "3058:7:6", + "referencedDeclaration": 1887, + "src": "3058:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 831, + "id": 2041, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 829, + "id": 2039, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1773, - "src": "3066:3:6", + "referencedDeclaration": 4036, + "src": "3066:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 830, + "id": 2040, "isConstant": false, "isLValue": false, "isPure": false, @@ -7512,7 +7512,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3066:10:6", + "src": "3066:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7523,7 +7523,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3058:19:6", + "src": "3058:19:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7534,14 +7534,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 832, + "id": 2042, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3081:1:6", + "src": "3081:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7549,7 +7549,7 @@ }, "value": "0" }, - "src": "3058:24:6", + "src": "3058:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7558,14 +7558,14 @@ { "argumentTypes": null, "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d20616e20656e61626c6564206d6f64756c65", - "id": 834, + "id": 2044, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3084:50:6", + "src": "3084:50:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_cd36462b17a97c5a3df33333c859d5933a4fb7f5e1a0750f5def8eb51f3272e4", @@ -7585,21 +7585,21 @@ "typeString": "literal_string \"Method can only be called from an enabled module\"" } ], - "id": 827, + "id": 2037, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "3050:7:6", + "referencedDeclaration": 4040, + "src": "3050:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 835, + "id": 2045, "isConstant": false, "isLValue": false, "isPure": false, @@ -7607,32 +7607,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3050:85:6", + "src": "3050:85:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 836, + "id": 2046, "nodeType": "ExpressionStatement", - "src": "3050:85:6" + "src": "3050:85:9" }, { "expression": { "argumentTypes": null, - "id": 846, + "id": 2056, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 837, + "id": 2047, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 825, - "src": "3207:7:6", + "referencedDeclaration": 2035, + "src": "3207:7:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7645,12 +7645,12 @@ "arguments": [ { "argumentTypes": null, - "id": 839, + "id": 2049, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 816, - "src": "3225:2:6", + "referencedDeclaration": 2026, + "src": "3225:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7658,12 +7658,12 @@ }, { "argumentTypes": null, - "id": 840, + "id": 2050, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 818, - "src": "3229:5:6", + "referencedDeclaration": 2028, + "src": "3229:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7671,12 +7671,12 @@ }, { "argumentTypes": null, - "id": 841, + "id": 2051, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 820, - "src": "3236:4:6", + "referencedDeclaration": 2030, + "src": "3236:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7684,14 +7684,14 @@ }, { "argumentTypes": null, - "id": 842, + "id": 2052, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 822, - "src": "3242:9:6", + "referencedDeclaration": 2032, + "src": "3242:9:9", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -7700,18 +7700,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 843, + "id": 2053, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1766, - "src": "3253:7:6", + "referencedDeclaration": 4029, + "src": "3253:7:9", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 844, + "id": 2054, "isConstant": false, "isLValue": false, "isPure": false, @@ -7719,7 +7719,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3253:9:6", + "src": "3253:9:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7741,7 +7741,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -7749,18 +7749,18 @@ "typeString": "uint256" } ], - "id": 838, + "id": 2048, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "3217:7:6", + "referencedDeclaration": 2121, + "src": "3217:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 845, + "id": 2055, "isConstant": false, "isLValue": false, "isPure": false, @@ -7768,26 +7768,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3217:46:6", + "src": "3217:46:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3207:56:6", + "src": "3207:56:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 847, + "id": 2057, "nodeType": "ExpressionStatement", - "src": "3207:56:6" + "src": "3207:56:9" } ] }, "documentation": "@dev Allows a Module to execute a Safe transaction without any further confirmations.\n @param to Destination address of module transaction.\n @param value Ether value of module transaction.\n @param data Data payload of module transaction.\n @param operation Operation type of module transaction.", - "id": 849, + "id": 2059, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7795,16 +7795,16 @@ "name": "execTransactionFromModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 823, + "id": 2033, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 816, + "id": 2026, "name": "to", "nodeType": "VariableDeclaration", - "scope": 849, - "src": "2876:10:6", + "scope": 2059, + "src": "2876:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7812,10 +7812,10 @@ "typeString": "address" }, "typeName": { - "id": 815, + "id": 2025, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2876:7:6", + "src": "2876:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7826,11 +7826,11 @@ }, { "constant": false, - "id": 818, + "id": 2028, "name": "value", "nodeType": "VariableDeclaration", - "scope": 849, - "src": "2888:13:6", + "scope": 2059, + "src": "2888:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7838,10 +7838,10 @@ "typeString": "uint256" }, "typeName": { - "id": 817, + "id": 2027, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2888:7:6", + "src": "2888:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7852,11 +7852,11 @@ }, { "constant": false, - "id": 820, + "id": 2030, "name": "data", "nodeType": "VariableDeclaration", - "scope": 849, - "src": "2903:10:6", + "scope": 2059, + "src": "2903:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7864,10 +7864,10 @@ "typeString": "bytes" }, "typeName": { - "id": 819, + "id": 2029, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2903:5:6", + "src": "2903:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -7878,26 +7878,26 @@ }, { "constant": false, - "id": 822, + "id": 2032, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 849, - "src": "2915:24:6", + "scope": 2059, + "src": "2915:24:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 821, + "id": 2031, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2915:14:6", + "referencedDeclaration": 29, + "src": "2915:14:9", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -7905,20 +7905,20 @@ "visibility": "internal" } ], - "src": "2875:65:6" + "src": "2875:65:9" }, "payable": false, "returnParameters": { - "id": 826, + "id": 2036, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 825, + "id": 2035, "name": "success", "nodeType": "VariableDeclaration", - "scope": 849, - "src": "2973:12:6", + "scope": 2059, + "src": "2973:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7926,10 +7926,10 @@ "typeString": "bool" }, "typeName": { - "id": 824, + "id": 2034, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2973:4:6", + "src": "2973:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7939,42 +7939,42 @@ "visibility": "internal" } ], - "src": "2972:14:6" + "src": "2972:14:9" }, - "scope": 1022, - "src": "2841:429:6", + "scope": 2232, + "src": "2841:429:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 910, + "id": 2120, "nodeType": "Block", - "src": "3425:399:6", + "src": "3425:399:9", "statements": [ { "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 868, + "id": 2078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 864, + "id": 2074, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 857, - "src": "3439:9:6", + "referencedDeclaration": 2067, + "src": "3439:9:9", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -7986,32 +7986,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 865, + "id": 2075, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "3452:4:6", + "referencedDeclaration": 30, + "src": "3452:4:9", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 866, + "id": 2076, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "3452:14:6", + "referencedDeclaration": 29, + "src": "3452:14:9", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 867, + "id": 2077, "isConstant": false, "isLValue": false, "isPure": true, @@ -8019,13 +8019,13 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3452:19:6", + "src": "3452:19:9", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3439:32:6", + "src": "3439:32:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8035,24 +8035,24 @@ "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 882, + "id": 2092, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 878, + "id": 2088, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 857, - "src": "3549:9:6", + "referencedDeclaration": 2067, + "src": "3549:9:9", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -8064,32 +8064,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 879, + "id": 2089, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "3562:4:6", + "referencedDeclaration": 30, + "src": "3562:4:9", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 880, + "id": 2090, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "3562:14:6", + "referencedDeclaration": 29, + "src": "3562:14:9", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 881, + "id": 2091, "isConstant": false, "isLValue": false, "isPure": true, @@ -8097,35 +8097,35 @@ "memberName": "DelegateCall", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3562:27:6", + "src": "3562:27:9", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3549:40:6", + "src": "3549:40:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 907, + "id": 2117, "nodeType": "Block", - "src": "3664:154:6", + "src": "3664:154:9", "statements": [ { "assignments": [ - 892 + 2102 ], "declarations": [ { "constant": false, - "id": 892, + "id": 2102, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 911, - "src": "3678:19:6", + "scope": 2121, + "src": "3678:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8133,10 +8133,10 @@ "typeString": "address" }, "typeName": { - "id": 891, + "id": 2101, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3678:7:6", + "src": "3678:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8146,18 +8146,18 @@ "visibility": "internal" } ], - "id": 896, + "id": 2106, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 894, + "id": 2104, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 855, - "src": "3714:4:6", + "referencedDeclaration": 2065, + "src": "3714:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -8171,18 +8171,18 @@ "typeString": "bytes memory" } ], - "id": 893, + "id": 2103, "name": "executeCreate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 948, - "src": "3700:13:6", + "referencedDeclaration": 2158, + "src": "3700:13:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", "typeString": "function (bytes memory) returns (address)" } }, - "id": 895, + "id": 2105, "isConstant": false, "isLValue": false, "isPure": false, @@ -8190,31 +8190,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3700:19:6", + "src": "3700:19:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3678:41:6" + "src": "3678:41:9" }, { "expression": { "argumentTypes": null, - "id": 901, + "id": 2111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 897, + "id": 2107, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 862, - "src": "3733:7:6", + "referencedDeclaration": 2072, + "src": "3733:7:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8228,19 +8228,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 900, + "id": 2110, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 898, + "id": 2108, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 892, - "src": "3743:11:6", + "referencedDeclaration": 2102, + "src": "3743:11:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8251,14 +8251,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 899, + "id": 2109, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3758:1:6", + "src": "3758:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8266,21 +8266,21 @@ }, "value": "0" }, - "src": "3743:16:6", + "src": "3743:16:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3733:26:6", + "src": "3733:26:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 902, + "id": 2112, "nodeType": "ExpressionStatement", - "src": "3733:26:6" + "src": "3733:26:9" }, { "eventCall": { @@ -8288,12 +8288,12 @@ "arguments": [ { "argumentTypes": null, - "id": 904, + "id": 2114, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 892, - "src": "3795:11:6", + "referencedDeclaration": 2102, + "src": "3795:11:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8307,18 +8307,18 @@ "typeString": "address" } ], - "id": 903, + "id": 2113, "name": "ContractCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 662, - "src": "3778:16:6", + "referencedDeclaration": 1872, + "src": "3778:16:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 905, + "id": 2115, "isConstant": false, "isLValue": false, "isPure": false, @@ -8326,37 +8326,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3778:29:6", + "src": "3778:29:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 906, + "id": 2116, "nodeType": "EmitStatement", - "src": "3773:34:6" + "src": "3773:34:9" } ] }, - "id": 908, + "id": 2118, "nodeType": "IfStatement", - "src": "3545:273:6", + "src": "3545:273:9", "trueBody": { "expression": { "argumentTypes": null, - "id": 889, + "id": 2099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 883, + "id": 2093, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 862, - "src": "3603:7:6", + "referencedDeclaration": 2072, + "src": "3603:7:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8369,12 +8369,12 @@ "arguments": [ { "argumentTypes": null, - "id": 885, + "id": 2095, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 851, - "src": "3633:2:6", + "referencedDeclaration": 2061, + "src": "3633:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8382,12 +8382,12 @@ }, { "argumentTypes": null, - "id": 886, + "id": 2096, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 855, - "src": "3637:4:6", + "referencedDeclaration": 2065, + "src": "3637:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -8395,12 +8395,12 @@ }, { "argumentTypes": null, - "id": 887, + "id": 2097, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 859, - "src": "3643:5:6", + "referencedDeclaration": 2069, + "src": "3643:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8422,18 +8422,18 @@ "typeString": "uint256" } ], - "id": 884, + "id": 2094, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "3613:19:6", + "referencedDeclaration": 2149, + "src": "3613:19:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 888, + "id": 2098, "isConstant": false, "isLValue": false, "isPure": false, @@ -8441,42 +8441,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3613:36:6", + "src": "3613:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3603:46:6", + "src": "3603:46:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 890, + "id": 2100, "nodeType": "ExpressionStatement", - "src": "3603:46:6" + "src": "3603:46:9" } }, - "id": 909, + "id": 2119, "nodeType": "IfStatement", - "src": "3435:383:6", + "src": "3435:383:9", "trueBody": { "expression": { "argumentTypes": null, - "id": 876, + "id": 2086, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 869, + "id": 2079, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 862, - "src": "3485:7:6", + "referencedDeclaration": 2072, + "src": "3485:7:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8489,12 +8489,12 @@ "arguments": [ { "argumentTypes": null, - "id": 871, + "id": 2081, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 851, - "src": "3507:2:6", + "referencedDeclaration": 2061, + "src": "3507:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8502,12 +8502,12 @@ }, { "argumentTypes": null, - "id": 872, + "id": 2082, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 853, - "src": "3511:5:6", + "referencedDeclaration": 2063, + "src": "3511:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8515,12 +8515,12 @@ }, { "argumentTypes": null, - "id": 873, + "id": 2083, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 855, - "src": "3518:4:6", + "referencedDeclaration": 2065, + "src": "3518:4:9", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -8528,12 +8528,12 @@ }, { "argumentTypes": null, - "id": 874, + "id": 2084, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 859, - "src": "3524:5:6", + "referencedDeclaration": 2069, + "src": "3524:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8559,18 +8559,18 @@ "typeString": "uint256" } ], - "id": 870, + "id": 2080, "name": "executeCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 926, - "src": "3495:11:6", + "referencedDeclaration": 2136, + "src": "3495:11:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,uint256) returns (bool)" } }, - "id": 875, + "id": 2085, "isConstant": false, "isLValue": false, "isPure": false, @@ -8578,27 +8578,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3495:35:6", + "src": "3495:35:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3485:45:6", + "src": "3485:45:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 877, + "id": 2087, "nodeType": "ExpressionStatement", - "src": "3485:45:6" + "src": "3485:45:9" } } ] }, "documentation": null, - "id": 911, + "id": 2121, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8606,16 +8606,16 @@ "name": "execute", "nodeType": "FunctionDefinition", "parameters": { - "id": 860, + "id": 2070, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 851, + "id": 2061, "name": "to", "nodeType": "VariableDeclaration", - "scope": 911, - "src": "3293:10:6", + "scope": 2121, + "src": "3293:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8623,10 +8623,10 @@ "typeString": "address" }, "typeName": { - "id": 850, + "id": 2060, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3293:7:6", + "src": "3293:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8637,11 +8637,11 @@ }, { "constant": false, - "id": 853, + "id": 2063, "name": "value", "nodeType": "VariableDeclaration", - "scope": 911, - "src": "3305:13:6", + "scope": 2121, + "src": "3305:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8649,10 +8649,10 @@ "typeString": "uint256" }, "typeName": { - "id": 852, + "id": 2062, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3305:7:6", + "src": "3305:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8663,11 +8663,11 @@ }, { "constant": false, - "id": 855, + "id": 2065, "name": "data", "nodeType": "VariableDeclaration", - "scope": 911, - "src": "3320:10:6", + "scope": 2121, + "src": "3320:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8675,10 +8675,10 @@ "typeString": "bytes" }, "typeName": { - "id": 854, + "id": 2064, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3320:5:6", + "src": "3320:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8689,26 +8689,26 @@ }, { "constant": false, - "id": 857, + "id": 2067, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 911, - "src": "3332:24:6", + "scope": 2121, + "src": "3332:24:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 856, + "id": 2066, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "3332:14:6", + "referencedDeclaration": 29, + "src": "3332:14:9", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -8717,11 +8717,11 @@ }, { "constant": false, - "id": 859, + "id": 2069, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 911, - "src": "3358:13:6", + "scope": 2121, + "src": "3358:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8729,10 +8729,10 @@ "typeString": "uint256" }, "typeName": { - "id": 858, + "id": 2068, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3358:7:6", + "src": "3358:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8742,20 +8742,20 @@ "visibility": "internal" } ], - "src": "3292:80:6" + "src": "3292:80:9" }, "payable": false, "returnParameters": { - "id": 863, + "id": 2073, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 862, + "id": 2072, "name": "success", "nodeType": "VariableDeclaration", - "scope": 911, - "src": "3407:12:6", + "scope": 2121, + "src": "3407:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8763,10 +8763,10 @@ "typeString": "bool" }, "typeName": { - "id": 861, + "id": 2071, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3407:4:6", + "src": "3407:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8776,86 +8776,86 @@ "visibility": "internal" } ], - "src": "3406:14:6" + "src": "3406:14:9" }, - "scope": 1022, - "src": "3276:548:6", + "scope": 2232, + "src": "3276:548:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 925, + "id": 2135, "nodeType": "Block", - "src": "3957:182:6", + "src": "3957:182:9", "statements": [ { "externalReferences": [ { "data": { - "declaration": 917, + "declaration": 2127, "isOffset": false, "isSlot": false, - "src": "4111:4:6", + "src": "4111:4:9", "valueSize": 1 } }, { "data": { - "declaration": 917, + "declaration": 2127, "isOffset": false, "isSlot": false, - "src": "4092:4:6", + "src": "4092:4:9", "valueSize": 1 } }, { "success": { - "declaration": 922, + "declaration": 2132, "isOffset": false, "isSlot": false, - "src": "4054:7:6", + "src": "4054:7:9", "valueSize": 1 } }, { "txGas": { - "declaration": 919, + "declaration": 2129, "isOffset": false, "isSlot": false, - "src": "4070:5:6", + "src": "4070:5:9", "valueSize": 1 } }, { "to": { - "declaration": 913, + "declaration": 2123, "isOffset": false, "isSlot": false, - "src": "4077:2:6", + "src": "4077:2:9", "valueSize": 1 } }, { "value": { - "declaration": 915, + "declaration": 2125, "isOffset": false, "isSlot": false, - "src": "4081:5:6", + "src": "4081:5:9", "valueSize": 1 } } ], - "id": 924, + "id": 2134, "nodeType": "InlineAssembly", "operations": "{\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "4031:108:6" + "src": "4031:108:9" } ] }, "documentation": null, - "id": 926, + "id": 2136, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8863,16 +8863,16 @@ "name": "executeCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 920, + "id": 2130, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 913, + "id": 2123, "name": "to", "nodeType": "VariableDeclaration", - "scope": 926, - "src": "3851:10:6", + "scope": 2136, + "src": "3851:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8880,10 +8880,10 @@ "typeString": "address" }, "typeName": { - "id": 912, + "id": 2122, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3851:7:6", + "src": "3851:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8894,11 +8894,11 @@ }, { "constant": false, - "id": 915, + "id": 2125, "name": "value", "nodeType": "VariableDeclaration", - "scope": 926, - "src": "3863:13:6", + "scope": 2136, + "src": "3863:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8906,10 +8906,10 @@ "typeString": "uint256" }, "typeName": { - "id": 914, + "id": 2124, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3863:7:6", + "src": "3863:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8920,11 +8920,11 @@ }, { "constant": false, - "id": 917, + "id": 2127, "name": "data", "nodeType": "VariableDeclaration", - "scope": 926, - "src": "3878:10:6", + "scope": 2136, + "src": "3878:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8932,10 +8932,10 @@ "typeString": "bytes" }, "typeName": { - "id": 916, + "id": 2126, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3878:5:6", + "src": "3878:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8946,11 +8946,11 @@ }, { "constant": false, - "id": 919, + "id": 2129, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 926, - "src": "3890:13:6", + "scope": 2136, + "src": "3890:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8958,10 +8958,10 @@ "typeString": "uint256" }, "typeName": { - "id": 918, + "id": 2128, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3890:7:6", + "src": "3890:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8971,20 +8971,20 @@ "visibility": "internal" } ], - "src": "3850:54:6" + "src": "3850:54:9" }, "payable": false, "returnParameters": { - "id": 923, + "id": 2133, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 922, + "id": 2132, "name": "success", "nodeType": "VariableDeclaration", - "scope": 926, - "src": "3939:12:6", + "scope": 2136, + "src": "3939:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8992,10 +8992,10 @@ "typeString": "bool" }, "typeName": { - "id": 921, + "id": 2131, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3939:4:6", + "src": "3939:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9005,77 +9005,77 @@ "visibility": "internal" } ], - "src": "3938:14:6" + "src": "3938:14:9" }, - "scope": 1022, - "src": "3830:309:6", + "scope": 2232, + "src": "3830:309:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 938, + "id": 2148, "nodeType": "Block", - "src": "4265:183:6", + "src": "4265:183:9", "statements": [ { "externalReferences": [ { "data": { - "declaration": 930, + "declaration": 2140, "isOffset": false, "isSlot": false, - "src": "4420:4:6", + "src": "4420:4:9", "valueSize": 1 } }, { "data": { - "declaration": 930, + "declaration": 2140, "isOffset": false, "isSlot": false, - "src": "4401:4:6", + "src": "4401:4:9", "valueSize": 1 } }, { "success": { - "declaration": 935, + "declaration": 2145, "isOffset": false, "isSlot": false, - "src": "4362:7:6", + "src": "4362:7:9", "valueSize": 1 } }, { "txGas": { - "declaration": 932, + "declaration": 2142, "isOffset": false, "isSlot": false, - "src": "4386:5:6", + "src": "4386:5:9", "valueSize": 1 } }, { "to": { - "declaration": 928, + "declaration": 2138, "isOffset": false, "isSlot": false, - "src": "4393:2:6", + "src": "4393:2:9", "valueSize": 1 } } ], - "id": 937, + "id": 2147, "nodeType": "InlineAssembly", "operations": "{\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "4339:109:6" + "src": "4339:109:9" } ] }, "documentation": null, - "id": 939, + "id": 2149, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9083,16 +9083,16 @@ "name": "executeDelegateCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 933, + "id": 2143, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 928, + "id": 2138, "name": "to", "nodeType": "VariableDeclaration", - "scope": 939, - "src": "4174:10:6", + "scope": 2149, + "src": "4174:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9100,10 +9100,10 @@ "typeString": "address" }, "typeName": { - "id": 927, + "id": 2137, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4174:7:6", + "src": "4174:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9114,11 +9114,11 @@ }, { "constant": false, - "id": 930, + "id": 2140, "name": "data", "nodeType": "VariableDeclaration", - "scope": 939, - "src": "4186:10:6", + "scope": 2149, + "src": "4186:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9126,10 +9126,10 @@ "typeString": "bytes" }, "typeName": { - "id": 929, + "id": 2139, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4186:5:6", + "src": "4186:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -9140,11 +9140,11 @@ }, { "constant": false, - "id": 932, + "id": 2142, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 939, - "src": "4198:13:6", + "scope": 2149, + "src": "4198:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9152,10 +9152,10 @@ "typeString": "uint256" }, "typeName": { - "id": 931, + "id": 2141, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4198:7:6", + "src": "4198:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9165,20 +9165,20 @@ "visibility": "internal" } ], - "src": "4173:39:6" + "src": "4173:39:9" }, "payable": false, "returnParameters": { - "id": 936, + "id": 2146, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 935, + "id": 2145, "name": "success", "nodeType": "VariableDeclaration", - "scope": 939, - "src": "4247:12:6", + "scope": 2149, + "src": "4247:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9186,10 +9186,10 @@ "typeString": "bool" }, "typeName": { - "id": 934, + "id": 2144, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4247:4:6", + "src": "4247:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9199,59 +9199,59 @@ "visibility": "internal" } ], - "src": "4246:14:6" + "src": "4246:14:9" }, - "scope": 1022, - "src": "4145:303:6", + "scope": 2232, + "src": "4145:303:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 947, + "id": 2157, "nodeType": "Block", - "src": "4548:167:6", + "src": "4548:167:9", "statements": [ { "externalReferences": [ { "newContract": { - "declaration": 944, + "declaration": 2154, "isOffset": false, "isSlot": false, - "src": "4645:11:6", + "src": "4645:11:9", "valueSize": 1 } }, { "data": { - "declaration": 941, + "declaration": 2151, "isOffset": false, "isSlot": false, - "src": "4674:4:6", + "src": "4674:4:9", "valueSize": 1 } }, { "data": { - "declaration": 941, + "declaration": 2151, "isOffset": false, "isSlot": false, - "src": "4693:4:6", + "src": "4693:4:9", "valueSize": 1 } } ], - "id": 946, + "id": 2156, "nodeType": "InlineAssembly", "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", - "src": "4622:93:6" + "src": "4622:93:9" } ] }, "documentation": null, - "id": 948, + "id": 2158, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9259,16 +9259,16 @@ "name": "executeCreate", "nodeType": "FunctionDefinition", "parameters": { - "id": 942, + "id": 2152, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 941, + "id": 2151, "name": "data", "nodeType": "VariableDeclaration", - "scope": 948, - "src": "4477:10:6", + "scope": 2158, + "src": "4477:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9276,10 +9276,10 @@ "typeString": "bytes" }, "typeName": { - "id": 940, + "id": 2150, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4477:5:6", + "src": "4477:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -9289,20 +9289,20 @@ "visibility": "internal" } ], - "src": "4476:12:6" + "src": "4476:12:9" }, "payable": false, "returnParameters": { - "id": 945, + "id": 2155, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 944, + "id": 2154, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 948, - "src": "4523:19:6", + "scope": 2158, + "src": "4523:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9310,10 +9310,10 @@ "typeString": "address" }, "typeName": { - "id": 943, + "id": 2153, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4523:7:6", + "src": "4523:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9323,32 +9323,32 @@ "visibility": "internal" } ], - "src": "4522:21:6" + "src": "4522:21:9" }, - "scope": 1022, - "src": "4454:261:6", + "scope": 2232, + "src": "4454:261:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1020, + "id": 2230, "nodeType": "Block", - "src": "4876:656:6", + "src": "4876:656:9", "statements": [ { "assignments": [ - 955 + 2165 ], "declarations": [ { "constant": false, - "id": 955, + "id": 2165, "name": "moduleCount", "nodeType": "VariableDeclaration", - "scope": 1021, - "src": "4920:19:6", + "scope": 2231, + "src": "4920:19:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9356,10 +9356,10 @@ "typeString": "uint256" }, "typeName": { - "id": 954, + "id": 2164, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4920:7:6", + "src": "4920:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9369,18 +9369,18 @@ "visibility": "internal" } ], - "id": 957, + "id": 2167, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 956, + "id": 2166, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4942:1:6", + "src": "4942:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9389,20 +9389,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "4920:23:6" + "src": "4920:23:9" }, { "assignments": [ - 959 + 2169 ], "declarations": [ { "constant": false, - "id": 959, + "id": 2169, "name": "currentModule", "nodeType": "VariableDeclaration", - "scope": 1021, - "src": "4953:21:6", + "scope": 2231, + "src": "4953:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9410,10 +9410,10 @@ "typeString": "address" }, "typeName": { - "id": 958, + "id": 2168, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4953:7:6", + "src": "4953:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9423,31 +9423,31 @@ "visibility": "internal" } ], - "id": 963, + "id": 2173, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 960, + "id": 2170, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "4977:7:6", + "referencedDeclaration": 1887, + "src": "4977:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 962, + "id": 2172, "indexExpression": { "argumentTypes": null, - "id": 961, + "id": 2171, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "4985:16:6", + "referencedDeclaration": 1883, + "src": "4985:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9458,37 +9458,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4977:25:6", + "src": "4977:25:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4953:49:6" + "src": "4953:49:9" }, { "body": { - "id": 976, + "id": 2186, "nodeType": "Block", - "src": "5053:91:6", + "src": "5053:91:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 971, + "id": 2181, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 967, + "id": 2177, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "5067:13:6", + "referencedDeclaration": 2169, + "src": "5067:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9500,26 +9500,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 968, + "id": 2178, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "5083:7:6", + "referencedDeclaration": 1887, + "src": "5083:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 970, + "id": 2180, "indexExpression": { "argumentTypes": null, - "id": 969, + "id": 2179, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "5091:13:6", + "referencedDeclaration": 2169, + "src": "5091:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9530,26 +9530,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5083:22:6", + "src": "5083:22:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5067:38:6", + "src": "5067:38:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 972, + "id": 2182, "nodeType": "ExpressionStatement", - "src": "5067:38:6" + "src": "5067:38:9" }, { "expression": { "argumentTypes": null, - "id": 974, + "id": 2184, "isConstant": false, "isLValue": false, "isPure": false, @@ -9557,15 +9557,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5119:14:6", + "src": "5119:14:9", "subExpression": { "argumentTypes": null, - "id": 973, + "id": 2183, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 955, - "src": "5119:11:6", + "referencedDeclaration": 2165, + "src": "5119:11:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9576,9 +9576,9 @@ "typeString": "uint256" } }, - "id": 975, + "id": 2185, "nodeType": "ExpressionStatement", - "src": "5119:14:6" + "src": "5119:14:9" } ] }, @@ -9588,19 +9588,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 966, + "id": 2176, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 964, + "id": 2174, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "5018:13:6", + "referencedDeclaration": 2169, + "src": "5018:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9610,39 +9610,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 965, + "id": 2175, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "5035:16:6", + "referencedDeclaration": 1883, + "src": "5035:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5018:33:6", + "src": "5018:33:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 977, + "id": 2187, "nodeType": "WhileStatement", - "src": "5012:132:6" + "src": "5012:132:9" }, { "assignments": [ - 981 + 2191 ], "declarations": [ { "constant": false, - "id": 981, + "id": 2191, "name": "array", "nodeType": "VariableDeclaration", - "scope": 1021, - "src": "5153:22:6", + "scope": 2231, + "src": "5153:22:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -9651,19 +9651,19 @@ }, "typeName": { "baseType": { - "id": 979, + "id": 2189, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5153:7:6", + "src": "5153:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 980, + "id": 2190, "length": null, "nodeType": "ArrayTypeName", - "src": "5153:9:6", + "src": "5153:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -9673,18 +9673,18 @@ "visibility": "internal" } ], - "id": 987, + "id": 2197, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 985, + "id": 2195, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 955, - "src": "5192:11:6", + "referencedDeclaration": 2165, + "src": "5192:11:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9698,39 +9698,39 @@ "typeString": "uint256" } ], - "id": 984, + "id": 2194, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "5178:13:6", + "src": "5178:13:9", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 982, + "id": 2192, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5182:7:6", + "src": "5182:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 983, + "id": 2193, "length": null, "nodeType": "ArrayTypeName", - "src": "5182:9:6", + "src": "5182:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 986, + "id": 2196, "isConstant": false, "isLValue": false, "isPure": false, @@ -9738,31 +9738,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5178:26:6", + "src": "5178:26:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "5153:51:6" + "src": "5153:51:9" }, { "expression": { "argumentTypes": null, - "id": 990, + "id": 2200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 988, + "id": 2198, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 955, - "src": "5248:11:6", + "referencedDeclaration": 2165, + "src": "5248:11:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9773,14 +9773,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 989, + "id": 2199, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5262:1:6", + "src": "5262:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9788,32 +9788,32 @@ }, "value": "0" }, - "src": "5248:15:6", + "src": "5248:15:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 991, + "id": 2201, "nodeType": "ExpressionStatement", - "src": "5248:15:6" + "src": "5248:15:9" }, { "expression": { "argumentTypes": null, - "id": 996, + "id": 2206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 992, + "id": 2202, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "5273:13:6", + "referencedDeclaration": 2169, + "src": "5273:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9825,26 +9825,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 993, + "id": 2203, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "5289:7:6", + "referencedDeclaration": 1887, + "src": "5289:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 995, + "id": 2205, "indexExpression": { "argumentTypes": null, - "id": 994, + "id": 2204, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "5297:16:6", + "referencedDeclaration": 1883, + "src": "5297:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9855,32 +9855,32 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5289:25:6", + "src": "5289:25:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5273:41:6", + "src": "5273:41:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 997, + "id": 2207, "nodeType": "ExpressionStatement", - "src": "5273:41:6" + "src": "5273:41:9" }, { "body": { - "id": 1016, + "id": 2226, "nodeType": "Block", - "src": "5365:139:6", + "src": "5365:139:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 1005, + "id": 2215, "isConstant": false, "isLValue": false, "isPure": false, @@ -9889,26 +9889,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1001, + "id": 2211, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "5379:5:6", + "referencedDeclaration": 2191, + "src": "5379:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1003, + "id": 2213, "indexExpression": { "argumentTypes": null, - "id": 1002, + "id": 2212, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 955, - "src": "5385:11:6", + "referencedDeclaration": 2165, + "src": "5385:11:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9919,7 +9919,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5379:18:6", + "src": "5379:18:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9929,43 +9929,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1004, + "id": 2214, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "5400:13:6", + "referencedDeclaration": 2169, + "src": "5400:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5379:34:6", + "src": "5379:34:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1006, + "id": 2216, "nodeType": "ExpressionStatement", - "src": "5379:34:6" + "src": "5379:34:9" }, { "expression": { "argumentTypes": null, - "id": 1011, + "id": 2221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1007, + "id": 2217, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "5427:13:6", + "referencedDeclaration": 2169, + "src": "5427:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9977,26 +9977,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1008, + "id": 2218, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "5443:7:6", + "referencedDeclaration": 1887, + "src": "5443:7:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1010, + "id": 2220, "indexExpression": { "argumentTypes": null, - "id": 1009, + "id": 2219, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "5451:13:6", + "referencedDeclaration": 2169, + "src": "5451:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10007,26 +10007,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5443:22:6", + "src": "5443:22:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5427:38:6", + "src": "5427:38:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1012, + "id": 2222, "nodeType": "ExpressionStatement", - "src": "5427:38:6" + "src": "5427:38:9" }, { "expression": { "argumentTypes": null, - "id": 1014, + "id": 2224, "isConstant": false, "isLValue": false, "isPure": false, @@ -10034,15 +10034,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5479:14:6", + "src": "5479:14:9", "subExpression": { "argumentTypes": null, - "id": 1013, + "id": 2223, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 955, - "src": "5479:11:6", + "referencedDeclaration": 2165, + "src": "5479:11:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10053,9 +10053,9 @@ "typeString": "uint256" } }, - "id": 1015, + "id": 2225, "nodeType": "ExpressionStatement", - "src": "5479:14:6" + "src": "5479:14:9" } ] }, @@ -10065,19 +10065,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1000, + "id": 2210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 998, + "id": 2208, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "5330:13:6", + "referencedDeclaration": 2169, + "src": "5330:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10087,50 +10087,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 999, + "id": 2209, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "5347:16:6", + "referencedDeclaration": 1883, + "src": "5347:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5330:33:6", + "src": "5330:33:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1017, + "id": 2227, "nodeType": "WhileStatement", - "src": "5324:180:6" + "src": "5324:180:9" }, { "expression": { "argumentTypes": null, - "id": 1018, + "id": 2228, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "5520:5:6", + "referencedDeclaration": 2191, + "src": "5520:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 953, - "id": 1019, + "functionReturnParameters": 2163, + "id": 2229, "nodeType": "Return", - "src": "5513:12:6" + "src": "5513:12:9" } ] }, "documentation": "@dev Returns array of modules.\n @return Array of modules.", - "id": 1021, + "id": 2231, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -10138,23 +10138,23 @@ "name": "getModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 949, + "id": 2159, "nodeType": "ParameterList", "parameters": [], - "src": "4813:2:6" + "src": "4813:2:9" }, "payable": false, "returnParameters": { - "id": 953, + "id": 2163, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 952, + "id": 2162, "name": "", "nodeType": "VariableDeclaration", - "scope": 1021, - "src": "4861:9:6", + "scope": 2231, + "src": "4861:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10163,19 +10163,19 @@ }, "typeName": { "baseType": { - "id": 950, + "id": 2160, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4861:7:6", + "src": "4861:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 951, + "id": 2161, "length": null, "nodeType": "ArrayTypeName", - "src": "4861:9:6", + "src": "4861:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -10185,20 +10185,20 @@ "visibility": "internal" } ], - "src": "4860:11:6" + "src": "4860:11:9" }, - "scope": 1022, - "src": "4794:738:6", + "scope": 2232, + "src": "4794:738:9", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1023, - "src": "303:5231:6" + "scope": 2233, + "src": "303:5231:9" } ], - "src": "0:5535:6" + "src": "0:5535:9" }, "compiler": { "name": "solc", @@ -10206,5 +10206,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-20T07:57:27.009Z" + "updatedAt": "2018-06-29T09:01:22.064Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSend.json b/safe-contracts/build/contracts/MultiSend.json index 2ff8cf2594..a221e4f9de 100644 --- a/safe-contracts/build/contracts/MultiSend.json +++ b/safe-contracts/build/contracts/MultiSend.json @@ -18,29 +18,29 @@ ], "bytecode": "0x608060405234801561001057600080fd5b50610169806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a14610046575b600080fd5b34801561005257600080fd5b506100ad600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506100af565b005b805160205b81811015610138578083015160208201840151604083018501516080840186015160a085018701600085600081146100f357600181146101035761010e565b6000808585888a5af1915061010e565b6000808585895af491505b50600081141561011d57600080fd5b602080601f8501040260a001870196505050505050506100b4565b5050505600a165627a7a72305820c1abf4988401674d6d6a5ceca56de123817c61305360ceffe26ebab59a828b7d0029", "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a14610046575b600080fd5b34801561005257600080fd5b506100ad600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506100af565b005b805160205b81811015610138578083015160208201840151604083018501516080840186015160a085018701600085600081146100f357600181146101035761010e565b6000808585888a5af1915061010e565b6000808585895af491505b50600081141561011d57600080fd5b602080601f8501040260a001870196505050505050506100b4565b5050505600a165627a7a72305820c1abf4988401674d6d6a5ceca56de123817c61305360ceffe26ebab59a828b7d0029", - "sourceMap": "253:1424:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;253:1424:17;;;;;;;", - "deployedSourceMap": "253:1424:17:-;;;;;;;;;;;;;;;;;;;;;;;;695:980;;8:9:-1;5:2;;;30:1;27;20:12;5:2;695:980:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;870:12;864:19;905:4;922:737;936:6;933:1;930:13;922:737;;;1007:1;993:12;989:20;983:27;1068:4;1065:1;1061:12;1047;1043:31;1037:38;1136:4;1133:1;1129:12;1115;1111:31;1105:38;1209:4;1206:1;1202:12;1188;1184:31;1178:38;1270:4;1267:1;1263:12;1249;1245:31;1308:1;1333:9;1365:1;1360:66;;;;1448:1;1443:67;;;;1326:184;;1360:66;1422:1;1419;1407:10;1401:4;1394:5;1390:2;1385:3;1380:44;1369:55;;1360:66;;1443:67;1506:1;1503;1491:10;1485:4;1481:2;1476:3;1463:45;1452:56;;1326:184;;1542:1;1533:7;1530:14;1527:2;;;1557:1;1554;1547:12;1527:2;1638:4;1631;1624;1612:10;1608:21;1604:32;1600:43;1594:4;1590:54;1587:1;1583:62;1578:67;;948:711;;;;;;922:737;;;836:833;;;:::o", + "sourceMap": "253:1424:19:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;253:1424:19;;;;;;;", + "deployedSourceMap": "253:1424:19:-;;;;;;;;;;;;;;;;;;;;;;;;695:980;;8:9:-1;5:2;;;30:1;27;20:12;5:2;695:980:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;870:12;864:19;905:4;922:737;936:6;933:1;930:13;922:737;;;1007:1;993:12;989:20;983:27;1068:4;1065:1;1061:12;1047;1043:31;1037:38;1136:4;1133:1;1129:12;1115;1111:31;1105:38;1209:4;1206:1;1202:12;1188;1184:31;1178:38;1270:4;1267:1;1263:12;1249;1245:31;1308:1;1333:9;1365:1;1360:66;;;;1448:1;1443:67;;;;1326:184;;1360:66;1422:1;1419;1407:10;1401:4;1394:5;1390:2;1385:3;1380:44;1369:55;;1360:66;;1443:67;1506:1;1503;1491:10;1485:4;1481:2;1476:3;1463:45;1452:56;;1326:184;;1542:1;1533:7;1530:14;1527:2;;;1557:1;1554;1547:12;1527:2;1638:4;1631;1624;1612:10;1608:21;1604:32;1600:43;1594:4;1590:54;1587:1;1583:62;1578:67;;948:711;;;;;;922:737;;;836:833;;;:::o", "source": "pragma solidity 0.4.24;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \ncontract MultiSend {\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions. Each transaction is encoded as a \n /// tuple(operation,address,uint256,bytes), where operation \n /// can be 0 for a call or 1 for a delegatecall. The bytes \n /// of all encoded transactions are concatenated to form the input.\n function multiSend(bytes transactions)\n public\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let length := mload(transactions)\n let i := 0x20\n for { } lt(i, length) { } {\n let operation := mload(add(transactions, i))\n let to := mload(add(transactions, add(i, 0x20)))\n let value := mload(add(transactions, add(i, 0x40)))\n let dataLength := mload(add(transactions, add(i, 0x80)))\n let data := add(transactions, add(i, 0xa0))\n let success := 0\n switch operation \n case 0 { success := call(gas, to, value, data, dataLength, 0, 0) }\n case 1 { success := delegatecall(gas, to, data, dataLength, 0, 0) }\n if eq(success, 0) { revert(0, 0) }\n i := add(i, add(0xa0, mul(div(add(dataLength, 0x1f), 0x20), 0x20)))\n }\n }\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", "exportedSymbols": { "MultiSend": [ - 1840 + 3176 ] }, - "id": 1841, + "id": 3177, "nodeType": "SourceUnit", "nodes": [ { - "id": 1832, + "id": 3168, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:17" + "src": "0:23:19" }, { "baseContracts": [], @@ -48,85 +48,85 @@ "contractKind": "contract", "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", "fullyImplemented": true, - "id": 1840, + "id": 3176, "linearizedBaseContracts": [ - 1840 + 3176 ], "name": "MultiSend", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1838, + "id": 3174, "nodeType": "Block", - "src": "753:922:17", + "src": "753:922:19", "statements": [ { "externalReferences": [ { "transactions": { - "declaration": 1834, + "declaration": 3170, "isOffset": false, "isSlot": false, - "src": "870:12:17", + "src": "870:12:19", "valueSize": 1 } }, { "transactions": { - "declaration": 1834, + "declaration": 3170, "isOffset": false, "isSlot": false, - "src": "993:12:17", + "src": "993:12:19", "valueSize": 1 } }, { "transactions": { - "declaration": 1834, + "declaration": 3170, "isOffset": false, "isSlot": false, - "src": "1047:12:17", + "src": "1047:12:19", "valueSize": 1 } }, { "transactions": { - "declaration": 1834, + "declaration": 3170, "isOffset": false, "isSlot": false, - "src": "1188:12:17", + "src": "1188:12:19", "valueSize": 1 } }, { "transactions": { - "declaration": 1834, + "declaration": 3170, "isOffset": false, "isSlot": false, - "src": "1115:12:17", + "src": "1115:12:19", "valueSize": 1 } }, { "transactions": { - "declaration": 1834, + "declaration": 3170, "isOffset": false, "isSlot": false, - "src": "1249:12:17", + "src": "1249:12:19", "valueSize": 1 } } ], - "id": 1837, + "id": 3173, "nodeType": "InlineAssembly", "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let operation := mload(add(transactions, i))\n let to := mload(add(transactions, add(i, 0x20)))\n let value := mload(add(transactions, add(i, 0x40)))\n let dataLength := mload(add(transactions, add(i, 0x80)))\n let data := add(transactions, add(i, 0xa0))\n let success := 0\n switch operation\n case 0 {\n success := call(gas(), to, value, data, dataLength, 0, 0)\n }\n case 1 {\n success := delegatecall(gas(), to, data, dataLength, 0, 0)\n }\n if eq(success, 0)\n {\n revert(0, 0)\n }\n i := add(i, add(0xa0, mul(div(add(dataLength, 0x1f), 0x20), 0x20)))\n }\n}", - "src": "827:848:17" + "src": "827:848:19" } ] }, "documentation": "@dev Sends multiple transactions and reverts all if one fails.\n @param transactions Encoded transactions. Each transaction is encoded as a \n tuple(operation,address,uint256,bytes), where operation \n can be 0 for a call or 1 for a delegatecall. The bytes \n of all encoded transactions are concatenated to form the input.", - "id": 1839, + "id": 3175, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -134,16 +134,16 @@ "name": "multiSend", "nodeType": "FunctionDefinition", "parameters": { - "id": 1835, + "id": 3171, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1834, + "id": 3170, "name": "transactions", "nodeType": "VariableDeclaration", - "scope": 1839, - "src": "714:18:17", + "scope": 3175, + "src": "714:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -151,10 +151,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1833, + "id": 3169, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "714:5:17", + "src": "714:5:19", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -164,47 +164,47 @@ "visibility": "internal" } ], - "src": "713:20:17" + "src": "713:20:19" }, "payable": false, "returnParameters": { - "id": 1836, + "id": 3172, "nodeType": "ParameterList", "parameters": [], - "src": "753:0:17" + "src": "753:0:19" }, - "scope": 1840, - "src": "695:980:17", + "scope": 3176, + "src": "695:980:19", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1841, - "src": "253:1424:17" + "scope": 3177, + "src": "253:1424:19" } ], - "src": "0:1678:17" + "src": "0:1678:19" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", "exportedSymbols": { "MultiSend": [ - 1840 + 3176 ] }, - "id": 1841, + "id": 3177, "nodeType": "SourceUnit", "nodes": [ { - "id": 1832, + "id": 3168, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:17" + "src": "0:23:19" }, { "baseContracts": [], @@ -212,85 +212,85 @@ "contractKind": "contract", "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", "fullyImplemented": true, - "id": 1840, + "id": 3176, "linearizedBaseContracts": [ - 1840 + 3176 ], "name": "MultiSend", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1838, + "id": 3174, "nodeType": "Block", - "src": "753:922:17", + "src": "753:922:19", "statements": [ { "externalReferences": [ { "transactions": { - "declaration": 1834, + "declaration": 3170, "isOffset": false, "isSlot": false, - "src": "870:12:17", + "src": "870:12:19", "valueSize": 1 } }, { "transactions": { - "declaration": 1834, + "declaration": 3170, "isOffset": false, "isSlot": false, - "src": "993:12:17", + "src": "993:12:19", "valueSize": 1 } }, { "transactions": { - "declaration": 1834, + "declaration": 3170, "isOffset": false, "isSlot": false, - "src": "1047:12:17", + "src": "1047:12:19", "valueSize": 1 } }, { "transactions": { - "declaration": 1834, + "declaration": 3170, "isOffset": false, "isSlot": false, - "src": "1188:12:17", + "src": "1188:12:19", "valueSize": 1 } }, { "transactions": { - "declaration": 1834, + "declaration": 3170, "isOffset": false, "isSlot": false, - "src": "1115:12:17", + "src": "1115:12:19", "valueSize": 1 } }, { "transactions": { - "declaration": 1834, + "declaration": 3170, "isOffset": false, "isSlot": false, - "src": "1249:12:17", + "src": "1249:12:19", "valueSize": 1 } } ], - "id": 1837, + "id": 3173, "nodeType": "InlineAssembly", "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let operation := mload(add(transactions, i))\n let to := mload(add(transactions, add(i, 0x20)))\n let value := mload(add(transactions, add(i, 0x40)))\n let dataLength := mload(add(transactions, add(i, 0x80)))\n let data := add(transactions, add(i, 0xa0))\n let success := 0\n switch operation\n case 0 {\n success := call(gas(), to, value, data, dataLength, 0, 0)\n }\n case 1 {\n success := delegatecall(gas(), to, data, dataLength, 0, 0)\n }\n if eq(success, 0)\n {\n revert(0, 0)\n }\n i := add(i, add(0xa0, mul(div(add(dataLength, 0x1f), 0x20), 0x20)))\n }\n}", - "src": "827:848:17" + "src": "827:848:19" } ] }, "documentation": "@dev Sends multiple transactions and reverts all if one fails.\n @param transactions Encoded transactions. Each transaction is encoded as a \n tuple(operation,address,uint256,bytes), where operation \n can be 0 for a call or 1 for a delegatecall. The bytes \n of all encoded transactions are concatenated to form the input.", - "id": 1839, + "id": 3175, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -298,16 +298,16 @@ "name": "multiSend", "nodeType": "FunctionDefinition", "parameters": { - "id": 1835, + "id": 3171, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1834, + "id": 3170, "name": "transactions", "nodeType": "VariableDeclaration", - "scope": 1839, - "src": "714:18:17", + "scope": 3175, + "src": "714:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -315,10 +315,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1833, + "id": 3169, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "714:5:17", + "src": "714:5:19", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -328,27 +328,27 @@ "visibility": "internal" } ], - "src": "713:20:17" + "src": "713:20:19" }, "payable": false, "returnParameters": { - "id": 1836, + "id": 3172, "nodeType": "ParameterList", "parameters": [], - "src": "753:0:17" + "src": "753:0:19" }, - "scope": 1840, - "src": "695:980:17", + "scope": 3176, + "src": "695:980:19", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1841, - "src": "253:1424:17" + "scope": 3177, + "src": "253:1424:19" } ], - "src": "0:1678:17" + "src": "0:1678:19" }, "compiler": { "name": "solc", @@ -358,28 +358,28 @@ "4": { "events": {}, "links": {}, - "address": "0xe94c33a523bf201e412f601eff906eec0b1d21f5", - "transactionHash": "0x1f04811d6fb97329f6e96a579587fe5a3abe9fe2f202d4b2e27adb78d3de1c48" + "address": "0x7115893bc1477bc22f127bc2d82fcb4dd99e5838", + "transactionHash": "0x1f321cf880f5ec5b189cb1ac1c1c1b71ef8d854fc059c345fea6e6129bb19645" }, - "1529327661534": { + "1530013596495": { "events": {}, "links": {}, - "address": "0xa2a1eb294e1191c1e374f9015a37db35c49e9f26", - "transactionHash": "0x5cd2551fce05a8b864a085616ee54449fdddd56dcdebf1019bebd0839c69ef5f" + "address": "0x18a8eaa498a58752858e5a912c8ff136b0bc6c69", + "transactionHash": "0x7da393438ee13b991e6d94278addb64e86b0c13101efb8a0f0f00d9f86ba51d0" }, - "1529333415702": { + "1530525742205": { "events": {}, "links": {}, - "address": "0xaba1a0da223a2a5e04158bd80b2af7671e27e2c6", - "transactionHash": "0x6e7c0c3947a3a851738677ae63915781ce79fdfb0453030fc63bbcd346f2cf89" + "address": "0x0a25374d1738169d8653e6ee01f464bf4cdc8dea", + "transactionHash": "0x2d7f72a94ced345c372040faa1f51a51f3e8da27a02dd04b9eefef487de3ba05" }, - "1529652204341": { + "1530611935189": { "events": {}, "links": {}, - "address": "0x2013688de17569d52fc4cd4fe5f18821d8b32b2a", + "address": "0x0b98f9d8fbd164d8d4884a997a3ef8e7275d5e0e", "transactionHash": "0x2d7f72a94ced345c372040faa1f51a51f3e8da27a02dd04b9eefef487de3ba05" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-22T07:24:16.274Z" + "updatedAt": "2018-07-03T09:59:18.515Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/OwnerManager.json b/safe-contracts/build/contracts/OwnerManager.json index 475e288a72..9e4bf0fb2d 100644 --- a/safe-contracts/build/contracts/OwnerManager.json +++ b/safe-contracts/build/contracts/OwnerManager.json @@ -24,7 +24,7 @@ }, { "name": "_threshold", - "type": "uint8" + "type": "uint256" } ], "name": "addOwnerWithThreshold", @@ -46,7 +46,7 @@ }, { "name": "_threshold", - "type": "uint8" + "type": "uint256" } ], "name": "removeOwner", @@ -82,7 +82,7 @@ "inputs": [ { "name": "_threshold", - "type": "uint8" + "type": "uint256" } ], "name": "changeThreshold", @@ -98,7 +98,7 @@ "outputs": [ { "name": "", - "type": "uint8" + "type": "uint256" } ], "payable": false, @@ -139,40 +139,40 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506116f7806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b506101736108bc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca6108c1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff169060200190929190505050610a5a565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610c75565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061107a565b005b34801561033057600080fd5b506103396116c1565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff16600180540310151515610544576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156105985750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561060c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610733576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff166002541415156108b7576108b681610a5a565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156108f85781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610a51578083838151811015156109a757fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610962565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001548160ff1611151515610bc6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff1610151515610c68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660028190555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015610d925750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515610e06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ef2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff166002541415156110765761107581610a5a565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111975750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156112f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff161415801561134b5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156113bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60006002549050905600a165627a7a72305820ab89c9f36885e8fc69145ea0fcbca9fe59b42935c3b4603105f10c7cdb27e0680029", - "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b506101736108bc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca6108c1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff169060200190929190505050610a5a565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610c75565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061107a565b005b34801561033057600080fd5b506103396116c1565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff16600180540310151515610544576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156105985750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561060c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610733576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff166002541415156108b7576108b681610a5a565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156108f85781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610a51578083838151811015156109a757fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610962565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001548160ff1611151515610bc6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff1610151515610c68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660028190555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015610d925750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515610e06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ef2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff166002541415156110765761107581610a5a565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111975750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156112f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff161415801561134b5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156113bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60006002549050905600a165627a7a72305820ab89c9f36885e8fc69145ea0fcbca9fe59b42935c3b4603105f10c7cdb27e0680029", - "sourceMap": "240:6041:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:6041:7;;;;;;;", - "deployedSourceMap": "240:6041:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5610:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5610:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3026:781;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3026:781:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:7;;;;;;;;;;;;;;;;;;;;;;;;;;;5821:458;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5821:458:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5821:458:7;;;;;;;;;;;;;;;;;5081:397;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5081:397:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:593;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2091:593:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4141:751;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4141:751:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5484:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5484:120:7;;;;;;;;;;;;;;;;;;;;;;;;;;;5610:129;5687:4;5731:1;5714:6;:13;5721:5;5714:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;5707:25;;5610:129;;;:::o;3026:781::-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3250:10:7;3232:28;;3245:1;3232:10;;:14;:28;;3224:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3425:1;3416:5;:10;;;;:38;;;;;337:3;3430:24;;:5;:24;;;;3416:38;3408:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3528:5;3507:26;;:6;:17;3514:9;3507:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3499:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3606:6;:13;3613:5;3606:13;;;;;;;;;;;;;;;;;;;;;;;;;3586:6;:17;3593:9;3586:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3645:1;3629:6;:13;3636:5;3629:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3656:10;;:12;;;;;;;;;;;;;;3749:10;3736:23;;:9;;:23;;3732:68;;;3773:27;3789:10;3773:15;:27::i;:::-;3732:68;3026:781;;;:::o;287:54::-;337:3;287:54;:::o;5821:458::-;5887:9;5912:22;6006:13;6033:20;5951:10;;5937:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5937:25:7;;;;5912:50;;6022:1;6006:17;;6056:6;:23;337:3;6056:23;;;;;;;;;;;;;;;;;;;;;;;;;6033:46;;6089:162;337:3;6095:31;;:12;:31;;;;6089:162;;;6157:12;6142:5;6148;6142:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;6198:6;:20;6205:12;6198:20;;;;;;;;;;;;;;;;;;;;;;;;;6183:35;;6232:8;;;;;;;6089:162;;;6267:5;6260:12;;5821:458;;;;:::o;5081:397::-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5263:10:7;;5249;:24;;;;5241:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5397:1;5383:10;:15;;;;5375:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5461:10;5449:22;;:9;:22;;;;5081:397;:::o;2091:593::-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2261:1:7;2252:5;:10;;;;:38;;;;;337:3;2266:24;;:5;:24;;;;2252:38;2244:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2400:1;2383:6;:13;2390:5;2383:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2375:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2459:6;:23;337:3;2459:23;;;;;;;;;;;;;;;;;;;;;;;;;2443:6;:13;2450:5;2443:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2518:5;2492:6;:23;337:3;2492:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2533:10;;:12;;;;;;;;;;;;;2626:10;2613:23;;:9;;:23;;2609:68;;;2650:27;2666:10;2650:15;:27::i;:::-;2609:68;2091:593;;:::o;4141:751::-;244:4:8;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4324:1:7;4312:8;:13;;;;:44;;;;;337:3;4329:27;;:8;:27;;;;4312:44;4304:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4469:1;4449:6;:16;4456:8;4449:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;4441:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4615:1;4603:8;:13;;;;:44;;;;;337:3;4620:27;;:8;:27;;;;4603:44;4595:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4721:8;4700:29;;:6;:17;4707:9;4700:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4692:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4801:6;:16;4808:8;4801:16;;;;;;;;;;;;;;;;;;;;;;;;;4782:6;:16;4789:8;4782:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4847:8;4827:6;:17;4834:9;4827:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4884:1;4865:6;:16;4872:8;4865:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4141:751;;;:::o;5484:120::-;5553:5;5587:9;;5574:23;;5484:120;:::o", - "source": "pragma solidity 0.4.24;\nimport \"./SelfAuthorized.sol\";\n\n/// @title OwnerManager - Manages a set of owners and a threshold to perform actions.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract OwnerManager is SelfAuthorized {\n\n address public constant SENTINEL_OWNERS = address(0x1);\n\n mapping(address => address) internal owners;\n uint256 ownerCount;\n uint256 internal threshold;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n function setupOwners(address[] _owners, uint8 _threshold)\n internal\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0, \"Owners have already been setup\");\n // Validate that threshold is smaller than number of added owners.\n require(_threshold <= _owners.length, \"Threshold cannot exceed owner count\");\n // There has to be at least one Safe owner.\n require(_threshold >= 1, \"Threshold needs to be greater than 0\");\n // Initializing Safe owners.\n address currentOwner = SENTINEL_OWNERS;\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n address owner = _owners[i];\n require(owner != 0 && owner != SENTINEL_OWNERS, \"Invalid owner address provided\");\n // No duplicate owners allowed.\n require(owners[owner] == 0, \"Duplicate owner address provided\");\n owners[currentOwner] = owner;\n currentOwner = owner;\n }\n owners[currentOwner] = SENTINEL_OWNERS;\n ownerCount = _owners.length;\n threshold = _threshold;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwnerWithThreshold(address owner, uint8 _threshold)\n public\n authorized\n {\n // Owner address cannot be null.\n require(owner != 0 && owner != SENTINEL_OWNERS, \"Invalid owner address provided\");\n // No duplicate owners allowed.\n require(owners[owner] == 0, \"Address is already an owner\");\n owners[owner] = owners[SENTINEL_OWNERS];\n owners[SENTINEL_OWNERS] = owner;\n ownerCount++;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be removed in the linked list\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(address prevOwner, address owner, uint8 _threshold)\n public\n authorized\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(ownerCount - 1 >= _threshold, \"New owner count needs to be larger than new threshold\");\n // Validate owner address and check that it corresponds to owner index.\n require(owner != 0 && owner != SENTINEL_OWNERS, \"Invalid owner address provided\");\n require(owners[prevOwner] == owner, \"Invalid prevOwner, owner pair provided\");\n owners[prevOwner] = owners[owner];\n owners[owner] = 0;\n ownerCount--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to swap/replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function swapOwner(address prevOwner, address oldOwner, address newOwner)\n public\n authorized\n {\n // Owner address cannot be null.\n require(newOwner != 0 && newOwner != SENTINEL_OWNERS, \"Invalid owner address provided\");\n // No duplicate owners allowed.\n require(owners[newOwner] == 0, \"Address is already an owner\");\n // Validate oldOwner address and check that it corresponds to owner index.\n require(oldOwner != 0 && oldOwner != SENTINEL_OWNERS, \"Invalid owner address provided\");\n require(owners[prevOwner] == oldOwner, \"Invalid prevOwner, owner pair provided\");\n owners[newOwner] = owners[oldOwner];\n owners[prevOwner] = newOwner;\n owners[oldOwner] = 0;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n authorized\n {\n // Validate that threshold is smaller than number of owners.\n require(_threshold <= ownerCount, \"Threshold cannot exceed owner count\");\n // There has to be at least one Safe owner.\n require(_threshold >= 1, \"Threshold needs to be greater than 0\");\n threshold = _threshold;\n }\n\n function getThreshold()\n public\n view\n returns (uint8)\n {\n return uint8(threshold);\n }\n\n function isOwner(address owner)\n public\n view\n returns (bool)\n {\n return owners[owner] != 0;\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n address[] memory array = new address[](ownerCount);\n\n // populate return array\n uint256 index = 0;\n address currentOwner = owners[SENTINEL_OWNERS];\n while(currentOwner != SENTINEL_OWNERS) {\n array[index] = currentOwner;\n currentOwner = owners[currentOwner];\n index ++;\n }\n return array;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b506116d6806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630d582f13146100935780632f54bf6e146100e0578063694e80c31461013b5780638cff635514610168578063a0e67e2b146101bf578063e318b52b1461022b578063e75235b8146102ae578063f8dc5dd9146102d9575b600080fd5b34801561009f57600080fd5b506100de600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610346565b005b3480156100ec57600080fd5b50610121600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610748565b604051808215151515815260200191505060405180910390f35b34801561014757600080fd5b50610166600480360381019080803590602001909291905050506107c9565b005b34801561017457600080fd5b5061017d6109db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101cb57600080fd5b506101d46109e0565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102175780820151818401526020810190506101fc565b505050509050019250505060405180910390f35b34801561023757600080fd5b506102ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b79565b005b3480156102ba57600080fd5b506102c36111c0565b6040518082815260200191505060405180910390f35b3480156102e557600080fd5b50610344600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111ca565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561040f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156104635750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156104d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156105c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060025414151561074457610743816107c9565b5b5050565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001548111151515610932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600181101515156109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060028190555050565b600181565b606080600080600154604051908082528060200260200182016040528015610a175781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610b7057808383815181101515610ac657fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610a81565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610c965750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610d0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610df6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015610e4a5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515610ebe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610fe5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600254905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600180540310151515611335576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156113895750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156113fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611524576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016000815480929190600190039190505550806002541415156116a5576116a4816107c9565b5b5050505600a165627a7a72305820756a32e78a71f45d31aef6b1af48c513f6aec9f08b5cb5f04cb08c230c3a41ec0029", + "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630d582f13146100935780632f54bf6e146100e0578063694e80c31461013b5780638cff635514610168578063a0e67e2b146101bf578063e318b52b1461022b578063e75235b8146102ae578063f8dc5dd9146102d9575b600080fd5b34801561009f57600080fd5b506100de600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610346565b005b3480156100ec57600080fd5b50610121600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610748565b604051808215151515815260200191505060405180910390f35b34801561014757600080fd5b50610166600480360381019080803590602001909291905050506107c9565b005b34801561017457600080fd5b5061017d6109db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101cb57600080fd5b506101d46109e0565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102175780820151818401526020810190506101fc565b505050509050019250505060405180910390f35b34801561023757600080fd5b506102ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b79565b005b3480156102ba57600080fd5b506102c36111c0565b6040518082815260200191505060405180910390f35b3480156102e557600080fd5b50610344600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111ca565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561040f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156104635750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156104d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156105c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060025414151561074457610743816107c9565b5b5050565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001548111151515610932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600181101515156109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060028190555050565b600181565b606080600080600154604051908082528060200260200182016040528015610a175781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610b7057808383815181101515610ac657fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610a81565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610c965750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610d0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610df6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015610e4a5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515610ebe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610fe5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600254905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600180540310151515611335576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156113895750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156113fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611524576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016000815480929190600190039190505550806002541415156116a5576116a4816107c9565b5b5050505600a165627a7a72305820756a32e78a71f45d31aef6b1af48c513f6aec9f08b5cb5f04cb08c230c3a41ec0029", + "sourceMap": "240:6044:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:6044:11;;;;;;;", + "deployedSourceMap": "240:6044:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:595;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2093:595:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5613:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5613:129:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5087:399;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5087:399:11;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:11;;;;;;;;;;;;;;;;;;;;;;;;;;;5824:458;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5824:458:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5824:458:11;;;;;;;;;;;;;;;;;4147:751;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4147:751:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5492:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5492:115:11;;;;;;;;;;;;;;;;;;;;;;;3030:783;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3030:783:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:595;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2265:1:11;2256:5;:10;;;;:38;;;;;337:3;2270:24;;:5;:24;;;;2256:38;2248:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2404:1;2387:6;:13;2394:5;2387:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2379:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2463:6;:23;337:3;2463:23;;;;;;;;;;;;;;;;;;;;;;;;;2447:6;:13;2454:5;2447:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2522:5;2496:6;:23;337:3;2496:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2537:10;;:12;;;;;;;;;;;;;2630:10;2617:9;;:23;;2613:68;;;2654:27;2670:10;2654:15;:27::i;:::-;2613:68;2093:595;;:::o;5613:129::-;5690:4;5734:1;5717:6;:13;5724:5;5717:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;5710:25;;5613:129;;;:::o;5087:399::-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5271:10:11;;5257;:24;;5249:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5405:1;5391:10;:15;;5383:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5469:10;5457:9;:22;;;;5087:399;:::o;287:54::-;337:3;287:54;:::o;5824:458::-;5890:9;5915:22;6009:13;6036:20;5954:10;;5940:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5940:25:11;;;;5915:50;;6025:1;6009:17;;6059:6;:23;337:3;6059:23;;;;;;;;;;;;;;;;;;;;;;;;;6036:46;;6092:162;337:3;6098:31;;:12;:31;;;;6092:162;;;6160:12;6145:5;6151;6145:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;6201:6;:20;6208:12;6201:20;;;;;;;;;;;;;;;;;;;;;;;;;6186:35;;6235:8;;;;;;;6092:162;;;6270:5;6263:12;;5824:458;;;;:::o;4147:751::-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4330:1:11;4318:8;:13;;;;:44;;;;;337:3;4335:27;;:8;:27;;;;4318:44;4310:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4475:1;4455:6;:16;4462:8;4455:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;4447:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4621:1;4609:8;:13;;;;:44;;;;;337:3;4626:27;;:8;:27;;;;4609:44;4601:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4727:8;4706:29;;:6;:17;4713:9;4706:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4698:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4807:6;:16;4814:8;4807:16;;;;;;;;;;;;;;;;;;;;;;;;;4788:6;:16;4795:8;4788:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4853:8;4833:6;:17;4840:9;4833:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4890:1;4871:6;:16;4878:8;4871:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4147:751;;;:::o;5492:115::-;5561:7;5591:9;;5584:16;;5492:115;:::o;3030:783::-;244:4:16;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3256:10:11;3251:1;3238:10;;:14;:28;;3230:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3431:1;3422:5;:10;;;;:38;;;;;337:3;3436:24;;:5;:24;;;;3422:38;3414:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:5;3513:26;;:6;:17;3520:9;3513:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3505:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:6;:13;3619:5;3612:13;;;;;;;;;;;;;;;;;;;;;;;;;3592:6;:17;3599:9;3592:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3651:1;3635:6;:13;3642:5;3635:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3662:10;;:12;;;;;;;;;;;;;;3755:10;3742:9;;:23;;3738:68;;;3779:27;3795:10;3779:15;:27::i;:::-;3738:68;3030:783;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./SelfAuthorized.sol\";\n\n/// @title OwnerManager - Manages a set of owners and a threshold to perform actions.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract OwnerManager is SelfAuthorized {\n\n address public constant SENTINEL_OWNERS = address(0x1);\n\n mapping(address => address) internal owners;\n uint256 ownerCount;\n uint256 internal threshold;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n function setupOwners(address[] _owners, uint256 _threshold)\n internal\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0, \"Owners have already been setup\");\n // Validate that threshold is smaller than number of added owners.\n require(_threshold <= _owners.length, \"Threshold cannot exceed owner count\");\n // There has to be at least one Safe owner.\n require(_threshold >= 1, \"Threshold needs to be greater than 0\");\n // Initializing Safe owners.\n address currentOwner = SENTINEL_OWNERS;\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n address owner = _owners[i];\n require(owner != 0 && owner != SENTINEL_OWNERS, \"Invalid owner address provided\");\n // No duplicate owners allowed.\n require(owners[owner] == 0, \"Duplicate owner address provided\");\n owners[currentOwner] = owner;\n currentOwner = owner;\n }\n owners[currentOwner] = SENTINEL_OWNERS;\n ownerCount = _owners.length;\n threshold = _threshold;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwnerWithThreshold(address owner, uint256 _threshold)\n public\n authorized\n {\n // Owner address cannot be null.\n require(owner != 0 && owner != SENTINEL_OWNERS, \"Invalid owner address provided\");\n // No duplicate owners allowed.\n require(owners[owner] == 0, \"Address is already an owner\");\n owners[owner] = owners[SENTINEL_OWNERS];\n owners[SENTINEL_OWNERS] = owner;\n ownerCount++;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be removed in the linked list\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(address prevOwner, address owner, uint256 _threshold)\n public\n authorized\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(ownerCount - 1 >= _threshold, \"New owner count needs to be larger than new threshold\");\n // Validate owner address and check that it corresponds to owner index.\n require(owner != 0 && owner != SENTINEL_OWNERS, \"Invalid owner address provided\");\n require(owners[prevOwner] == owner, \"Invalid prevOwner, owner pair provided\");\n owners[prevOwner] = owners[owner];\n owners[owner] = 0;\n ownerCount--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to swap/replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function swapOwner(address prevOwner, address oldOwner, address newOwner)\n public\n authorized\n {\n // Owner address cannot be null.\n require(newOwner != 0 && newOwner != SENTINEL_OWNERS, \"Invalid owner address provided\");\n // No duplicate owners allowed.\n require(owners[newOwner] == 0, \"Address is already an owner\");\n // Validate oldOwner address and check that it corresponds to owner index.\n require(oldOwner != 0 && oldOwner != SENTINEL_OWNERS, \"Invalid owner address provided\");\n require(owners[prevOwner] == oldOwner, \"Invalid prevOwner, owner pair provided\");\n owners[newOwner] = owners[oldOwner];\n owners[prevOwner] = newOwner;\n owners[oldOwner] = 0;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint256 _threshold)\n public\n authorized\n {\n // Validate that threshold is smaller than number of owners.\n require(_threshold <= ownerCount, \"Threshold cannot exceed owner count\");\n // There has to be at least one Safe owner.\n require(_threshold >= 1, \"Threshold needs to be greater than 0\");\n threshold = _threshold;\n }\n\n function getThreshold()\n public\n view\n returns (uint256)\n {\n return threshold;\n }\n\n function isOwner(address owner)\n public\n view\n returns (bool)\n {\n return owners[owner] != 0;\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n address[] memory array = new address[](ownerCount);\n\n // populate return array\n uint256 index = 0;\n address currentOwner = owners[SENTINEL_OWNERS];\n while(currentOwner != SENTINEL_OWNERS) {\n array[index] = currentOwner;\n currentOwner = owners[currentOwner];\n index ++;\n }\n return array;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "exportedSymbols": { "OwnerManager": [ - 1432 + 2888 ] }, - "id": 1433, + "id": 2889, "nodeType": "SourceUnit", "nodes": [ { - "id": 1024, + "id": 2482, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:7" + "src": "0:23:11" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 1025, + "id": 2483, "nodeType": "ImportDirective", - "scope": 1433, - "sourceUnit": 1450, - "src": "24:30:7", + "scope": 2889, + "sourceUnit": 3066, + "src": "24:30:11", "symbolAliases": [], "unitAlias": "" }, @@ -182,42 +182,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1026, + "id": 2484, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1449, - "src": "265:14:7", + "referencedDeclaration": 3065, + "src": "265:14:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1449", + "typeIdentifier": "t_contract$_SelfAuthorized_$3065", "typeString": "contract SelfAuthorized" } }, - "id": 1027, + "id": 2485, "nodeType": "InheritanceSpecifier", - "src": "265:14:7" + "src": "265:14:11" } ], "contractDependencies": [ - 1449 + 3065 ], "contractKind": "contract", "documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1432, + "id": 2888, "linearizedBaseContracts": [ - 1432, - 1449 + 2888, + 3065 ], "name": "OwnerManager", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1032, + "id": 2490, "name": "SENTINEL_OWNERS", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "287:54:7", + "scope": 2888, + "src": "287:54:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -225,10 +225,10 @@ "typeString": "address" }, "typeName": { - "id": 1028, + "id": 2486, "name": "address", "nodeType": "ElementaryTypeName", - "src": "287:7:7", + "src": "287:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -240,14 +240,14 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 1030, + "id": 2488, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "337:3:7", + "src": "337:3:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -263,20 +263,20 @@ "typeString": "int_const 1" } ], - "id": 1029, + "id": 2487, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "329:7:7", + "src": "329:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1031, + "id": 2489, "isConstant": false, "isLValue": false, "isPure": true, @@ -284,7 +284,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:12:7", + "src": "329:12:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -294,11 +294,11 @@ }, { "constant": false, - "id": 1036, + "id": 2494, "name": "owners", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "348:43:7", + "scope": 2888, + "src": "348:43:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -306,28 +306,28 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 1035, + "id": 2493, "keyType": { - "id": 1033, + "id": 2491, "name": "address", "nodeType": "ElementaryTypeName", - "src": "356:7:7", + "src": "356:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "348:27:7", + "src": "348:27:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" }, "valueType": { - "id": 1034, + "id": 2492, "name": "address", "nodeType": "ElementaryTypeName", - "src": "367:7:7", + "src": "367:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -339,11 +339,11 @@ }, { "constant": false, - "id": 1038, + "id": 2496, "name": "ownerCount", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "397:18:7", + "scope": 2888, + "src": "397:18:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -351,10 +351,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1037, + "id": 2495, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "397:7:7", + "src": "397:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -365,11 +365,11 @@ }, { "constant": false, - "id": 1040, + "id": 2498, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "421:26:7", + "scope": 2888, + "src": "421:26:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -377,10 +377,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1039, + "id": 2497, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "421:7:7", + "src": "421:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -391,9 +391,9 @@ }, { "body": { - "id": 1138, + "id": 2596, "nodeType": "Block", - "src": "722:1129:7", + "src": "724:1129:11", "statements": [ { "expression": { @@ -405,19 +405,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1051, + "id": 2509, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1049, + "id": 2507, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "864:9:7", + "referencedDeclaration": 2498, + "src": "866:9:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -428,14 +428,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1050, + "id": 2508, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "877:1:7", + "src": "879:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -443,7 +443,7 @@ }, "value": "0" }, - "src": "864:14:7", + "src": "866:14:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -452,14 +452,14 @@ { "argumentTypes": null, "hexValue": "4f776e657273206861766520616c7265616479206265656e207365747570", - "id": 1052, + "id": 2510, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "880:32:7", + "src": "882:32:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9a45ae898fbe2bd07a0b33b5a6c421f76198e9deb66843b8d827b0b9e4a16f86", @@ -479,21 +479,21 @@ "typeString": "literal_string \"Owners have already been setup\"" } ], - "id": 1048, + "id": 2506, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "856:7:7", + "referencedDeclaration": 4040, + "src": "858:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1053, + "id": 2511, "isConstant": false, "isLValue": false, "isPure": false, @@ -501,15 +501,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "856:57:7", + "src": "858:57:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1054, + "id": 2512, "nodeType": "ExpressionStatement", - "src": "856:57:7" + "src": "858:57:11" }, { "expression": { @@ -521,22 +521,22 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1059, + "id": 2517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1056, + "id": 2514, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1045, - "src": "1006:10:7", + "referencedDeclaration": 2503, + "src": "1008:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "BinaryOperation", @@ -545,18 +545,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1057, + "id": 2515, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1043, - "src": "1020:7:7", + "referencedDeclaration": 2501, + "src": "1022:7:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1058, + "id": 2516, "isConstant": false, "isLValue": false, "isPure": false, @@ -564,13 +564,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1020:14:7", + "src": "1022:14:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1006:28:7", + "src": "1008:28:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -579,14 +579,14 @@ { "argumentTypes": null, "hexValue": "5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f756e74", - "id": 1060, + "id": 2518, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1036:37:7", + "src": "1038:37:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", @@ -606,21 +606,21 @@ "typeString": "literal_string \"Threshold cannot exceed owner count\"" } ], - "id": 1055, + "id": 2513, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "998:7:7", + "referencedDeclaration": 4040, + "src": "1000:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1061, + "id": 2519, "isConstant": false, "isLValue": false, "isPure": false, @@ -628,15 +628,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "998:76:7", + "src": "1000:76:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1062, + "id": 2520, "nodeType": "ExpressionStatement", - "src": "998:76:7" + "src": "1000:76:11" }, { "expression": { @@ -645,25 +645,25 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 1066, + "id": 2524, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1064, + "id": 2522, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1045, - "src": "1144:10:7", + "referencedDeclaration": 2503, + "src": "1146:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "BinaryOperation", @@ -671,14 +671,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1065, + "id": 2523, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1158:1:7", + "src": "1160:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -686,7 +686,7 @@ }, "value": "1" }, - "src": "1144:15:7", + "src": "1146:15:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -695,14 +695,14 @@ { "argumentTypes": null, "hexValue": "5468726573686f6c64206e6565647320746f2062652067726561746572207468616e2030", - "id": 1067, + "id": 2525, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1161:38:7", + "src": "1163:38:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", @@ -722,21 +722,21 @@ "typeString": "literal_string \"Threshold needs to be greater than 0\"" } ], - "id": 1063, + "id": 2521, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1136:7:7", + "referencedDeclaration": 4040, + "src": "1138:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1068, + "id": 2526, "isConstant": false, "isLValue": false, "isPure": false, @@ -744,28 +744,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1136:64:7", + "src": "1138:64:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1069, + "id": 2527, "nodeType": "ExpressionStatement", - "src": "1136:64:7" + "src": "1138:64:11" }, { "assignments": [ - 1071 + 2529 ], "declarations": [ { "constant": false, - "id": 1071, + "id": 2529, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1139, - "src": "1247:20:7", + "scope": 2597, + "src": "1249:20:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -773,10 +773,10 @@ "typeString": "address" }, "typeName": { - "id": 1070, + "id": 2528, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1247:7:7", + "src": "1249:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -786,41 +786,41 @@ "visibility": "internal" } ], - "id": 1073, + "id": 2531, "initialValue": { "argumentTypes": null, - "id": 1072, + "id": 2530, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1270:15:7", + "referencedDeclaration": 2490, + "src": "1272:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1247:38:7" + "src": "1249:38:11" }, { "body": { - "id": 1121, + "id": 2579, "nodeType": "Block", - "src": "1340:388:7", + "src": "1342:388:11", "statements": [ { "assignments": [ - 1086 + 2544 ], "declarations": [ { "constant": false, - "id": 1086, + "id": 2544, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1139, - "src": "1399:13:7", + "scope": 2597, + "src": "1401:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -828,10 +828,10 @@ "typeString": "address" }, "typeName": { - "id": 1085, + "id": 2543, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1399:7:7", + "src": "1401:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -841,31 +841,31 @@ "visibility": "internal" } ], - "id": 1090, + "id": 2548, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1087, + "id": 2545, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1043, - "src": "1415:7:7", + "referencedDeclaration": 2501, + "src": "1417:7:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1089, + "id": 2547, "indexExpression": { "argumentTypes": null, - "id": 1088, + "id": 2546, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1075, - "src": "1423:1:7", + "referencedDeclaration": 2533, + "src": "1425:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -876,14 +876,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1415:10:7", + "src": "1417:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1399:26:7" + "src": "1401:26:11" }, { "expression": { @@ -895,7 +895,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1098, + "id": 2556, "isConstant": false, "isLValue": false, "isPure": false, @@ -906,19 +906,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1094, + "id": 2552, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1092, + "id": 2550, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1086, - "src": "1447:5:7", + "referencedDeclaration": 2544, + "src": "1449:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -929,14 +929,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1093, + "id": 2551, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1456:1:7", + "src": "1458:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -944,7 +944,7 @@ }, "value": "0" }, - "src": "1447:10:7", + "src": "1449:10:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -958,19 +958,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1097, + "id": 2555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1095, + "id": 2553, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1086, - "src": "1461:5:7", + "referencedDeclaration": 2544, + "src": "1463:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -980,24 +980,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1096, + "id": 2554, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1470:15:7", + "referencedDeclaration": 2490, + "src": "1472:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1461:24:7", + "src": "1463:24:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1447:38:7", + "src": "1449:38:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1006,14 +1006,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", - "id": 1099, + "id": 2557, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1487:32:7", + "src": "1489:32:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", @@ -1033,21 +1033,21 @@ "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1091, + "id": 2549, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1439:7:7", + "referencedDeclaration": 4040, + "src": "1441:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1100, + "id": 2558, "isConstant": false, "isLValue": false, "isPure": false, @@ -1055,15 +1055,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1439:81:7", + "src": "1441:81:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1101, + "id": 2559, "nodeType": "ExpressionStatement", - "src": "1439:81:7" + "src": "1441:81:11" }, { "expression": { @@ -1075,7 +1075,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1107, + "id": 2565, "isConstant": false, "isLValue": false, "isPure": false, @@ -1084,26 +1084,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1103, + "id": 2561, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "1586:6:7", + "referencedDeclaration": 2494, + "src": "1588:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1105, + "id": 2563, "indexExpression": { "argumentTypes": null, - "id": 1104, + "id": 2562, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1086, - "src": "1593:5:7", + "referencedDeclaration": 2544, + "src": "1595:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1114,7 +1114,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1586:13:7", + "src": "1588:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1125,14 +1125,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1106, + "id": 2564, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1603:1:7", + "src": "1605:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1140,7 +1140,7 @@ }, "value": "0" }, - "src": "1586:18:7", + "src": "1588:18:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1149,14 +1149,14 @@ { "argumentTypes": null, "hexValue": "4475706c6963617465206f776e657220616464726573732070726f7669646564", - "id": 1108, + "id": 2566, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1606:34:7", + "src": "1608:34:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_a803fa289679098e38a7f1f6fe43056918c5ab5af07441cb8db77b949c165ca1", @@ -1176,21 +1176,21 @@ "typeString": "literal_string \"Duplicate owner address provided\"" } ], - "id": 1102, + "id": 2560, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1578:7:7", + "referencedDeclaration": 4040, + "src": "1580:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1109, + "id": 2567, "isConstant": false, "isLValue": false, "isPure": false, @@ -1198,20 +1198,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1578:63:7", + "src": "1580:63:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1110, + "id": 2568, "nodeType": "ExpressionStatement", - "src": "1578:63:7" + "src": "1580:63:11" }, { "expression": { "argumentTypes": null, - "id": 1115, + "id": 2573, "isConstant": false, "isLValue": false, "isPure": false, @@ -1220,26 +1220,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1111, + "id": 2569, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "1655:6:7", + "referencedDeclaration": 2494, + "src": "1657:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1113, + "id": 2571, "indexExpression": { "argumentTypes": null, - "id": 1112, + "id": 2570, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1071, - "src": "1662:12:7", + "referencedDeclaration": 2529, + "src": "1664:12:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1250,7 +1250,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1655:20:7", + "src": "1657:20:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1260,43 +1260,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1114, + "id": 2572, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1086, - "src": "1678:5:7", + "referencedDeclaration": 2544, + "src": "1680:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1655:28:7", + "src": "1657:28:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1116, + "id": 2574, "nodeType": "ExpressionStatement", - "src": "1655:28:7" + "src": "1657:28:11" }, { "expression": { "argumentTypes": null, - "id": 1119, + "id": 2577, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1117, + "id": 2575, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1071, - "src": "1697:12:7", + "referencedDeclaration": 2529, + "src": "1699:12:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1306,26 +1306,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1118, + "id": 2576, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1086, - "src": "1712:5:7", + "referencedDeclaration": 2544, + "src": "1714:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1697:20:7", + "src": "1699:20:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1120, + "id": 2578, "nodeType": "ExpressionStatement", - "src": "1697:20:7" + "src": "1699:20:11" } ] }, @@ -1335,19 +1335,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1081, + "id": 2539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1078, + "id": 2536, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1075, - "src": "1315:1:7", + "referencedDeclaration": 2533, + "src": "1317:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1359,18 +1359,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1079, + "id": 2537, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1043, - "src": "1319:7:7", + "referencedDeclaration": 2501, + "src": "1321:7:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1080, + "id": 2538, "isConstant": false, "isLValue": false, "isPure": false, @@ -1378,31 +1378,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1319:14:7", + "src": "1321:14:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1315:18:7", + "src": "1317:18:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1122, + "id": 2580, "initializationExpression": { "assignments": [ - 1075 + 2533 ], "declarations": [ { "constant": false, - "id": 1075, + "id": 2533, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1139, - "src": "1300:9:7", + "scope": 2597, + "src": "1302:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1410,10 +1410,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1074, + "id": 2532, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1300:7:7", + "src": "1302:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1423,18 +1423,18 @@ "visibility": "internal" } ], - "id": 1077, + "id": 2535, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1076, + "id": 2534, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1312:1:7", + "src": "1314:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1443,12 +1443,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1300:13:7" + "src": "1302:13:11" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1083, + "id": 2541, "isConstant": false, "isLValue": false, "isPure": false, @@ -1456,15 +1456,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1335:3:7", + "src": "1337:3:11", "subExpression": { "argumentTypes": null, - "id": 1082, + "id": 2540, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1075, - "src": "1335:1:7", + "referencedDeclaration": 2533, + "src": "1337:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1475,17 +1475,17 @@ "typeString": "uint256" } }, - "id": 1084, + "id": 2542, "nodeType": "ExpressionStatement", - "src": "1335:3:7" + "src": "1337:3:11" }, "nodeType": "ForStatement", - "src": "1295:433:7" + "src": "1297:433:11" }, { "expression": { "argumentTypes": null, - "id": 1127, + "id": 2585, "isConstant": false, "isLValue": false, "isPure": false, @@ -1494,26 +1494,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1123, + "id": 2581, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "1737:6:7", + "referencedDeclaration": 2494, + "src": "1739:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1125, + "id": 2583, "indexExpression": { "argumentTypes": null, - "id": 1124, + "id": 2582, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1071, - "src": "1744:12:7", + "referencedDeclaration": 2529, + "src": "1746:12:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1524,7 +1524,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1737:20:7", + "src": "1739:20:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1534,43 +1534,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1126, + "id": 2584, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1760:15:7", + "referencedDeclaration": 2490, + "src": "1762:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1737:38:7", + "src": "1739:38:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1128, + "id": 2586, "nodeType": "ExpressionStatement", - "src": "1737:38:7" + "src": "1739:38:11" }, { "expression": { "argumentTypes": null, - "id": 1132, + "id": 2590, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1129, + "id": 2587, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1038, - "src": "1785:10:7", + "referencedDeclaration": 2496, + "src": "1787:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1582,18 +1582,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1130, + "id": 2588, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1043, - "src": "1798:7:7", + "referencedDeclaration": 2501, + "src": "1800:7:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1131, + "id": 2589, "isConstant": false, "isLValue": false, "isPure": false, @@ -1601,38 +1601,38 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1798:14:7", + "src": "1800:14:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1785:27:7", + "src": "1787:27:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1133, + "id": 2591, "nodeType": "ExpressionStatement", - "src": "1785:27:7" + "src": "1787:27:11" }, { "expression": { "argumentTypes": null, - "id": 1136, + "id": 2594, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1134, + "id": 2592, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "1822:9:7", + "referencedDeclaration": 2498, + "src": "1824:9:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1642,31 +1642,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1135, + "id": 2593, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1045, - "src": "1834:10:7", + "referencedDeclaration": 2503, + "src": "1836:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "1822:22:7", + "src": "1824:22:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1137, + "id": 2595, "nodeType": "ExpressionStatement", - "src": "1822:22:7" + "src": "1824:22:11" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.", - "id": 1139, + "id": 2597, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1674,16 +1674,16 @@ "name": "setupOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1046, + "id": 2504, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1043, + "id": 2501, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 1139, - "src": "664:17:7", + "scope": 2597, + "src": "664:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1692,19 +1692,19 @@ }, "typeName": { "baseType": { - "id": 1041, + "id": 2499, "name": "address", "nodeType": "ElementaryTypeName", - "src": "664:7:7", + "src": "664:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1042, + "id": 2500, "length": null, "nodeType": "ArrayTypeName", - "src": "664:9:7", + "src": "664:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -1715,51 +1715,51 @@ }, { "constant": false, - "id": 1045, + "id": 2503, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1139, - "src": "683:16:7", + "scope": 2597, + "src": "683:18:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 1044, - "name": "uint8", + "id": 2502, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "683:5:7", + "src": "683:7:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "663:37:7" + "src": "663:39:11" }, "payable": false, "returnParameters": { - "id": 1047, + "id": 2505, "nodeType": "ParameterList", "parameters": [], - "src": "722:0:7" + "src": "724:0:11" }, - "scope": 1432, - "src": "643:1208:7", + "scope": 2888, + "src": "643:1210:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1193, + "id": 2651, "nodeType": "Block", - "src": "2193:491:7", + "src": "2197:491:11", "statements": [ { "expression": { @@ -1771,7 +1771,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1155, + "id": 2613, "isConstant": false, "isLValue": false, "isPure": false, @@ -1782,19 +1782,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1151, + "id": 2609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1149, + "id": 2607, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1141, - "src": "2252:5:7", + "referencedDeclaration": 2599, + "src": "2256:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1805,14 +1805,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1150, + "id": 2608, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2261:1:7", + "src": "2265:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1820,7 +1820,7 @@ }, "value": "0" }, - "src": "2252:10:7", + "src": "2256:10:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1834,19 +1834,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1154, + "id": 2612, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1152, + "id": 2610, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1141, - "src": "2266:5:7", + "referencedDeclaration": 2599, + "src": "2270:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1856,24 +1856,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1153, + "id": 2611, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "2275:15:7", + "referencedDeclaration": 2490, + "src": "2279:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2266:24:7", + "src": "2270:24:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2252:38:7", + "src": "2256:38:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1882,14 +1882,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", - "id": 1156, + "id": 2614, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2292:32:7", + "src": "2296:32:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", @@ -1909,21 +1909,21 @@ "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1148, + "id": 2606, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2244:7:7", + "referencedDeclaration": 4040, + "src": "2248:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1157, + "id": 2615, "isConstant": false, "isLValue": false, "isPure": false, @@ -1931,15 +1931,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2244:81:7", + "src": "2248:81:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1158, + "id": 2616, "nodeType": "ExpressionStatement", - "src": "2244:81:7" + "src": "2248:81:11" }, { "expression": { @@ -1951,7 +1951,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1164, + "id": 2622, "isConstant": false, "isLValue": false, "isPure": false, @@ -1960,26 +1960,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1160, + "id": 2618, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "2383:6:7", + "referencedDeclaration": 2494, + "src": "2387:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1162, + "id": 2620, "indexExpression": { "argumentTypes": null, - "id": 1161, + "id": 2619, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1141, - "src": "2390:5:7", + "referencedDeclaration": 2599, + "src": "2394:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1990,7 +1990,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2383:13:7", + "src": "2387:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2001,14 +2001,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1163, + "id": 2621, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2400:1:7", + "src": "2404:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2016,7 +2016,7 @@ }, "value": "0" }, - "src": "2383:18:7", + "src": "2387:18:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2025,14 +2025,14 @@ { "argumentTypes": null, "hexValue": "4164647265737320697320616c726561647920616e206f776e6572", - "id": 1165, + "id": 2623, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2403:29:7", + "src": "2407:29:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", @@ -2052,21 +2052,21 @@ "typeString": "literal_string \"Address is already an owner\"" } ], - "id": 1159, + "id": 2617, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2375:7:7", + "referencedDeclaration": 4040, + "src": "2379:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1166, + "id": 2624, "isConstant": false, "isLValue": false, "isPure": false, @@ -2074,20 +2074,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2375:58:7", + "src": "2379:58:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1167, + "id": 2625, "nodeType": "ExpressionStatement", - "src": "2375:58:7" + "src": "2379:58:11" }, { "expression": { "argumentTypes": null, - "id": 1174, + "id": 2632, "isConstant": false, "isLValue": false, "isPure": false, @@ -2096,26 +2096,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1168, + "id": 2626, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "2443:6:7", + "referencedDeclaration": 2494, + "src": "2447:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1170, + "id": 2628, "indexExpression": { "argumentTypes": null, - "id": 1169, + "id": 2627, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1141, - "src": "2450:5:7", + "referencedDeclaration": 2599, + "src": "2454:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2126,7 +2126,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2443:13:7", + "src": "2447:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2138,26 +2138,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1171, + "id": 2629, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "2459:6:7", + "referencedDeclaration": 2494, + "src": "2463:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1173, + "id": 2631, "indexExpression": { "argumentTypes": null, - "id": 1172, + "id": 2630, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "2466:15:7", + "referencedDeclaration": 2490, + "src": "2470:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2168,26 +2168,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2459:23:7", + "src": "2463:23:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2443:39:7", + "src": "2447:39:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1175, + "id": 2633, "nodeType": "ExpressionStatement", - "src": "2443:39:7" + "src": "2447:39:11" }, { "expression": { "argumentTypes": null, - "id": 1180, + "id": 2638, "isConstant": false, "isLValue": false, "isPure": false, @@ -2196,26 +2196,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1176, + "id": 2634, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "2492:6:7", + "referencedDeclaration": 2494, + "src": "2496:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1178, + "id": 2636, "indexExpression": { "argumentTypes": null, - "id": 1177, + "id": 2635, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "2499:15:7", + "referencedDeclaration": 2490, + "src": "2503:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2226,7 +2226,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2492:23:7", + "src": "2496:23:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2236,31 +2236,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1179, + "id": 2637, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1141, - "src": "2518:5:7", + "referencedDeclaration": 2599, + "src": "2522:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2492:31:7", + "src": "2496:31:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1181, + "id": 2639, "nodeType": "ExpressionStatement", - "src": "2492:31:7" + "src": "2496:31:11" }, { "expression": { "argumentTypes": null, - "id": 1183, + "id": 2641, "isConstant": false, "isLValue": false, "isPure": false, @@ -2268,15 +2268,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2533:12:7", + "src": "2537:12:11", "subExpression": { "argumentTypes": null, - "id": 1182, + "id": 2640, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1038, - "src": "2533:10:7", + "referencedDeclaration": 2496, + "src": "2537:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2287,9 +2287,9 @@ "typeString": "uint256" } }, - "id": 1184, + "id": 2642, "nodeType": "ExpressionStatement", - "src": "2533:12:7" + "src": "2537:12:11" }, { "condition": { @@ -2298,19 +2298,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1187, + "id": 2645, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1185, + "id": 2643, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "2613:9:7", + "referencedDeclaration": 2498, + "src": "2617:9:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2320,64 +2320,64 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1186, + "id": 2644, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1143, - "src": "2626:10:7", + "referencedDeclaration": 2601, + "src": "2630:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "2613:23:7", + "src": "2617:23:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1192, + "id": 2650, "nodeType": "IfStatement", - "src": "2609:68:7", + "src": "2613:68:11", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1189, + "id": 2647, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1143, - "src": "2666:10:7", + "referencedDeclaration": 2601, + "src": "2670:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 1188, + "id": 2646, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "2650:15:7", + "referencedDeclaration": 2816, + "src": "2654:15:11", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", - "typeString": "function (uint8)" + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" } }, - "id": 1190, + "id": 2648, "isConstant": false, "isLValue": false, "isPure": false, @@ -2385,58 +2385,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2650:27:7", + "src": "2654:27:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1191, + "id": 2649, "nodeType": "ExpressionStatement", - "src": "2650:27:7" + "src": "2654:27:11" } } ] }, "documentation": "@dev Allows to add a new owner to the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param owner New owner address.\n @param _threshold New threshold.", - "id": 1194, + "id": 2652, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1146, + "id": 2604, "modifierName": { "argumentTypes": null, - "id": 1145, + "id": 2603, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1448, - "src": "2178:10:7", + "referencedDeclaration": 3064, + "src": "2182:10:11", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2178:10:7" + "src": "2182:10:11" } ], "name": "addOwnerWithThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1144, + "id": 2602, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1141, + "id": 2599, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1194, - "src": "2122:13:7", + "scope": 2652, + "src": "2124:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2444,10 +2444,10 @@ "typeString": "address" }, "typeName": { - "id": 1140, + "id": 2598, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2122:7:7", + "src": "2124:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2458,51 +2458,51 @@ }, { "constant": false, - "id": 1143, + "id": 2601, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1194, - "src": "2137:16:7", + "scope": 2652, + "src": "2139:18:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 1142, - "name": "uint8", + "id": 2600, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2137:5:7", + "src": "2139:7:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "2121:33:7" + "src": "2123:35:11" }, "payable": false, "returnParameters": { - "id": 1147, + "id": 2605, "nodeType": "ParameterList", "parameters": [], - "src": "2193:0:7" + "src": "2197:0:11" }, - "scope": 1432, - "src": "2091:593:7", + "scope": 2888, + "src": "2093:595:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1259, + "id": 2717, "nodeType": "Block", - "src": "3137:670:7", + "src": "3143:670:11", "statements": [ { "expression": { @@ -2514,7 +2514,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1210, + "id": 2668, "isConstant": false, "isLValue": false, "isPure": false, @@ -2525,19 +2525,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1208, + "id": 2666, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1206, + "id": 2664, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1038, - "src": "3232:10:7", + "referencedDeclaration": 2496, + "src": "3238:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2548,14 +2548,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1207, + "id": 2665, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3245:1:7", + "src": "3251:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -2563,7 +2563,7 @@ }, "value": "1" }, - "src": "3232:14:7", + "src": "3238:14:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2573,18 +2573,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 1209, + "id": 2667, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "3250:10:7", + "referencedDeclaration": 2658, + "src": "3256:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "3232:28:7", + "src": "3238:28:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2593,14 +2593,14 @@ { "argumentTypes": null, "hexValue": "4e6577206f776e657220636f756e74206e6565647320746f206265206c6172676572207468616e206e6577207468726573686f6c64", - "id": 1211, + "id": 2669, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3262:55:7", + "src": "3268:55:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_839b4c4db845de24ec74ef067d85431087d6987a4c904418ee4f6ec699c02482", @@ -2620,21 +2620,21 @@ "typeString": "literal_string \"New owner count needs to be larger than new threshold\"" } ], - "id": 1205, + "id": 2663, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "3224:7:7", + "referencedDeclaration": 4040, + "src": "3230:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1212, + "id": 2670, "isConstant": false, "isLValue": false, "isPure": false, @@ -2642,15 +2642,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3224:94:7", + "src": "3230:94:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1213, + "id": 2671, "nodeType": "ExpressionStatement", - "src": "3224:94:7" + "src": "3230:94:11" }, { "expression": { @@ -2662,7 +2662,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1221, + "id": 2679, "isConstant": false, "isLValue": false, "isPure": false, @@ -2673,19 +2673,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1217, + "id": 2675, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1215, + "id": 2673, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1198, - "src": "3416:5:7", + "referencedDeclaration": 2656, + "src": "3422:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2696,14 +2696,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1216, + "id": 2674, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3425:1:7", + "src": "3431:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2711,7 +2711,7 @@ }, "value": "0" }, - "src": "3416:10:7", + "src": "3422:10:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2725,19 +2725,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1220, + "id": 2678, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1218, + "id": 2676, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1198, - "src": "3430:5:7", + "referencedDeclaration": 2656, + "src": "3436:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2747,24 +2747,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1219, + "id": 2677, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "3439:15:7", + "referencedDeclaration": 2490, + "src": "3445:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3430:24:7", + "src": "3436:24:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3416:38:7", + "src": "3422:38:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2773,14 +2773,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", - "id": 1222, + "id": 2680, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3456:32:7", + "src": "3462:32:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", @@ -2800,21 +2800,21 @@ "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1214, + "id": 2672, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "3408:7:7", + "referencedDeclaration": 4040, + "src": "3414:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1223, + "id": 2681, "isConstant": false, "isLValue": false, "isPure": false, @@ -2822,15 +2822,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3408:81:7", + "src": "3414:81:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1224, + "id": 2682, "nodeType": "ExpressionStatement", - "src": "3408:81:7" + "src": "3414:81:11" }, { "expression": { @@ -2842,7 +2842,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1230, + "id": 2688, "isConstant": false, "isLValue": false, "isPure": false, @@ -2851,26 +2851,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1226, + "id": 2684, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "3507:6:7", + "referencedDeclaration": 2494, + "src": "3513:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1228, + "id": 2686, "indexExpression": { "argumentTypes": null, - "id": 1227, + "id": 2685, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1196, - "src": "3514:9:7", + "referencedDeclaration": 2654, + "src": "3520:9:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2881,7 +2881,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3507:17:7", + "src": "3513:17:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2891,18 +2891,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1229, + "id": 2687, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1198, - "src": "3528:5:7", + "referencedDeclaration": 2656, + "src": "3534:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3507:26:7", + "src": "3513:26:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2911,14 +2911,14 @@ { "argumentTypes": null, "hexValue": "496e76616c696420707265764f776e65722c206f776e657220706169722070726f7669646564", - "id": 1231, + "id": 2689, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3535:40:7", + "src": "3541:40:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", @@ -2938,21 +2938,21 @@ "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" } ], - "id": 1225, + "id": 2683, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "3499:7:7", + "referencedDeclaration": 4040, + "src": "3505:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1232, + "id": 2690, "isConstant": false, "isLValue": false, "isPure": false, @@ -2960,20 +2960,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3499:77:7", + "src": "3505:77:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1233, + "id": 2691, "nodeType": "ExpressionStatement", - "src": "3499:77:7" + "src": "3505:77:11" }, { "expression": { "argumentTypes": null, - "id": 1240, + "id": 2698, "isConstant": false, "isLValue": false, "isPure": false, @@ -2982,26 +2982,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1234, + "id": 2692, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "3586:6:7", + "referencedDeclaration": 2494, + "src": "3592:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1236, + "id": 2694, "indexExpression": { "argumentTypes": null, - "id": 1235, + "id": 2693, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1196, - "src": "3593:9:7", + "referencedDeclaration": 2654, + "src": "3599:9:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3012,7 +3012,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3586:17:7", + "src": "3592:17:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3024,26 +3024,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1237, + "id": 2695, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "3606:6:7", + "referencedDeclaration": 2494, + "src": "3612:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1239, + "id": 2697, "indexExpression": { "argumentTypes": null, - "id": 1238, + "id": 2696, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1198, - "src": "3613:5:7", + "referencedDeclaration": 2656, + "src": "3619:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3054,26 +3054,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3606:13:7", + "src": "3612:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3586:33:7", + "src": "3592:33:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1241, + "id": 2699, "nodeType": "ExpressionStatement", - "src": "3586:33:7" + "src": "3592:33:11" }, { "expression": { "argumentTypes": null, - "id": 1246, + "id": 2704, "isConstant": false, "isLValue": false, "isPure": false, @@ -3082,26 +3082,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1242, + "id": 2700, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "3629:6:7", + "referencedDeclaration": 2494, + "src": "3635:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1244, + "id": 2702, "indexExpression": { "argumentTypes": null, - "id": 1243, + "id": 2701, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1198, - "src": "3636:5:7", + "referencedDeclaration": 2656, + "src": "3642:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3112,7 +3112,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3629:13:7", + "src": "3635:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3123,14 +3123,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1245, + "id": 2703, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3645:1:7", + "src": "3651:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3138,20 +3138,20 @@ }, "value": "0" }, - "src": "3629:17:7", + "src": "3635:17:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1247, + "id": 2705, "nodeType": "ExpressionStatement", - "src": "3629:17:7" + "src": "3635:17:11" }, { "expression": { "argumentTypes": null, - "id": 1249, + "id": 2707, "isConstant": false, "isLValue": false, "isPure": false, @@ -3159,15 +3159,15 @@ "nodeType": "UnaryOperation", "operator": "--", "prefix": false, - "src": "3656:12:7", + "src": "3662:12:11", "subExpression": { "argumentTypes": null, - "id": 1248, + "id": 2706, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1038, - "src": "3656:10:7", + "referencedDeclaration": 2496, + "src": "3662:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3178,9 +3178,9 @@ "typeString": "uint256" } }, - "id": 1250, + "id": 2708, "nodeType": "ExpressionStatement", - "src": "3656:12:7" + "src": "3662:12:11" }, { "condition": { @@ -3189,19 +3189,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1253, + "id": 2711, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1251, + "id": 2709, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "3736:9:7", + "referencedDeclaration": 2498, + "src": "3742:9:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3211,64 +3211,64 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1252, + "id": 2710, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "3749:10:7", + "referencedDeclaration": 2658, + "src": "3755:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "3736:23:7", + "src": "3742:23:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1258, + "id": 2716, "nodeType": "IfStatement", - "src": "3732:68:7", + "src": "3738:68:11", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1255, + "id": 2713, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "3789:10:7", + "referencedDeclaration": 2658, + "src": "3795:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 1254, + "id": 2712, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "3773:15:7", + "referencedDeclaration": 2816, + "src": "3779:15:11", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", - "typeString": "function (uint8)" + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" } }, - "id": 1256, + "id": 2714, "isConstant": false, "isLValue": false, "isPure": false, @@ -3276,58 +3276,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3773:27:7", + "src": "3779:27:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1257, + "id": 2715, "nodeType": "ExpressionStatement", - "src": "3773:27:7" + "src": "3779:27:11" } } ] }, "documentation": "@dev Allows to remove an owner from the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be removed in the linked list\n @param owner Owner address to be removed.\n @param _threshold New threshold.", - "id": 1260, + "id": 2718, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1203, + "id": 2661, "modifierName": { "argumentTypes": null, - "id": 1202, + "id": 2660, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1448, - "src": "3122:10:7", + "referencedDeclaration": 3064, + "src": "3128:10:11", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3122:10:7" + "src": "3128:10:11" } ], "name": "removeOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1201, + "id": 2659, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1196, + "id": 2654, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1260, - "src": "3047:17:7", + "scope": 2718, + "src": "3051:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3335,10 +3335,10 @@ "typeString": "address" }, "typeName": { - "id": 1195, + "id": 2653, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3047:7:7", + "src": "3051:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3349,11 +3349,11 @@ }, { "constant": false, - "id": 1198, + "id": 2656, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1260, - "src": "3066:13:7", + "scope": 2718, + "src": "3070:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3361,10 +3361,10 @@ "typeString": "address" }, "typeName": { - "id": 1197, + "id": 2655, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3066:7:7", + "src": "3070:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3375,51 +3375,51 @@ }, { "constant": false, - "id": 1200, + "id": 2658, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1260, - "src": "3081:16:7", + "scope": 2718, + "src": "3085:18:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 1199, - "name": "uint8", + "id": 2657, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3081:5:7", + "src": "3085:7:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "3046:52:7" + "src": "3050:54:11" }, "payable": false, "returnParameters": { - "id": 1204, + "id": 2662, "nodeType": "ParameterList", "parameters": [], - "src": "3137:0:7" + "src": "3143:0:11" }, - "scope": 1432, - "src": "3026:781:7", + "scope": 2888, + "src": "3030:783:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1331, + "id": 2789, "nodeType": "Block", - "src": "4253:639:7", + "src": "4259:639:11", "statements": [ { "expression": { @@ -3431,7 +3431,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1278, + "id": 2736, "isConstant": false, "isLValue": false, "isPure": false, @@ -3442,19 +3442,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1274, + "id": 2732, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1272, + "id": 2730, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1266, - "src": "4312:8:7", + "referencedDeclaration": 2724, + "src": "4318:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3465,14 +3465,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1273, + "id": 2731, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4324:1:7", + "src": "4330:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3480,7 +3480,7 @@ }, "value": "0" }, - "src": "4312:13:7", + "src": "4318:13:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3494,19 +3494,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1277, + "id": 2735, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1275, + "id": 2733, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1266, - "src": "4329:8:7", + "referencedDeclaration": 2724, + "src": "4335:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3516,24 +3516,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1276, + "id": 2734, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "4341:15:7", + "referencedDeclaration": 2490, + "src": "4347:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4329:27:7", + "src": "4335:27:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "4312:44:7", + "src": "4318:44:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3542,14 +3542,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", - "id": 1279, + "id": 2737, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4358:32:7", + "src": "4364:32:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", @@ -3569,21 +3569,21 @@ "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1271, + "id": 2729, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "4304:7:7", + "referencedDeclaration": 4040, + "src": "4310:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1280, + "id": 2738, "isConstant": false, "isLValue": false, "isPure": false, @@ -3591,15 +3591,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4304:87:7", + "src": "4310:87:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1281, + "id": 2739, "nodeType": "ExpressionStatement", - "src": "4304:87:7" + "src": "4310:87:11" }, { "expression": { @@ -3611,7 +3611,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1287, + "id": 2745, "isConstant": false, "isLValue": false, "isPure": false, @@ -3620,26 +3620,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1283, + "id": 2741, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "4449:6:7", + "referencedDeclaration": 2494, + "src": "4455:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1285, + "id": 2743, "indexExpression": { "argumentTypes": null, - "id": 1284, + "id": 2742, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1266, - "src": "4456:8:7", + "referencedDeclaration": 2724, + "src": "4462:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3650,7 +3650,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4449:16:7", + "src": "4455:16:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3661,14 +3661,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1286, + "id": 2744, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4469:1:7", + "src": "4475:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3676,7 +3676,7 @@ }, "value": "0" }, - "src": "4449:21:7", + "src": "4455:21:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3685,14 +3685,14 @@ { "argumentTypes": null, "hexValue": "4164647265737320697320616c726561647920616e206f776e6572", - "id": 1288, + "id": 2746, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4472:29:7", + "src": "4478:29:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", @@ -3712,21 +3712,21 @@ "typeString": "literal_string \"Address is already an owner\"" } ], - "id": 1282, + "id": 2740, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "4441:7:7", + "referencedDeclaration": 4040, + "src": "4447:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1289, + "id": 2747, "isConstant": false, "isLValue": false, "isPure": false, @@ -3734,15 +3734,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4441:61:7", + "src": "4447:61:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1290, + "id": 2748, "nodeType": "ExpressionStatement", - "src": "4441:61:7" + "src": "4447:61:11" }, { "expression": { @@ -3754,7 +3754,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1298, + "id": 2756, "isConstant": false, "isLValue": false, "isPure": false, @@ -3765,19 +3765,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1294, + "id": 2752, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1292, + "id": 2750, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1264, - "src": "4603:8:7", + "referencedDeclaration": 2722, + "src": "4609:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3788,14 +3788,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1293, + "id": 2751, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4615:1:7", + "src": "4621:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3803,7 +3803,7 @@ }, "value": "0" }, - "src": "4603:13:7", + "src": "4609:13:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3817,19 +3817,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1297, + "id": 2755, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1295, + "id": 2753, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1264, - "src": "4620:8:7", + "referencedDeclaration": 2722, + "src": "4626:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3839,24 +3839,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1296, + "id": 2754, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "4632:15:7", + "referencedDeclaration": 2490, + "src": "4638:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4620:27:7", + "src": "4626:27:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "4603:44:7", + "src": "4609:44:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3865,14 +3865,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", - "id": 1299, + "id": 2757, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4649:32:7", + "src": "4655:32:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", @@ -3892,21 +3892,21 @@ "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1291, + "id": 2749, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "4595:7:7", + "referencedDeclaration": 4040, + "src": "4601:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1300, + "id": 2758, "isConstant": false, "isLValue": false, "isPure": false, @@ -3914,15 +3914,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4595:87:7", + "src": "4601:87:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1301, + "id": 2759, "nodeType": "ExpressionStatement", - "src": "4595:87:7" + "src": "4601:87:11" }, { "expression": { @@ -3934,7 +3934,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1307, + "id": 2765, "isConstant": false, "isLValue": false, "isPure": false, @@ -3943,26 +3943,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1303, + "id": 2761, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "4700:6:7", + "referencedDeclaration": 2494, + "src": "4706:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1305, + "id": 2763, "indexExpression": { "argumentTypes": null, - "id": 1304, + "id": 2762, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1262, - "src": "4707:9:7", + "referencedDeclaration": 2720, + "src": "4713:9:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3973,7 +3973,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4700:17:7", + "src": "4706:17:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3983,18 +3983,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1306, + "id": 2764, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1264, - "src": "4721:8:7", + "referencedDeclaration": 2722, + "src": "4727:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4700:29:7", + "src": "4706:29:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4003,14 +4003,14 @@ { "argumentTypes": null, "hexValue": "496e76616c696420707265764f776e65722c206f776e657220706169722070726f7669646564", - "id": 1308, + "id": 2766, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4731:40:7", + "src": "4737:40:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", @@ -4030,21 +4030,21 @@ "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" } ], - "id": 1302, + "id": 2760, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "4692:7:7", + "referencedDeclaration": 4040, + "src": "4698:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1309, + "id": 2767, "isConstant": false, "isLValue": false, "isPure": false, @@ -4052,20 +4052,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4692:80:7", + "src": "4698:80:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1310, + "id": 2768, "nodeType": "ExpressionStatement", - "src": "4692:80:7" + "src": "4698:80:11" }, { "expression": { "argumentTypes": null, - "id": 1317, + "id": 2775, "isConstant": false, "isLValue": false, "isPure": false, @@ -4074,26 +4074,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1311, + "id": 2769, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "4782:6:7", + "referencedDeclaration": 2494, + "src": "4788:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1313, + "id": 2771, "indexExpression": { "argumentTypes": null, - "id": 1312, + "id": 2770, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1266, - "src": "4789:8:7", + "referencedDeclaration": 2724, + "src": "4795:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4104,7 +4104,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4782:16:7", + "src": "4788:16:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4116,26 +4116,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1314, + "id": 2772, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "4801:6:7", + "referencedDeclaration": 2494, + "src": "4807:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1316, + "id": 2774, "indexExpression": { "argumentTypes": null, - "id": 1315, + "id": 2773, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1264, - "src": "4808:8:7", + "referencedDeclaration": 2722, + "src": "4814:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4146,26 +4146,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4801:16:7", + "src": "4807:16:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4782:35:7", + "src": "4788:35:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1318, + "id": 2776, "nodeType": "ExpressionStatement", - "src": "4782:35:7" + "src": "4788:35:11" }, { "expression": { "argumentTypes": null, - "id": 1323, + "id": 2781, "isConstant": false, "isLValue": false, "isPure": false, @@ -4174,26 +4174,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1319, + "id": 2777, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "4827:6:7", + "referencedDeclaration": 2494, + "src": "4833:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1321, + "id": 2779, "indexExpression": { "argumentTypes": null, - "id": 1320, + "id": 2778, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1262, - "src": "4834:9:7", + "referencedDeclaration": 2720, + "src": "4840:9:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4204,7 +4204,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4827:17:7", + "src": "4833:17:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4214,31 +4214,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1322, + "id": 2780, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1266, - "src": "4847:8:7", + "referencedDeclaration": 2724, + "src": "4853:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4827:28:7", + "src": "4833:28:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1324, + "id": 2782, "nodeType": "ExpressionStatement", - "src": "4827:28:7" + "src": "4833:28:11" }, { "expression": { "argumentTypes": null, - "id": 1329, + "id": 2787, "isConstant": false, "isLValue": false, "isPure": false, @@ -4247,26 +4247,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1325, + "id": 2783, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "4865:6:7", + "referencedDeclaration": 2494, + "src": "4871:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1327, + "id": 2785, "indexExpression": { "argumentTypes": null, - "id": 1326, + "id": 2784, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1264, - "src": "4872:8:7", + "referencedDeclaration": 2722, + "src": "4878:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4277,7 +4277,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4865:16:7", + "src": "4871:16:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4288,14 +4288,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1328, + "id": 2786, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4884:1:7", + "src": "4890:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4303,57 +4303,57 @@ }, "value": "0" }, - "src": "4865:20:7", + "src": "4871:20:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1330, + "id": 2788, "nodeType": "ExpressionStatement", - "src": "4865:20:7" + "src": "4871:20:11" } ] }, "documentation": "@dev Allows to swap/replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", - "id": 1332, + "id": 2790, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1269, + "id": 2727, "modifierName": { "argumentTypes": null, - "id": 1268, + "id": 2726, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1448, - "src": "4238:10:7", + "referencedDeclaration": 3064, + "src": "4244:10:11", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4238:10:7" + "src": "4244:10:11" } ], "name": "swapOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1267, + "id": 2725, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1262, + "id": 2720, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1332, - "src": "4160:17:7", + "scope": 2790, + "src": "4166:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4361,10 +4361,10 @@ "typeString": "address" }, "typeName": { - "id": 1261, + "id": 2719, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4160:7:7", + "src": "4166:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4375,11 +4375,11 @@ }, { "constant": false, - "id": 1264, + "id": 2722, "name": "oldOwner", "nodeType": "VariableDeclaration", - "scope": 1332, - "src": "4179:16:7", + "scope": 2790, + "src": "4185:16:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4387,10 +4387,10 @@ "typeString": "address" }, "typeName": { - "id": 1263, + "id": 2721, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4179:7:7", + "src": "4185:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4401,11 +4401,11 @@ }, { "constant": false, - "id": 1266, + "id": 2724, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 1332, - "src": "4197:16:7", + "scope": 2790, + "src": "4203:16:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4413,10 +4413,10 @@ "typeString": "address" }, "typeName": { - "id": 1265, + "id": 2723, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4197:7:7", + "src": "4203:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4426,26 +4426,26 @@ "visibility": "internal" } ], - "src": "4159:55:7" + "src": "4165:55:11" }, "payable": false, "returnParameters": { - "id": 1270, + "id": 2728, "nodeType": "ParameterList", "parameters": [], - "src": "4253:0:7" + "src": "4259:0:11" }, - "scope": 1432, - "src": "4141:751:7", + "scope": 2888, + "src": "4147:751:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1357, + "id": 2815, "nodeType": "Block", - "src": "5162:316:7", + "src": "5170:316:11", "statements": [ { "expression": { @@ -4457,40 +4457,40 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1342, + "id": 2800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1340, + "id": 2798, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1334, - "src": "5249:10:7", + "referencedDeclaration": 2792, + "src": "5257:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 1341, + "id": 2799, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1038, - "src": "5263:10:7", + "referencedDeclaration": 2496, + "src": "5271:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5249:24:7", + "src": "5257:24:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4499,14 +4499,14 @@ { "argumentTypes": null, "hexValue": "5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f756e74", - "id": 1343, + "id": 2801, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5275:37:7", + "src": "5283:37:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", @@ -4526,21 +4526,21 @@ "typeString": "literal_string \"Threshold cannot exceed owner count\"" } ], - "id": 1339, + "id": 2797, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "5241:7:7", + "referencedDeclaration": 4040, + "src": "5249:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1344, + "id": 2802, "isConstant": false, "isLValue": false, "isPure": false, @@ -4548,15 +4548,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5241:72:7", + "src": "5249:72:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1345, + "id": 2803, "nodeType": "ExpressionStatement", - "src": "5241:72:7" + "src": "5249:72:11" }, { "expression": { @@ -4565,25 +4565,25 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 1349, + "id": 2807, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1347, + "id": 2805, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1334, - "src": "5383:10:7", + "referencedDeclaration": 2792, + "src": "5391:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "BinaryOperation", @@ -4591,14 +4591,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1348, + "id": 2806, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5397:1:7", + "src": "5405:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4606,7 +4606,7 @@ }, "value": "1" }, - "src": "5383:15:7", + "src": "5391:15:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4615,14 +4615,14 @@ { "argumentTypes": null, "hexValue": "5468726573686f6c64206e6565647320746f2062652067726561746572207468616e2030", - "id": 1350, + "id": 2808, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5400:38:7", + "src": "5408:38:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", @@ -4642,21 +4642,21 @@ "typeString": "literal_string \"Threshold needs to be greater than 0\"" } ], - "id": 1346, + "id": 2804, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "5375:7:7", + "referencedDeclaration": 4040, + "src": "5383:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1351, + "id": 2809, "isConstant": false, "isLValue": false, "isPure": false, @@ -4664,32 +4664,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5375:64:7", + "src": "5383:64:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1352, + "id": 2810, "nodeType": "ExpressionStatement", - "src": "5375:64:7" + "src": "5383:64:11" }, { "expression": { "argumentTypes": null, - "id": 1355, + "id": 2813, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1353, + "id": 2811, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "5449:9:7", + "referencedDeclaration": 2498, + "src": "5457:9:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4699,170 +4699,132 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1354, + "id": 2812, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1334, - "src": "5461:10:7", + "referencedDeclaration": 2792, + "src": "5469:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "5449:22:7", + "src": "5457:22:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1356, + "id": 2814, "nodeType": "ExpressionStatement", - "src": "5449:22:7" + "src": "5457:22:11" } ] }, "documentation": "@dev Allows to update the number of required confirmations by Safe owners.\n This can only be done via a Safe transaction.\n @param _threshold New threshold.", - "id": 1358, + "id": 2816, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1337, + "id": 2795, "modifierName": { "argumentTypes": null, - "id": 1336, + "id": 2794, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1448, - "src": "5147:10:7", + "referencedDeclaration": 3064, + "src": "5155:10:11", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "5147:10:7" + "src": "5155:10:11" } ], "name": "changeThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1335, + "id": 2793, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1334, + "id": 2792, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1358, - "src": "5106:16:7", + "scope": 2816, + "src": "5112:18:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 1333, - "name": "uint8", + "id": 2791, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5106:5:7", + "src": "5112:7:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "5105:18:7" + "src": "5111:20:11" }, "payable": false, "returnParameters": { - "id": 1338, + "id": 2796, "nodeType": "ParameterList", "parameters": [], - "src": "5162:0:7" + "src": "5170:0:11" }, - "scope": 1432, - "src": "5081:397:7", + "scope": 2888, + "src": "5087:399:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1367, + "id": 2823, "nodeType": "Block", - "src": "5564:40:7", + "src": "5574:33:11", "statements": [ { "expression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1364, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "5587:9:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1363, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5581:5:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint8_$", - "typeString": "type(uint8)" - }, - "typeName": "uint8" - }, - "id": 1365, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5581:16:7", + "id": 2821, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2498, + "src": "5591:9:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "functionReturnParameters": 1362, - "id": 1366, + "functionReturnParameters": 2820, + "id": 2822, "nodeType": "Return", - "src": "5574:23:7" + "src": "5584:16:11" } ] }, "documentation": null, - "id": 1368, + "id": 2824, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4870,56 +4832,56 @@ "name": "getThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1359, + "id": 2817, "nodeType": "ParameterList", "parameters": [], - "src": "5505:2:7" + "src": "5513:2:11" }, "payable": false, "returnParameters": { - "id": 1362, + "id": 2820, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1361, + "id": 2819, "name": "", "nodeType": "VariableDeclaration", - "scope": 1368, - "src": "5553:5:7", + "scope": 2824, + "src": "5561:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 1360, - "name": "uint8", + "id": 2818, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5553:5:7", + "src": "5561:7:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "5552:7:7" + "src": "5560:9:11" }, - "scope": 1432, - "src": "5484:120:7", + "scope": 2888, + "src": "5492:115:11", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1381, + "id": 2837, "nodeType": "Block", - "src": "5697:42:7", + "src": "5700:42:11", "statements": [ { "expression": { @@ -4928,7 +4890,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1379, + "id": 2835, "isConstant": false, "isLValue": false, "isPure": false, @@ -4937,26 +4899,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1375, + "id": 2831, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "5714:6:7", + "referencedDeclaration": 2494, + "src": "5717:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1377, + "id": 2833, "indexExpression": { "argumentTypes": null, - "id": 1376, + "id": 2832, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1370, - "src": "5721:5:7", + "referencedDeclaration": 2826, + "src": "5724:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4967,7 +4929,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5714:13:7", + "src": "5717:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4978,14 +4940,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1378, + "id": 2834, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5731:1:7", + "src": "5734:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4993,21 +4955,21 @@ }, "value": "0" }, - "src": "5714:18:7", + "src": "5717:18:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 1374, - "id": 1380, + "functionReturnParameters": 2830, + "id": 2836, "nodeType": "Return", - "src": "5707:25:7" + "src": "5710:25:11" } ] }, "documentation": null, - "id": 1382, + "id": 2838, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -5015,16 +4977,16 @@ "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1371, + "id": 2827, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1370, + "id": 2826, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1382, - "src": "5627:13:7", + "scope": 2838, + "src": "5630:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5032,10 +4994,10 @@ "typeString": "address" }, "typeName": { - "id": 1369, + "id": 2825, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5627:7:7", + "src": "5630:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5045,20 +5007,20 @@ "visibility": "internal" } ], - "src": "5626:15:7" + "src": "5629:15:11" }, "payable": false, "returnParameters": { - "id": 1374, + "id": 2830, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1373, + "id": 2829, "name": "", "nodeType": "VariableDeclaration", - "scope": 1382, - "src": "5687:4:7", + "scope": 2838, + "src": "5690:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5066,10 +5028,10 @@ "typeString": "bool" }, "typeName": { - "id": 1372, + "id": 2828, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "5687:4:7", + "src": "5690:4:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5079,32 +5041,32 @@ "visibility": "internal" } ], - "src": "5686:6:7" + "src": "5689:6:11" }, - "scope": 1432, - "src": "5610:129:7", + "scope": 2888, + "src": "5613:129:11", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1430, + "id": 2886, "nodeType": "Block", - "src": "5902:377:7", + "src": "5905:377:11", "statements": [ { "assignments": [ - 1391 + 2847 ], "declarations": [ { "constant": false, - "id": 1391, + "id": 2847, "name": "array", "nodeType": "VariableDeclaration", - "scope": 1431, - "src": "5912:22:7", + "scope": 2887, + "src": "5915:22:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -5113,19 +5075,19 @@ }, "typeName": { "baseType": { - "id": 1389, + "id": 2845, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5912:7:7", + "src": "5915:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1390, + "id": 2846, "length": null, "nodeType": "ArrayTypeName", - "src": "5912:9:7", + "src": "5915:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -5135,18 +5097,18 @@ "visibility": "internal" } ], - "id": 1397, + "id": 2853, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1395, + "id": 2851, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1038, - "src": "5951:10:7", + "referencedDeclaration": 2496, + "src": "5954:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5160,39 +5122,39 @@ "typeString": "uint256" } ], - "id": 1394, + "id": 2850, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "5937:13:7", + "src": "5940:13:11", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 1392, + "id": 2848, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5941:7:7", + "src": "5944:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1393, + "id": 2849, "length": null, "nodeType": "ArrayTypeName", - "src": "5941:9:7", + "src": "5944:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 1396, + "id": 2852, "isConstant": false, "isLValue": false, "isPure": false, @@ -5200,27 +5162,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5937:25:7", + "src": "5940:25:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "5912:50:7" + "src": "5915:50:11" }, { "assignments": [ - 1399 + 2855 ], "declarations": [ { "constant": false, - "id": 1399, + "id": 2855, "name": "index", "nodeType": "VariableDeclaration", - "scope": 1431, - "src": "6006:13:7", + "scope": 2887, + "src": "6009:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5228,10 +5190,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1398, + "id": 2854, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6006:7:7", + "src": "6009:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5241,18 +5203,18 @@ "visibility": "internal" } ], - "id": 1401, + "id": 2857, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1400, + "id": 2856, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6022:1:7", + "src": "6025:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5261,20 +5223,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "6006:17:7" + "src": "6009:17:11" }, { "assignments": [ - 1403 + 2859 ], "declarations": [ { "constant": false, - "id": 1403, + "id": 2859, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1431, - "src": "6033:20:7", + "scope": 2887, + "src": "6036:20:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5282,10 +5244,10 @@ "typeString": "address" }, "typeName": { - "id": 1402, + "id": 2858, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6033:7:7", + "src": "6036:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5295,31 +5257,31 @@ "visibility": "internal" } ], - "id": 1407, + "id": 2863, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1404, + "id": 2860, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "6056:6:7", + "referencedDeclaration": 2494, + "src": "6059:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1406, + "id": 2862, "indexExpression": { "argumentTypes": null, - "id": 1405, + "id": 2861, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "6063:15:7", + "referencedDeclaration": 2490, + "src": "6066:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5330,25 +5292,25 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6056:23:7", + "src": "6059:23:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "6033:46:7" + "src": "6036:46:11" }, { "body": { - "id": 1426, + "id": 2882, "nodeType": "Block", - "src": "6128:123:7", + "src": "6131:123:11", "statements": [ { "expression": { "argumentTypes": null, - "id": 1415, + "id": 2871, "isConstant": false, "isLValue": false, "isPure": false, @@ -5357,26 +5319,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1411, + "id": 2867, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1391, - "src": "6142:5:7", + "referencedDeclaration": 2847, + "src": "6145:5:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1413, + "id": 2869, "indexExpression": { "argumentTypes": null, - "id": 1412, + "id": 2868, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1399, - "src": "6148:5:7", + "referencedDeclaration": 2855, + "src": "6151:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5387,7 +5349,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "6142:12:7", + "src": "6145:12:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5397,43 +5359,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1414, + "id": 2870, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1403, - "src": "6157:12:7", + "referencedDeclaration": 2859, + "src": "6160:12:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "6142:27:7", + "src": "6145:27:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1416, + "id": 2872, "nodeType": "ExpressionStatement", - "src": "6142:27:7" + "src": "6145:27:11" }, { "expression": { "argumentTypes": null, - "id": 1421, + "id": 2877, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1417, + "id": 2873, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1403, - "src": "6183:12:7", + "referencedDeclaration": 2859, + "src": "6186:12:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5445,26 +5407,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1418, + "id": 2874, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "6198:6:7", + "referencedDeclaration": 2494, + "src": "6201:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1420, + "id": 2876, "indexExpression": { "argumentTypes": null, - "id": 1419, + "id": 2875, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1403, - "src": "6205:12:7", + "referencedDeclaration": 2859, + "src": "6208:12:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5475,26 +5437,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6198:20:7", + "src": "6201:20:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "6183:35:7", + "src": "6186:35:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1422, + "id": 2878, "nodeType": "ExpressionStatement", - "src": "6183:35:7" + "src": "6186:35:11" }, { "expression": { "argumentTypes": null, - "id": 1424, + "id": 2880, "isConstant": false, "isLValue": false, "isPure": false, @@ -5502,15 +5464,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "6232:8:7", + "src": "6235:8:11", "subExpression": { "argumentTypes": null, - "id": 1423, + "id": 2879, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1399, - "src": "6232:5:7", + "referencedDeclaration": 2855, + "src": "6235:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5521,9 +5483,9 @@ "typeString": "uint256" } }, - "id": 1425, + "id": 2881, "nodeType": "ExpressionStatement", - "src": "6232:8:7" + "src": "6235:8:11" } ] }, @@ -5533,19 +5495,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1410, + "id": 2866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1408, + "id": 2864, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1403, - "src": "6095:12:7", + "referencedDeclaration": 2859, + "src": "6098:12:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5555,50 +5517,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1409, + "id": 2865, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "6111:15:7", + "referencedDeclaration": 2490, + "src": "6114:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "6095:31:7", + "src": "6098:31:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1427, + "id": 2883, "nodeType": "WhileStatement", - "src": "6089:162:7" + "src": "6092:162:11" }, { "expression": { "argumentTypes": null, - "id": 1428, + "id": 2884, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1391, - "src": "6267:5:7", + "referencedDeclaration": 2847, + "src": "6270:5:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 1387, - "id": 1429, + "functionReturnParameters": 2843, + "id": 2885, "nodeType": "Return", - "src": "6260:12:7" + "src": "6263:12:11" } ] }, "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", - "id": 1431, + "id": 2887, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -5606,23 +5568,23 @@ "name": "getOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1383, + "id": 2839, "nodeType": "ParameterList", "parameters": [], - "src": "5839:2:7" + "src": "5842:2:11" }, "payable": false, "returnParameters": { - "id": 1387, + "id": 2843, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1386, + "id": 2842, "name": "", "nodeType": "VariableDeclaration", - "scope": 1431, - "src": "5887:9:7", + "scope": 2887, + "src": "5890:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5631,19 +5593,19 @@ }, "typeName": { "baseType": { - "id": 1384, + "id": 2840, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5887:7:7", + "src": "5890:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1385, + "id": 2841, "length": null, "nodeType": "ArrayTypeName", - "src": "5887:9:7", + "src": "5890:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -5653,49 +5615,49 @@ "visibility": "internal" } ], - "src": "5886:11:7" + "src": "5889:11:11" }, - "scope": 1432, - "src": "5821:458:7", + "scope": 2888, + "src": "5824:458:11", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1433, - "src": "240:6041:7" + "scope": 2889, + "src": "240:6044:11" } ], - "src": "0:6282:7" + "src": "0:6285:11" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "exportedSymbols": { "OwnerManager": [ - 1432 + 2888 ] }, - "id": 1433, + "id": 2889, "nodeType": "SourceUnit", "nodes": [ { - "id": 1024, + "id": 2482, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:7" + "src": "0:23:11" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 1025, + "id": 2483, "nodeType": "ImportDirective", - "scope": 1433, - "sourceUnit": 1450, - "src": "24:30:7", + "scope": 2889, + "sourceUnit": 3066, + "src": "24:30:11", "symbolAliases": [], "unitAlias": "" }, @@ -5705,42 +5667,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1026, + "id": 2484, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1449, - "src": "265:14:7", + "referencedDeclaration": 3065, + "src": "265:14:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1449", + "typeIdentifier": "t_contract$_SelfAuthorized_$3065", "typeString": "contract SelfAuthorized" } }, - "id": 1027, + "id": 2485, "nodeType": "InheritanceSpecifier", - "src": "265:14:7" + "src": "265:14:11" } ], "contractDependencies": [ - 1449 + 3065 ], "contractKind": "contract", "documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1432, + "id": 2888, "linearizedBaseContracts": [ - 1432, - 1449 + 2888, + 3065 ], "name": "OwnerManager", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1032, + "id": 2490, "name": "SENTINEL_OWNERS", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "287:54:7", + "scope": 2888, + "src": "287:54:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5748,10 +5710,10 @@ "typeString": "address" }, "typeName": { - "id": 1028, + "id": 2486, "name": "address", "nodeType": "ElementaryTypeName", - "src": "287:7:7", + "src": "287:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5763,14 +5725,14 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 1030, + "id": 2488, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "337:3:7", + "src": "337:3:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5786,20 +5748,20 @@ "typeString": "int_const 1" } ], - "id": 1029, + "id": 2487, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "329:7:7", + "src": "329:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1031, + "id": 2489, "isConstant": false, "isLValue": false, "isPure": true, @@ -5807,7 +5769,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:12:7", + "src": "329:12:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5817,11 +5779,11 @@ }, { "constant": false, - "id": 1036, + "id": 2494, "name": "owners", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "348:43:7", + "scope": 2888, + "src": "348:43:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5829,28 +5791,28 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 1035, + "id": 2493, "keyType": { - "id": 1033, + "id": 2491, "name": "address", "nodeType": "ElementaryTypeName", - "src": "356:7:7", + "src": "356:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "348:27:7", + "src": "348:27:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" }, "valueType": { - "id": 1034, + "id": 2492, "name": "address", "nodeType": "ElementaryTypeName", - "src": "367:7:7", + "src": "367:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5862,11 +5824,11 @@ }, { "constant": false, - "id": 1038, + "id": 2496, "name": "ownerCount", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "397:18:7", + "scope": 2888, + "src": "397:18:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5874,10 +5836,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1037, + "id": 2495, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "397:7:7", + "src": "397:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5888,11 +5850,11 @@ }, { "constant": false, - "id": 1040, + "id": 2498, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "421:26:7", + "scope": 2888, + "src": "421:26:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5900,10 +5862,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1039, + "id": 2497, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "421:7:7", + "src": "421:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5914,9 +5876,9 @@ }, { "body": { - "id": 1138, + "id": 2596, "nodeType": "Block", - "src": "722:1129:7", + "src": "724:1129:11", "statements": [ { "expression": { @@ -5928,19 +5890,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1051, + "id": 2509, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1049, + "id": 2507, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "864:9:7", + "referencedDeclaration": 2498, + "src": "866:9:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5951,14 +5913,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1050, + "id": 2508, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "877:1:7", + "src": "879:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5966,7 +5928,7 @@ }, "value": "0" }, - "src": "864:14:7", + "src": "866:14:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5975,14 +5937,14 @@ { "argumentTypes": null, "hexValue": "4f776e657273206861766520616c7265616479206265656e207365747570", - "id": 1052, + "id": 2510, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "880:32:7", + "src": "882:32:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9a45ae898fbe2bd07a0b33b5a6c421f76198e9deb66843b8d827b0b9e4a16f86", @@ -6002,21 +5964,21 @@ "typeString": "literal_string \"Owners have already been setup\"" } ], - "id": 1048, + "id": 2506, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "856:7:7", + "referencedDeclaration": 4040, + "src": "858:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1053, + "id": 2511, "isConstant": false, "isLValue": false, "isPure": false, @@ -6024,15 +5986,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "856:57:7", + "src": "858:57:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1054, + "id": 2512, "nodeType": "ExpressionStatement", - "src": "856:57:7" + "src": "858:57:11" }, { "expression": { @@ -6044,22 +6006,22 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1059, + "id": 2517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1056, + "id": 2514, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1045, - "src": "1006:10:7", + "referencedDeclaration": 2503, + "src": "1008:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "BinaryOperation", @@ -6068,18 +6030,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1057, + "id": 2515, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1043, - "src": "1020:7:7", + "referencedDeclaration": 2501, + "src": "1022:7:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1058, + "id": 2516, "isConstant": false, "isLValue": false, "isPure": false, @@ -6087,13 +6049,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1020:14:7", + "src": "1022:14:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1006:28:7", + "src": "1008:28:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6102,14 +6064,14 @@ { "argumentTypes": null, "hexValue": "5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f756e74", - "id": 1060, + "id": 2518, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1036:37:7", + "src": "1038:37:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", @@ -6129,21 +6091,21 @@ "typeString": "literal_string \"Threshold cannot exceed owner count\"" } ], - "id": 1055, + "id": 2513, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "998:7:7", + "referencedDeclaration": 4040, + "src": "1000:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1061, + "id": 2519, "isConstant": false, "isLValue": false, "isPure": false, @@ -6151,15 +6113,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "998:76:7", + "src": "1000:76:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1062, + "id": 2520, "nodeType": "ExpressionStatement", - "src": "998:76:7" + "src": "1000:76:11" }, { "expression": { @@ -6168,25 +6130,25 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 1066, + "id": 2524, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1064, + "id": 2522, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1045, - "src": "1144:10:7", + "referencedDeclaration": 2503, + "src": "1146:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "BinaryOperation", @@ -6194,14 +6156,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1065, + "id": 2523, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1158:1:7", + "src": "1160:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6209,7 +6171,7 @@ }, "value": "1" }, - "src": "1144:15:7", + "src": "1146:15:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6218,14 +6180,14 @@ { "argumentTypes": null, "hexValue": "5468726573686f6c64206e6565647320746f2062652067726561746572207468616e2030", - "id": 1067, + "id": 2525, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1161:38:7", + "src": "1163:38:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", @@ -6245,21 +6207,21 @@ "typeString": "literal_string \"Threshold needs to be greater than 0\"" } ], - "id": 1063, + "id": 2521, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1136:7:7", + "referencedDeclaration": 4040, + "src": "1138:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1068, + "id": 2526, "isConstant": false, "isLValue": false, "isPure": false, @@ -6267,28 +6229,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1136:64:7", + "src": "1138:64:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1069, + "id": 2527, "nodeType": "ExpressionStatement", - "src": "1136:64:7" + "src": "1138:64:11" }, { "assignments": [ - 1071 + 2529 ], "declarations": [ { "constant": false, - "id": 1071, + "id": 2529, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1139, - "src": "1247:20:7", + "scope": 2597, + "src": "1249:20:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6296,10 +6258,10 @@ "typeString": "address" }, "typeName": { - "id": 1070, + "id": 2528, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1247:7:7", + "src": "1249:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6309,41 +6271,41 @@ "visibility": "internal" } ], - "id": 1073, + "id": 2531, "initialValue": { "argumentTypes": null, - "id": 1072, + "id": 2530, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1270:15:7", + "referencedDeclaration": 2490, + "src": "1272:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1247:38:7" + "src": "1249:38:11" }, { "body": { - "id": 1121, + "id": 2579, "nodeType": "Block", - "src": "1340:388:7", + "src": "1342:388:11", "statements": [ { "assignments": [ - 1086 + 2544 ], "declarations": [ { "constant": false, - "id": 1086, + "id": 2544, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1139, - "src": "1399:13:7", + "scope": 2597, + "src": "1401:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6351,10 +6313,10 @@ "typeString": "address" }, "typeName": { - "id": 1085, + "id": 2543, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1399:7:7", + "src": "1401:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6364,31 +6326,31 @@ "visibility": "internal" } ], - "id": 1090, + "id": 2548, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1087, + "id": 2545, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1043, - "src": "1415:7:7", + "referencedDeclaration": 2501, + "src": "1417:7:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1089, + "id": 2547, "indexExpression": { "argumentTypes": null, - "id": 1088, + "id": 2546, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1075, - "src": "1423:1:7", + "referencedDeclaration": 2533, + "src": "1425:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6399,14 +6361,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1415:10:7", + "src": "1417:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1399:26:7" + "src": "1401:26:11" }, { "expression": { @@ -6418,7 +6380,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1098, + "id": 2556, "isConstant": false, "isLValue": false, "isPure": false, @@ -6429,19 +6391,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1094, + "id": 2552, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1092, + "id": 2550, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1086, - "src": "1447:5:7", + "referencedDeclaration": 2544, + "src": "1449:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6452,14 +6414,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1093, + "id": 2551, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1456:1:7", + "src": "1458:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6467,7 +6429,7 @@ }, "value": "0" }, - "src": "1447:10:7", + "src": "1449:10:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6481,19 +6443,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1097, + "id": 2555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1095, + "id": 2553, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1086, - "src": "1461:5:7", + "referencedDeclaration": 2544, + "src": "1463:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6503,24 +6465,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1096, + "id": 2554, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1470:15:7", + "referencedDeclaration": 2490, + "src": "1472:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1461:24:7", + "src": "1463:24:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1447:38:7", + "src": "1449:38:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6529,14 +6491,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", - "id": 1099, + "id": 2557, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1487:32:7", + "src": "1489:32:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", @@ -6556,21 +6518,21 @@ "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1091, + "id": 2549, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1439:7:7", + "referencedDeclaration": 4040, + "src": "1441:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1100, + "id": 2558, "isConstant": false, "isLValue": false, "isPure": false, @@ -6578,15 +6540,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1439:81:7", + "src": "1441:81:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1101, + "id": 2559, "nodeType": "ExpressionStatement", - "src": "1439:81:7" + "src": "1441:81:11" }, { "expression": { @@ -6598,7 +6560,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1107, + "id": 2565, "isConstant": false, "isLValue": false, "isPure": false, @@ -6607,26 +6569,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1103, + "id": 2561, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "1586:6:7", + "referencedDeclaration": 2494, + "src": "1588:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1105, + "id": 2563, "indexExpression": { "argumentTypes": null, - "id": 1104, + "id": 2562, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1086, - "src": "1593:5:7", + "referencedDeclaration": 2544, + "src": "1595:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6637,7 +6599,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1586:13:7", + "src": "1588:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6648,14 +6610,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1106, + "id": 2564, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1603:1:7", + "src": "1605:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6663,7 +6625,7 @@ }, "value": "0" }, - "src": "1586:18:7", + "src": "1588:18:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6672,14 +6634,14 @@ { "argumentTypes": null, "hexValue": "4475706c6963617465206f776e657220616464726573732070726f7669646564", - "id": 1108, + "id": 2566, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1606:34:7", + "src": "1608:34:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_a803fa289679098e38a7f1f6fe43056918c5ab5af07441cb8db77b949c165ca1", @@ -6699,21 +6661,21 @@ "typeString": "literal_string \"Duplicate owner address provided\"" } ], - "id": 1102, + "id": 2560, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1578:7:7", + "referencedDeclaration": 4040, + "src": "1580:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1109, + "id": 2567, "isConstant": false, "isLValue": false, "isPure": false, @@ -6721,20 +6683,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1578:63:7", + "src": "1580:63:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1110, + "id": 2568, "nodeType": "ExpressionStatement", - "src": "1578:63:7" + "src": "1580:63:11" }, { "expression": { "argumentTypes": null, - "id": 1115, + "id": 2573, "isConstant": false, "isLValue": false, "isPure": false, @@ -6743,26 +6705,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1111, + "id": 2569, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "1655:6:7", + "referencedDeclaration": 2494, + "src": "1657:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1113, + "id": 2571, "indexExpression": { "argumentTypes": null, - "id": 1112, + "id": 2570, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1071, - "src": "1662:12:7", + "referencedDeclaration": 2529, + "src": "1664:12:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6773,7 +6735,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1655:20:7", + "src": "1657:20:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6783,43 +6745,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1114, + "id": 2572, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1086, - "src": "1678:5:7", + "referencedDeclaration": 2544, + "src": "1680:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1655:28:7", + "src": "1657:28:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1116, + "id": 2574, "nodeType": "ExpressionStatement", - "src": "1655:28:7" + "src": "1657:28:11" }, { "expression": { "argumentTypes": null, - "id": 1119, + "id": 2577, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1117, + "id": 2575, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1071, - "src": "1697:12:7", + "referencedDeclaration": 2529, + "src": "1699:12:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6829,26 +6791,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1118, + "id": 2576, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1086, - "src": "1712:5:7", + "referencedDeclaration": 2544, + "src": "1714:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1697:20:7", + "src": "1699:20:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1120, + "id": 2578, "nodeType": "ExpressionStatement", - "src": "1697:20:7" + "src": "1699:20:11" } ] }, @@ -6858,19 +6820,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1081, + "id": 2539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1078, + "id": 2536, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1075, - "src": "1315:1:7", + "referencedDeclaration": 2533, + "src": "1317:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6882,18 +6844,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1079, + "id": 2537, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1043, - "src": "1319:7:7", + "referencedDeclaration": 2501, + "src": "1321:7:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1080, + "id": 2538, "isConstant": false, "isLValue": false, "isPure": false, @@ -6901,31 +6863,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1319:14:7", + "src": "1321:14:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1315:18:7", + "src": "1317:18:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1122, + "id": 2580, "initializationExpression": { "assignments": [ - 1075 + 2533 ], "declarations": [ { "constant": false, - "id": 1075, + "id": 2533, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1139, - "src": "1300:9:7", + "scope": 2597, + "src": "1302:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6933,10 +6895,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1074, + "id": 2532, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1300:7:7", + "src": "1302:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6946,18 +6908,18 @@ "visibility": "internal" } ], - "id": 1077, + "id": 2535, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1076, + "id": 2534, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1312:1:7", + "src": "1314:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6966,12 +6928,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1300:13:7" + "src": "1302:13:11" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1083, + "id": 2541, "isConstant": false, "isLValue": false, "isPure": false, @@ -6979,15 +6941,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1335:3:7", + "src": "1337:3:11", "subExpression": { "argumentTypes": null, - "id": 1082, + "id": 2540, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1075, - "src": "1335:1:7", + "referencedDeclaration": 2533, + "src": "1337:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6998,17 +6960,17 @@ "typeString": "uint256" } }, - "id": 1084, + "id": 2542, "nodeType": "ExpressionStatement", - "src": "1335:3:7" + "src": "1337:3:11" }, "nodeType": "ForStatement", - "src": "1295:433:7" + "src": "1297:433:11" }, { "expression": { "argumentTypes": null, - "id": 1127, + "id": 2585, "isConstant": false, "isLValue": false, "isPure": false, @@ -7017,26 +6979,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1123, + "id": 2581, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "1737:6:7", + "referencedDeclaration": 2494, + "src": "1739:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1125, + "id": 2583, "indexExpression": { "argumentTypes": null, - "id": 1124, + "id": 2582, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1071, - "src": "1744:12:7", + "referencedDeclaration": 2529, + "src": "1746:12:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7047,7 +7009,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1737:20:7", + "src": "1739:20:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7057,43 +7019,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1126, + "id": 2584, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1760:15:7", + "referencedDeclaration": 2490, + "src": "1762:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1737:38:7", + "src": "1739:38:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1128, + "id": 2586, "nodeType": "ExpressionStatement", - "src": "1737:38:7" + "src": "1739:38:11" }, { "expression": { "argumentTypes": null, - "id": 1132, + "id": 2590, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1129, + "id": 2587, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1038, - "src": "1785:10:7", + "referencedDeclaration": 2496, + "src": "1787:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7105,18 +7067,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1130, + "id": 2588, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1043, - "src": "1798:7:7", + "referencedDeclaration": 2501, + "src": "1800:7:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1131, + "id": 2589, "isConstant": false, "isLValue": false, "isPure": false, @@ -7124,38 +7086,38 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1798:14:7", + "src": "1800:14:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1785:27:7", + "src": "1787:27:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1133, + "id": 2591, "nodeType": "ExpressionStatement", - "src": "1785:27:7" + "src": "1787:27:11" }, { "expression": { "argumentTypes": null, - "id": 1136, + "id": 2594, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1134, + "id": 2592, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "1822:9:7", + "referencedDeclaration": 2498, + "src": "1824:9:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7165,31 +7127,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1135, + "id": 2593, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1045, - "src": "1834:10:7", + "referencedDeclaration": 2503, + "src": "1836:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "1822:22:7", + "src": "1824:22:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1137, + "id": 2595, "nodeType": "ExpressionStatement", - "src": "1822:22:7" + "src": "1824:22:11" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.", - "id": 1139, + "id": 2597, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7197,16 +7159,16 @@ "name": "setupOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1046, + "id": 2504, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1043, + "id": 2501, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 1139, - "src": "664:17:7", + "scope": 2597, + "src": "664:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7215,19 +7177,19 @@ }, "typeName": { "baseType": { - "id": 1041, + "id": 2499, "name": "address", "nodeType": "ElementaryTypeName", - "src": "664:7:7", + "src": "664:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1042, + "id": 2500, "length": null, "nodeType": "ArrayTypeName", - "src": "664:9:7", + "src": "664:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -7238,51 +7200,51 @@ }, { "constant": false, - "id": 1045, + "id": 2503, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1139, - "src": "683:16:7", + "scope": 2597, + "src": "683:18:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 1044, - "name": "uint8", + "id": 2502, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "683:5:7", + "src": "683:7:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "663:37:7" + "src": "663:39:11" }, "payable": false, "returnParameters": { - "id": 1047, + "id": 2505, "nodeType": "ParameterList", "parameters": [], - "src": "722:0:7" + "src": "724:0:11" }, - "scope": 1432, - "src": "643:1208:7", + "scope": 2888, + "src": "643:1210:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1193, + "id": 2651, "nodeType": "Block", - "src": "2193:491:7", + "src": "2197:491:11", "statements": [ { "expression": { @@ -7294,7 +7256,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1155, + "id": 2613, "isConstant": false, "isLValue": false, "isPure": false, @@ -7305,19 +7267,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1151, + "id": 2609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1149, + "id": 2607, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1141, - "src": "2252:5:7", + "referencedDeclaration": 2599, + "src": "2256:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7328,14 +7290,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1150, + "id": 2608, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2261:1:7", + "src": "2265:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7343,7 +7305,7 @@ }, "value": "0" }, - "src": "2252:10:7", + "src": "2256:10:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7357,19 +7319,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1154, + "id": 2612, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1152, + "id": 2610, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1141, - "src": "2266:5:7", + "referencedDeclaration": 2599, + "src": "2270:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7379,24 +7341,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1153, + "id": 2611, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "2275:15:7", + "referencedDeclaration": 2490, + "src": "2279:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2266:24:7", + "src": "2270:24:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2252:38:7", + "src": "2256:38:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7405,14 +7367,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", - "id": 1156, + "id": 2614, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2292:32:7", + "src": "2296:32:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", @@ -7432,21 +7394,21 @@ "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1148, + "id": 2606, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2244:7:7", + "referencedDeclaration": 4040, + "src": "2248:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1157, + "id": 2615, "isConstant": false, "isLValue": false, "isPure": false, @@ -7454,15 +7416,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2244:81:7", + "src": "2248:81:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1158, + "id": 2616, "nodeType": "ExpressionStatement", - "src": "2244:81:7" + "src": "2248:81:11" }, { "expression": { @@ -7474,7 +7436,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1164, + "id": 2622, "isConstant": false, "isLValue": false, "isPure": false, @@ -7483,26 +7445,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1160, + "id": 2618, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "2383:6:7", + "referencedDeclaration": 2494, + "src": "2387:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1162, + "id": 2620, "indexExpression": { "argumentTypes": null, - "id": 1161, + "id": 2619, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1141, - "src": "2390:5:7", + "referencedDeclaration": 2599, + "src": "2394:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7513,7 +7475,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2383:13:7", + "src": "2387:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7524,14 +7486,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1163, + "id": 2621, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2400:1:7", + "src": "2404:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7539,7 +7501,7 @@ }, "value": "0" }, - "src": "2383:18:7", + "src": "2387:18:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7548,14 +7510,14 @@ { "argumentTypes": null, "hexValue": "4164647265737320697320616c726561647920616e206f776e6572", - "id": 1165, + "id": 2623, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2403:29:7", + "src": "2407:29:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", @@ -7575,21 +7537,21 @@ "typeString": "literal_string \"Address is already an owner\"" } ], - "id": 1159, + "id": 2617, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2375:7:7", + "referencedDeclaration": 4040, + "src": "2379:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1166, + "id": 2624, "isConstant": false, "isLValue": false, "isPure": false, @@ -7597,20 +7559,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2375:58:7", + "src": "2379:58:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1167, + "id": 2625, "nodeType": "ExpressionStatement", - "src": "2375:58:7" + "src": "2379:58:11" }, { "expression": { "argumentTypes": null, - "id": 1174, + "id": 2632, "isConstant": false, "isLValue": false, "isPure": false, @@ -7619,26 +7581,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1168, + "id": 2626, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "2443:6:7", + "referencedDeclaration": 2494, + "src": "2447:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1170, + "id": 2628, "indexExpression": { "argumentTypes": null, - "id": 1169, + "id": 2627, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1141, - "src": "2450:5:7", + "referencedDeclaration": 2599, + "src": "2454:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7649,7 +7611,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2443:13:7", + "src": "2447:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7661,26 +7623,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1171, + "id": 2629, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "2459:6:7", + "referencedDeclaration": 2494, + "src": "2463:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1173, + "id": 2631, "indexExpression": { "argumentTypes": null, - "id": 1172, + "id": 2630, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "2466:15:7", + "referencedDeclaration": 2490, + "src": "2470:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7691,26 +7653,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2459:23:7", + "src": "2463:23:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2443:39:7", + "src": "2447:39:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1175, + "id": 2633, "nodeType": "ExpressionStatement", - "src": "2443:39:7" + "src": "2447:39:11" }, { "expression": { "argumentTypes": null, - "id": 1180, + "id": 2638, "isConstant": false, "isLValue": false, "isPure": false, @@ -7719,26 +7681,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1176, + "id": 2634, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "2492:6:7", + "referencedDeclaration": 2494, + "src": "2496:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1178, + "id": 2636, "indexExpression": { "argumentTypes": null, - "id": 1177, + "id": 2635, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "2499:15:7", + "referencedDeclaration": 2490, + "src": "2503:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7749,7 +7711,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2492:23:7", + "src": "2496:23:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7759,31 +7721,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1179, + "id": 2637, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1141, - "src": "2518:5:7", + "referencedDeclaration": 2599, + "src": "2522:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2492:31:7", + "src": "2496:31:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1181, + "id": 2639, "nodeType": "ExpressionStatement", - "src": "2492:31:7" + "src": "2496:31:11" }, { "expression": { "argumentTypes": null, - "id": 1183, + "id": 2641, "isConstant": false, "isLValue": false, "isPure": false, @@ -7791,15 +7753,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2533:12:7", + "src": "2537:12:11", "subExpression": { "argumentTypes": null, - "id": 1182, + "id": 2640, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1038, - "src": "2533:10:7", + "referencedDeclaration": 2496, + "src": "2537:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7810,9 +7772,9 @@ "typeString": "uint256" } }, - "id": 1184, + "id": 2642, "nodeType": "ExpressionStatement", - "src": "2533:12:7" + "src": "2537:12:11" }, { "condition": { @@ -7821,19 +7783,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1187, + "id": 2645, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1185, + "id": 2643, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "2613:9:7", + "referencedDeclaration": 2498, + "src": "2617:9:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7843,64 +7805,64 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1186, + "id": 2644, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1143, - "src": "2626:10:7", + "referencedDeclaration": 2601, + "src": "2630:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "2613:23:7", + "src": "2617:23:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1192, + "id": 2650, "nodeType": "IfStatement", - "src": "2609:68:7", + "src": "2613:68:11", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1189, + "id": 2647, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1143, - "src": "2666:10:7", + "referencedDeclaration": 2601, + "src": "2670:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 1188, + "id": 2646, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "2650:15:7", + "referencedDeclaration": 2816, + "src": "2654:15:11", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", - "typeString": "function (uint8)" + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" } }, - "id": 1190, + "id": 2648, "isConstant": false, "isLValue": false, "isPure": false, @@ -7908,58 +7870,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2650:27:7", + "src": "2654:27:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1191, + "id": 2649, "nodeType": "ExpressionStatement", - "src": "2650:27:7" + "src": "2654:27:11" } } ] }, "documentation": "@dev Allows to add a new owner to the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param owner New owner address.\n @param _threshold New threshold.", - "id": 1194, + "id": 2652, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1146, + "id": 2604, "modifierName": { "argumentTypes": null, - "id": 1145, + "id": 2603, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1448, - "src": "2178:10:7", + "referencedDeclaration": 3064, + "src": "2182:10:11", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2178:10:7" + "src": "2182:10:11" } ], "name": "addOwnerWithThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1144, + "id": 2602, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1141, + "id": 2599, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1194, - "src": "2122:13:7", + "scope": 2652, + "src": "2124:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7967,10 +7929,10 @@ "typeString": "address" }, "typeName": { - "id": 1140, + "id": 2598, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2122:7:7", + "src": "2124:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7981,51 +7943,51 @@ }, { "constant": false, - "id": 1143, + "id": 2601, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1194, - "src": "2137:16:7", + "scope": 2652, + "src": "2139:18:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 1142, - "name": "uint8", + "id": 2600, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2137:5:7", + "src": "2139:7:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "2121:33:7" + "src": "2123:35:11" }, "payable": false, "returnParameters": { - "id": 1147, + "id": 2605, "nodeType": "ParameterList", "parameters": [], - "src": "2193:0:7" + "src": "2197:0:11" }, - "scope": 1432, - "src": "2091:593:7", + "scope": 2888, + "src": "2093:595:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1259, + "id": 2717, "nodeType": "Block", - "src": "3137:670:7", + "src": "3143:670:11", "statements": [ { "expression": { @@ -8037,7 +7999,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1210, + "id": 2668, "isConstant": false, "isLValue": false, "isPure": false, @@ -8048,19 +8010,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1208, + "id": 2666, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1206, + "id": 2664, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1038, - "src": "3232:10:7", + "referencedDeclaration": 2496, + "src": "3238:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8071,14 +8033,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1207, + "id": 2665, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3245:1:7", + "src": "3251:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -8086,7 +8048,7 @@ }, "value": "1" }, - "src": "3232:14:7", + "src": "3238:14:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8096,18 +8058,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 1209, + "id": 2667, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "3250:10:7", + "referencedDeclaration": 2658, + "src": "3256:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "3232:28:7", + "src": "3238:28:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8116,14 +8078,14 @@ { "argumentTypes": null, "hexValue": "4e6577206f776e657220636f756e74206e6565647320746f206265206c6172676572207468616e206e6577207468726573686f6c64", - "id": 1211, + "id": 2669, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3262:55:7", + "src": "3268:55:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_839b4c4db845de24ec74ef067d85431087d6987a4c904418ee4f6ec699c02482", @@ -8143,21 +8105,21 @@ "typeString": "literal_string \"New owner count needs to be larger than new threshold\"" } ], - "id": 1205, + "id": 2663, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "3224:7:7", + "referencedDeclaration": 4040, + "src": "3230:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1212, + "id": 2670, "isConstant": false, "isLValue": false, "isPure": false, @@ -8165,15 +8127,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3224:94:7", + "src": "3230:94:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1213, + "id": 2671, "nodeType": "ExpressionStatement", - "src": "3224:94:7" + "src": "3230:94:11" }, { "expression": { @@ -8185,7 +8147,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1221, + "id": 2679, "isConstant": false, "isLValue": false, "isPure": false, @@ -8196,19 +8158,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1217, + "id": 2675, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1215, + "id": 2673, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1198, - "src": "3416:5:7", + "referencedDeclaration": 2656, + "src": "3422:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8219,14 +8181,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1216, + "id": 2674, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3425:1:7", + "src": "3431:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8234,7 +8196,7 @@ }, "value": "0" }, - "src": "3416:10:7", + "src": "3422:10:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8248,19 +8210,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1220, + "id": 2678, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1218, + "id": 2676, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1198, - "src": "3430:5:7", + "referencedDeclaration": 2656, + "src": "3436:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8270,24 +8232,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1219, + "id": 2677, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "3439:15:7", + "referencedDeclaration": 2490, + "src": "3445:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3430:24:7", + "src": "3436:24:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3416:38:7", + "src": "3422:38:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8296,14 +8258,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", - "id": 1222, + "id": 2680, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3456:32:7", + "src": "3462:32:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", @@ -8323,21 +8285,21 @@ "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1214, + "id": 2672, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "3408:7:7", + "referencedDeclaration": 4040, + "src": "3414:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1223, + "id": 2681, "isConstant": false, "isLValue": false, "isPure": false, @@ -8345,15 +8307,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3408:81:7", + "src": "3414:81:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1224, + "id": 2682, "nodeType": "ExpressionStatement", - "src": "3408:81:7" + "src": "3414:81:11" }, { "expression": { @@ -8365,7 +8327,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1230, + "id": 2688, "isConstant": false, "isLValue": false, "isPure": false, @@ -8374,26 +8336,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1226, + "id": 2684, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "3507:6:7", + "referencedDeclaration": 2494, + "src": "3513:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1228, + "id": 2686, "indexExpression": { "argumentTypes": null, - "id": 1227, + "id": 2685, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1196, - "src": "3514:9:7", + "referencedDeclaration": 2654, + "src": "3520:9:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8404,7 +8366,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3507:17:7", + "src": "3513:17:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8414,18 +8376,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1229, + "id": 2687, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1198, - "src": "3528:5:7", + "referencedDeclaration": 2656, + "src": "3534:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3507:26:7", + "src": "3513:26:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8434,14 +8396,14 @@ { "argumentTypes": null, "hexValue": "496e76616c696420707265764f776e65722c206f776e657220706169722070726f7669646564", - "id": 1231, + "id": 2689, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3535:40:7", + "src": "3541:40:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", @@ -8461,21 +8423,21 @@ "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" } ], - "id": 1225, + "id": 2683, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "3499:7:7", + "referencedDeclaration": 4040, + "src": "3505:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1232, + "id": 2690, "isConstant": false, "isLValue": false, "isPure": false, @@ -8483,20 +8445,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3499:77:7", + "src": "3505:77:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1233, + "id": 2691, "nodeType": "ExpressionStatement", - "src": "3499:77:7" + "src": "3505:77:11" }, { "expression": { "argumentTypes": null, - "id": 1240, + "id": 2698, "isConstant": false, "isLValue": false, "isPure": false, @@ -8505,26 +8467,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1234, + "id": 2692, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "3586:6:7", + "referencedDeclaration": 2494, + "src": "3592:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1236, + "id": 2694, "indexExpression": { "argumentTypes": null, - "id": 1235, + "id": 2693, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1196, - "src": "3593:9:7", + "referencedDeclaration": 2654, + "src": "3599:9:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8535,7 +8497,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3586:17:7", + "src": "3592:17:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8547,26 +8509,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1237, + "id": 2695, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "3606:6:7", + "referencedDeclaration": 2494, + "src": "3612:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1239, + "id": 2697, "indexExpression": { "argumentTypes": null, - "id": 1238, + "id": 2696, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1198, - "src": "3613:5:7", + "referencedDeclaration": 2656, + "src": "3619:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8577,26 +8539,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3606:13:7", + "src": "3612:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3586:33:7", + "src": "3592:33:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1241, + "id": 2699, "nodeType": "ExpressionStatement", - "src": "3586:33:7" + "src": "3592:33:11" }, { "expression": { "argumentTypes": null, - "id": 1246, + "id": 2704, "isConstant": false, "isLValue": false, "isPure": false, @@ -8605,26 +8567,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1242, + "id": 2700, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "3629:6:7", + "referencedDeclaration": 2494, + "src": "3635:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1244, + "id": 2702, "indexExpression": { "argumentTypes": null, - "id": 1243, + "id": 2701, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1198, - "src": "3636:5:7", + "referencedDeclaration": 2656, + "src": "3642:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8635,7 +8597,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3629:13:7", + "src": "3635:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8646,14 +8608,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1245, + "id": 2703, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3645:1:7", + "src": "3651:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8661,20 +8623,20 @@ }, "value": "0" }, - "src": "3629:17:7", + "src": "3635:17:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1247, + "id": 2705, "nodeType": "ExpressionStatement", - "src": "3629:17:7" + "src": "3635:17:11" }, { "expression": { "argumentTypes": null, - "id": 1249, + "id": 2707, "isConstant": false, "isLValue": false, "isPure": false, @@ -8682,15 +8644,15 @@ "nodeType": "UnaryOperation", "operator": "--", "prefix": false, - "src": "3656:12:7", + "src": "3662:12:11", "subExpression": { "argumentTypes": null, - "id": 1248, + "id": 2706, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1038, - "src": "3656:10:7", + "referencedDeclaration": 2496, + "src": "3662:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8701,9 +8663,9 @@ "typeString": "uint256" } }, - "id": 1250, + "id": 2708, "nodeType": "ExpressionStatement", - "src": "3656:12:7" + "src": "3662:12:11" }, { "condition": { @@ -8712,19 +8674,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1253, + "id": 2711, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1251, + "id": 2709, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "3736:9:7", + "referencedDeclaration": 2498, + "src": "3742:9:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8734,64 +8696,64 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1252, + "id": 2710, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "3749:10:7", + "referencedDeclaration": 2658, + "src": "3755:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "3736:23:7", + "src": "3742:23:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1258, + "id": 2716, "nodeType": "IfStatement", - "src": "3732:68:7", + "src": "3738:68:11", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1255, + "id": 2713, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "3789:10:7", + "referencedDeclaration": 2658, + "src": "3795:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 1254, + "id": 2712, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "3773:15:7", + "referencedDeclaration": 2816, + "src": "3779:15:11", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", - "typeString": "function (uint8)" + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" } }, - "id": 1256, + "id": 2714, "isConstant": false, "isLValue": false, "isPure": false, @@ -8799,58 +8761,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3773:27:7", + "src": "3779:27:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1257, + "id": 2715, "nodeType": "ExpressionStatement", - "src": "3773:27:7" + "src": "3779:27:11" } } ] }, "documentation": "@dev Allows to remove an owner from the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be removed in the linked list\n @param owner Owner address to be removed.\n @param _threshold New threshold.", - "id": 1260, + "id": 2718, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1203, + "id": 2661, "modifierName": { "argumentTypes": null, - "id": 1202, + "id": 2660, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1448, - "src": "3122:10:7", + "referencedDeclaration": 3064, + "src": "3128:10:11", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3122:10:7" + "src": "3128:10:11" } ], "name": "removeOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1201, + "id": 2659, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1196, + "id": 2654, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1260, - "src": "3047:17:7", + "scope": 2718, + "src": "3051:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8858,10 +8820,10 @@ "typeString": "address" }, "typeName": { - "id": 1195, + "id": 2653, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3047:7:7", + "src": "3051:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8872,11 +8834,11 @@ }, { "constant": false, - "id": 1198, + "id": 2656, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1260, - "src": "3066:13:7", + "scope": 2718, + "src": "3070:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8884,10 +8846,10 @@ "typeString": "address" }, "typeName": { - "id": 1197, + "id": 2655, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3066:7:7", + "src": "3070:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8898,51 +8860,51 @@ }, { "constant": false, - "id": 1200, + "id": 2658, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1260, - "src": "3081:16:7", + "scope": 2718, + "src": "3085:18:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 1199, - "name": "uint8", + "id": 2657, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3081:5:7", + "src": "3085:7:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "3046:52:7" + "src": "3050:54:11" }, "payable": false, "returnParameters": { - "id": 1204, + "id": 2662, "nodeType": "ParameterList", "parameters": [], - "src": "3137:0:7" + "src": "3143:0:11" }, - "scope": 1432, - "src": "3026:781:7", + "scope": 2888, + "src": "3030:783:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1331, + "id": 2789, "nodeType": "Block", - "src": "4253:639:7", + "src": "4259:639:11", "statements": [ { "expression": { @@ -8954,7 +8916,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1278, + "id": 2736, "isConstant": false, "isLValue": false, "isPure": false, @@ -8965,19 +8927,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1274, + "id": 2732, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1272, + "id": 2730, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1266, - "src": "4312:8:7", + "referencedDeclaration": 2724, + "src": "4318:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8988,14 +8950,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1273, + "id": 2731, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4324:1:7", + "src": "4330:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9003,7 +8965,7 @@ }, "value": "0" }, - "src": "4312:13:7", + "src": "4318:13:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9017,19 +8979,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1277, + "id": 2735, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1275, + "id": 2733, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1266, - "src": "4329:8:7", + "referencedDeclaration": 2724, + "src": "4335:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9039,24 +9001,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1276, + "id": 2734, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "4341:15:7", + "referencedDeclaration": 2490, + "src": "4347:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4329:27:7", + "src": "4335:27:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "4312:44:7", + "src": "4318:44:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9065,14 +9027,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", - "id": 1279, + "id": 2737, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4358:32:7", + "src": "4364:32:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", @@ -9092,21 +9054,21 @@ "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1271, + "id": 2729, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "4304:7:7", + "referencedDeclaration": 4040, + "src": "4310:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1280, + "id": 2738, "isConstant": false, "isLValue": false, "isPure": false, @@ -9114,15 +9076,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4304:87:7", + "src": "4310:87:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1281, + "id": 2739, "nodeType": "ExpressionStatement", - "src": "4304:87:7" + "src": "4310:87:11" }, { "expression": { @@ -9134,7 +9096,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1287, + "id": 2745, "isConstant": false, "isLValue": false, "isPure": false, @@ -9143,26 +9105,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1283, + "id": 2741, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "4449:6:7", + "referencedDeclaration": 2494, + "src": "4455:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1285, + "id": 2743, "indexExpression": { "argumentTypes": null, - "id": 1284, + "id": 2742, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1266, - "src": "4456:8:7", + "referencedDeclaration": 2724, + "src": "4462:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9173,7 +9135,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4449:16:7", + "src": "4455:16:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9184,14 +9146,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1286, + "id": 2744, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4469:1:7", + "src": "4475:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9199,7 +9161,7 @@ }, "value": "0" }, - "src": "4449:21:7", + "src": "4455:21:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9208,14 +9170,14 @@ { "argumentTypes": null, "hexValue": "4164647265737320697320616c726561647920616e206f776e6572", - "id": 1288, + "id": 2746, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4472:29:7", + "src": "4478:29:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", @@ -9235,21 +9197,21 @@ "typeString": "literal_string \"Address is already an owner\"" } ], - "id": 1282, + "id": 2740, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "4441:7:7", + "referencedDeclaration": 4040, + "src": "4447:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1289, + "id": 2747, "isConstant": false, "isLValue": false, "isPure": false, @@ -9257,15 +9219,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4441:61:7", + "src": "4447:61:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1290, + "id": 2748, "nodeType": "ExpressionStatement", - "src": "4441:61:7" + "src": "4447:61:11" }, { "expression": { @@ -9277,7 +9239,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1298, + "id": 2756, "isConstant": false, "isLValue": false, "isPure": false, @@ -9288,19 +9250,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1294, + "id": 2752, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1292, + "id": 2750, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1264, - "src": "4603:8:7", + "referencedDeclaration": 2722, + "src": "4609:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9311,14 +9273,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1293, + "id": 2751, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4615:1:7", + "src": "4621:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9326,7 +9288,7 @@ }, "value": "0" }, - "src": "4603:13:7", + "src": "4609:13:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9340,19 +9302,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1297, + "id": 2755, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1295, + "id": 2753, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1264, - "src": "4620:8:7", + "referencedDeclaration": 2722, + "src": "4626:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9362,24 +9324,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1296, + "id": 2754, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "4632:15:7", + "referencedDeclaration": 2490, + "src": "4638:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4620:27:7", + "src": "4626:27:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "4603:44:7", + "src": "4609:44:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9388,14 +9350,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", - "id": 1299, + "id": 2757, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4649:32:7", + "src": "4655:32:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", @@ -9415,21 +9377,21 @@ "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1291, + "id": 2749, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "4595:7:7", + "referencedDeclaration": 4040, + "src": "4601:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1300, + "id": 2758, "isConstant": false, "isLValue": false, "isPure": false, @@ -9437,15 +9399,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4595:87:7", + "src": "4601:87:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1301, + "id": 2759, "nodeType": "ExpressionStatement", - "src": "4595:87:7" + "src": "4601:87:11" }, { "expression": { @@ -9457,7 +9419,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1307, + "id": 2765, "isConstant": false, "isLValue": false, "isPure": false, @@ -9466,26 +9428,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1303, + "id": 2761, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "4700:6:7", + "referencedDeclaration": 2494, + "src": "4706:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1305, + "id": 2763, "indexExpression": { "argumentTypes": null, - "id": 1304, + "id": 2762, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1262, - "src": "4707:9:7", + "referencedDeclaration": 2720, + "src": "4713:9:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9496,7 +9458,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4700:17:7", + "src": "4706:17:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9506,18 +9468,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1306, + "id": 2764, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1264, - "src": "4721:8:7", + "referencedDeclaration": 2722, + "src": "4727:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4700:29:7", + "src": "4706:29:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9526,14 +9488,14 @@ { "argumentTypes": null, "hexValue": "496e76616c696420707265764f776e65722c206f776e657220706169722070726f7669646564", - "id": 1308, + "id": 2766, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4731:40:7", + "src": "4737:40:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", @@ -9553,21 +9515,21 @@ "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" } ], - "id": 1302, + "id": 2760, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "4692:7:7", + "referencedDeclaration": 4040, + "src": "4698:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1309, + "id": 2767, "isConstant": false, "isLValue": false, "isPure": false, @@ -9575,20 +9537,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4692:80:7", + "src": "4698:80:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1310, + "id": 2768, "nodeType": "ExpressionStatement", - "src": "4692:80:7" + "src": "4698:80:11" }, { "expression": { "argumentTypes": null, - "id": 1317, + "id": 2775, "isConstant": false, "isLValue": false, "isPure": false, @@ -9597,26 +9559,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1311, + "id": 2769, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "4782:6:7", + "referencedDeclaration": 2494, + "src": "4788:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1313, + "id": 2771, "indexExpression": { "argumentTypes": null, - "id": 1312, + "id": 2770, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1266, - "src": "4789:8:7", + "referencedDeclaration": 2724, + "src": "4795:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9627,7 +9589,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4782:16:7", + "src": "4788:16:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9639,26 +9601,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1314, + "id": 2772, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "4801:6:7", + "referencedDeclaration": 2494, + "src": "4807:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1316, + "id": 2774, "indexExpression": { "argumentTypes": null, - "id": 1315, + "id": 2773, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1264, - "src": "4808:8:7", + "referencedDeclaration": 2722, + "src": "4814:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9669,26 +9631,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4801:16:7", + "src": "4807:16:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4782:35:7", + "src": "4788:35:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1318, + "id": 2776, "nodeType": "ExpressionStatement", - "src": "4782:35:7" + "src": "4788:35:11" }, { "expression": { "argumentTypes": null, - "id": 1323, + "id": 2781, "isConstant": false, "isLValue": false, "isPure": false, @@ -9697,26 +9659,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1319, + "id": 2777, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "4827:6:7", + "referencedDeclaration": 2494, + "src": "4833:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1321, + "id": 2779, "indexExpression": { "argumentTypes": null, - "id": 1320, + "id": 2778, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1262, - "src": "4834:9:7", + "referencedDeclaration": 2720, + "src": "4840:9:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9727,7 +9689,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4827:17:7", + "src": "4833:17:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9737,31 +9699,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1322, + "id": 2780, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1266, - "src": "4847:8:7", + "referencedDeclaration": 2724, + "src": "4853:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4827:28:7", + "src": "4833:28:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1324, + "id": 2782, "nodeType": "ExpressionStatement", - "src": "4827:28:7" + "src": "4833:28:11" }, { "expression": { "argumentTypes": null, - "id": 1329, + "id": 2787, "isConstant": false, "isLValue": false, "isPure": false, @@ -9770,26 +9732,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1325, + "id": 2783, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "4865:6:7", + "referencedDeclaration": 2494, + "src": "4871:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1327, + "id": 2785, "indexExpression": { "argumentTypes": null, - "id": 1326, + "id": 2784, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1264, - "src": "4872:8:7", + "referencedDeclaration": 2722, + "src": "4878:8:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9800,7 +9762,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4865:16:7", + "src": "4871:16:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9811,14 +9773,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1328, + "id": 2786, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4884:1:7", + "src": "4890:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9826,57 +9788,57 @@ }, "value": "0" }, - "src": "4865:20:7", + "src": "4871:20:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1330, + "id": 2788, "nodeType": "ExpressionStatement", - "src": "4865:20:7" + "src": "4871:20:11" } ] }, "documentation": "@dev Allows to swap/replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", - "id": 1332, + "id": 2790, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1269, + "id": 2727, "modifierName": { "argumentTypes": null, - "id": 1268, + "id": 2726, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1448, - "src": "4238:10:7", + "referencedDeclaration": 3064, + "src": "4244:10:11", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4238:10:7" + "src": "4244:10:11" } ], "name": "swapOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1267, + "id": 2725, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1262, + "id": 2720, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1332, - "src": "4160:17:7", + "scope": 2790, + "src": "4166:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9884,10 +9846,10 @@ "typeString": "address" }, "typeName": { - "id": 1261, + "id": 2719, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4160:7:7", + "src": "4166:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9898,11 +9860,11 @@ }, { "constant": false, - "id": 1264, + "id": 2722, "name": "oldOwner", "nodeType": "VariableDeclaration", - "scope": 1332, - "src": "4179:16:7", + "scope": 2790, + "src": "4185:16:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9910,10 +9872,10 @@ "typeString": "address" }, "typeName": { - "id": 1263, + "id": 2721, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4179:7:7", + "src": "4185:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9924,11 +9886,11 @@ }, { "constant": false, - "id": 1266, + "id": 2724, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 1332, - "src": "4197:16:7", + "scope": 2790, + "src": "4203:16:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9936,10 +9898,10 @@ "typeString": "address" }, "typeName": { - "id": 1265, + "id": 2723, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4197:7:7", + "src": "4203:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9949,26 +9911,26 @@ "visibility": "internal" } ], - "src": "4159:55:7" + "src": "4165:55:11" }, "payable": false, "returnParameters": { - "id": 1270, + "id": 2728, "nodeType": "ParameterList", "parameters": [], - "src": "4253:0:7" + "src": "4259:0:11" }, - "scope": 1432, - "src": "4141:751:7", + "scope": 2888, + "src": "4147:751:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1357, + "id": 2815, "nodeType": "Block", - "src": "5162:316:7", + "src": "5170:316:11", "statements": [ { "expression": { @@ -9980,40 +9942,40 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1342, + "id": 2800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1340, + "id": 2798, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1334, - "src": "5249:10:7", + "referencedDeclaration": 2792, + "src": "5257:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 1341, + "id": 2799, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1038, - "src": "5263:10:7", + "referencedDeclaration": 2496, + "src": "5271:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5249:24:7", + "src": "5257:24:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10022,14 +9984,14 @@ { "argumentTypes": null, "hexValue": "5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f756e74", - "id": 1343, + "id": 2801, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5275:37:7", + "src": "5283:37:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", @@ -10049,21 +10011,21 @@ "typeString": "literal_string \"Threshold cannot exceed owner count\"" } ], - "id": 1339, + "id": 2797, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "5241:7:7", + "referencedDeclaration": 4040, + "src": "5249:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1344, + "id": 2802, "isConstant": false, "isLValue": false, "isPure": false, @@ -10071,15 +10033,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5241:72:7", + "src": "5249:72:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1345, + "id": 2803, "nodeType": "ExpressionStatement", - "src": "5241:72:7" + "src": "5249:72:11" }, { "expression": { @@ -10088,25 +10050,25 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 1349, + "id": 2807, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1347, + "id": 2805, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1334, - "src": "5383:10:7", + "referencedDeclaration": 2792, + "src": "5391:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "BinaryOperation", @@ -10114,14 +10076,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1348, + "id": 2806, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5397:1:7", + "src": "5405:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -10129,7 +10091,7 @@ }, "value": "1" }, - "src": "5383:15:7", + "src": "5391:15:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10138,14 +10100,14 @@ { "argumentTypes": null, "hexValue": "5468726573686f6c64206e6565647320746f2062652067726561746572207468616e2030", - "id": 1350, + "id": 2808, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5400:38:7", + "src": "5408:38:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", @@ -10165,21 +10127,21 @@ "typeString": "literal_string \"Threshold needs to be greater than 0\"" } ], - "id": 1346, + "id": 2804, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "5375:7:7", + "referencedDeclaration": 4040, + "src": "5383:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1351, + "id": 2809, "isConstant": false, "isLValue": false, "isPure": false, @@ -10187,32 +10149,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5375:64:7", + "src": "5383:64:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1352, + "id": 2810, "nodeType": "ExpressionStatement", - "src": "5375:64:7" + "src": "5383:64:11" }, { "expression": { "argumentTypes": null, - "id": 1355, + "id": 2813, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1353, + "id": 2811, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "5449:9:7", + "referencedDeclaration": 2498, + "src": "5457:9:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10222,170 +10184,132 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1354, + "id": 2812, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1334, - "src": "5461:10:7", + "referencedDeclaration": 2792, + "src": "5469:10:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "5449:22:7", + "src": "5457:22:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1356, + "id": 2814, "nodeType": "ExpressionStatement", - "src": "5449:22:7" + "src": "5457:22:11" } ] }, "documentation": "@dev Allows to update the number of required confirmations by Safe owners.\n This can only be done via a Safe transaction.\n @param _threshold New threshold.", - "id": 1358, + "id": 2816, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1337, + "id": 2795, "modifierName": { "argumentTypes": null, - "id": 1336, + "id": 2794, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1448, - "src": "5147:10:7", + "referencedDeclaration": 3064, + "src": "5155:10:11", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "5147:10:7" + "src": "5155:10:11" } ], "name": "changeThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1335, + "id": 2793, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1334, + "id": 2792, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1358, - "src": "5106:16:7", + "scope": 2816, + "src": "5112:18:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 1333, - "name": "uint8", + "id": 2791, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5106:5:7", + "src": "5112:7:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "5105:18:7" + "src": "5111:20:11" }, "payable": false, "returnParameters": { - "id": 1338, + "id": 2796, "nodeType": "ParameterList", "parameters": [], - "src": "5162:0:7" + "src": "5170:0:11" }, - "scope": 1432, - "src": "5081:397:7", + "scope": 2888, + "src": "5087:399:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1367, + "id": 2823, "nodeType": "Block", - "src": "5564:40:7", + "src": "5574:33:11", "statements": [ { "expression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1364, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1040, - "src": "5587:9:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1363, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5581:5:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint8_$", - "typeString": "type(uint8)" - }, - "typeName": "uint8" - }, - "id": 1365, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5581:16:7", + "id": 2821, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2498, + "src": "5591:9:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "functionReturnParameters": 1362, - "id": 1366, + "functionReturnParameters": 2820, + "id": 2822, "nodeType": "Return", - "src": "5574:23:7" + "src": "5584:16:11" } ] }, "documentation": null, - "id": 1368, + "id": 2824, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -10393,56 +10317,56 @@ "name": "getThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1359, + "id": 2817, "nodeType": "ParameterList", "parameters": [], - "src": "5505:2:7" + "src": "5513:2:11" }, "payable": false, "returnParameters": { - "id": 1362, + "id": 2820, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1361, + "id": 2819, "name": "", "nodeType": "VariableDeclaration", - "scope": 1368, - "src": "5553:5:7", + "scope": 2824, + "src": "5561:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 1360, - "name": "uint8", + "id": 2818, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5553:5:7", + "src": "5561:7:11", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "5552:7:7" + "src": "5560:9:11" }, - "scope": 1432, - "src": "5484:120:7", + "scope": 2888, + "src": "5492:115:11", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1381, + "id": 2837, "nodeType": "Block", - "src": "5697:42:7", + "src": "5700:42:11", "statements": [ { "expression": { @@ -10451,7 +10375,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1379, + "id": 2835, "isConstant": false, "isLValue": false, "isPure": false, @@ -10460,26 +10384,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1375, + "id": 2831, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "5714:6:7", + "referencedDeclaration": 2494, + "src": "5717:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1377, + "id": 2833, "indexExpression": { "argumentTypes": null, - "id": 1376, + "id": 2832, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1370, - "src": "5721:5:7", + "referencedDeclaration": 2826, + "src": "5724:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10490,7 +10414,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5714:13:7", + "src": "5717:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10501,14 +10425,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1378, + "id": 2834, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5731:1:7", + "src": "5734:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -10516,21 +10440,21 @@ }, "value": "0" }, - "src": "5714:18:7", + "src": "5717:18:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 1374, - "id": 1380, + "functionReturnParameters": 2830, + "id": 2836, "nodeType": "Return", - "src": "5707:25:7" + "src": "5710:25:11" } ] }, "documentation": null, - "id": 1382, + "id": 2838, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -10538,16 +10462,16 @@ "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1371, + "id": 2827, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1370, + "id": 2826, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1382, - "src": "5627:13:7", + "scope": 2838, + "src": "5630:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10555,10 +10479,10 @@ "typeString": "address" }, "typeName": { - "id": 1369, + "id": 2825, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5627:7:7", + "src": "5630:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10568,20 +10492,20 @@ "visibility": "internal" } ], - "src": "5626:15:7" + "src": "5629:15:11" }, "payable": false, "returnParameters": { - "id": 1374, + "id": 2830, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1373, + "id": 2829, "name": "", "nodeType": "VariableDeclaration", - "scope": 1382, - "src": "5687:4:7", + "scope": 2838, + "src": "5690:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10589,10 +10513,10 @@ "typeString": "bool" }, "typeName": { - "id": 1372, + "id": 2828, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "5687:4:7", + "src": "5690:4:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10602,32 +10526,32 @@ "visibility": "internal" } ], - "src": "5686:6:7" + "src": "5689:6:11" }, - "scope": 1432, - "src": "5610:129:7", + "scope": 2888, + "src": "5613:129:11", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1430, + "id": 2886, "nodeType": "Block", - "src": "5902:377:7", + "src": "5905:377:11", "statements": [ { "assignments": [ - 1391 + 2847 ], "declarations": [ { "constant": false, - "id": 1391, + "id": 2847, "name": "array", "nodeType": "VariableDeclaration", - "scope": 1431, - "src": "5912:22:7", + "scope": 2887, + "src": "5915:22:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -10636,19 +10560,19 @@ }, "typeName": { "baseType": { - "id": 1389, + "id": 2845, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5912:7:7", + "src": "5915:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1390, + "id": 2846, "length": null, "nodeType": "ArrayTypeName", - "src": "5912:9:7", + "src": "5915:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -10658,18 +10582,18 @@ "visibility": "internal" } ], - "id": 1397, + "id": 2853, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1395, + "id": 2851, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1038, - "src": "5951:10:7", + "referencedDeclaration": 2496, + "src": "5954:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10683,39 +10607,39 @@ "typeString": "uint256" } ], - "id": 1394, + "id": 2850, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "5937:13:7", + "src": "5940:13:11", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 1392, + "id": 2848, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5941:7:7", + "src": "5944:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1393, + "id": 2849, "length": null, "nodeType": "ArrayTypeName", - "src": "5941:9:7", + "src": "5944:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 1396, + "id": 2852, "isConstant": false, "isLValue": false, "isPure": false, @@ -10723,27 +10647,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5937:25:7", + "src": "5940:25:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "5912:50:7" + "src": "5915:50:11" }, { "assignments": [ - 1399 + 2855 ], "declarations": [ { "constant": false, - "id": 1399, + "id": 2855, "name": "index", "nodeType": "VariableDeclaration", - "scope": 1431, - "src": "6006:13:7", + "scope": 2887, + "src": "6009:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10751,10 +10675,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1398, + "id": 2854, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6006:7:7", + "src": "6009:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10764,18 +10688,18 @@ "visibility": "internal" } ], - "id": 1401, + "id": 2857, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1400, + "id": 2856, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6022:1:7", + "src": "6025:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -10784,20 +10708,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "6006:17:7" + "src": "6009:17:11" }, { "assignments": [ - 1403 + 2859 ], "declarations": [ { "constant": false, - "id": 1403, + "id": 2859, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1431, - "src": "6033:20:7", + "scope": 2887, + "src": "6036:20:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10805,10 +10729,10 @@ "typeString": "address" }, "typeName": { - "id": 1402, + "id": 2858, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6033:7:7", + "src": "6036:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10818,31 +10742,31 @@ "visibility": "internal" } ], - "id": 1407, + "id": 2863, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1404, + "id": 2860, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "6056:6:7", + "referencedDeclaration": 2494, + "src": "6059:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1406, + "id": 2862, "indexExpression": { "argumentTypes": null, - "id": 1405, + "id": 2861, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "6063:15:7", + "referencedDeclaration": 2490, + "src": "6066:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10853,25 +10777,25 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6056:23:7", + "src": "6059:23:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "6033:46:7" + "src": "6036:46:11" }, { "body": { - "id": 1426, + "id": 2882, "nodeType": "Block", - "src": "6128:123:7", + "src": "6131:123:11", "statements": [ { "expression": { "argumentTypes": null, - "id": 1415, + "id": 2871, "isConstant": false, "isLValue": false, "isPure": false, @@ -10880,26 +10804,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1411, + "id": 2867, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1391, - "src": "6142:5:7", + "referencedDeclaration": 2847, + "src": "6145:5:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1413, + "id": 2869, "indexExpression": { "argumentTypes": null, - "id": 1412, + "id": 2868, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1399, - "src": "6148:5:7", + "referencedDeclaration": 2855, + "src": "6151:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10910,7 +10834,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "6142:12:7", + "src": "6145:12:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10920,43 +10844,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1414, + "id": 2870, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1403, - "src": "6157:12:7", + "referencedDeclaration": 2859, + "src": "6160:12:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "6142:27:7", + "src": "6145:27:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1416, + "id": 2872, "nodeType": "ExpressionStatement", - "src": "6142:27:7" + "src": "6145:27:11" }, { "expression": { "argumentTypes": null, - "id": 1421, + "id": 2877, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1417, + "id": 2873, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1403, - "src": "6183:12:7", + "referencedDeclaration": 2859, + "src": "6186:12:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10968,26 +10892,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1418, + "id": 2874, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1036, - "src": "6198:6:7", + "referencedDeclaration": 2494, + "src": "6201:6:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1420, + "id": 2876, "indexExpression": { "argumentTypes": null, - "id": 1419, + "id": 2875, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1403, - "src": "6205:12:7", + "referencedDeclaration": 2859, + "src": "6208:12:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10998,26 +10922,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6198:20:7", + "src": "6201:20:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "6183:35:7", + "src": "6186:35:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1422, + "id": 2878, "nodeType": "ExpressionStatement", - "src": "6183:35:7" + "src": "6186:35:11" }, { "expression": { "argumentTypes": null, - "id": 1424, + "id": 2880, "isConstant": false, "isLValue": false, "isPure": false, @@ -11025,15 +10949,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "6232:8:7", + "src": "6235:8:11", "subExpression": { "argumentTypes": null, - "id": 1423, + "id": 2879, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1399, - "src": "6232:5:7", + "referencedDeclaration": 2855, + "src": "6235:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11044,9 +10968,9 @@ "typeString": "uint256" } }, - "id": 1425, + "id": 2881, "nodeType": "ExpressionStatement", - "src": "6232:8:7" + "src": "6235:8:11" } ] }, @@ -11056,19 +10980,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1410, + "id": 2866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1408, + "id": 2864, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1403, - "src": "6095:12:7", + "referencedDeclaration": 2859, + "src": "6098:12:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11078,50 +11002,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1409, + "id": 2865, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "6111:15:7", + "referencedDeclaration": 2490, + "src": "6114:15:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "6095:31:7", + "src": "6098:31:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1427, + "id": 2883, "nodeType": "WhileStatement", - "src": "6089:162:7" + "src": "6092:162:11" }, { "expression": { "argumentTypes": null, - "id": 1428, + "id": 2884, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1391, - "src": "6267:5:7", + "referencedDeclaration": 2847, + "src": "6270:5:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 1387, - "id": 1429, + "functionReturnParameters": 2843, + "id": 2885, "nodeType": "Return", - "src": "6260:12:7" + "src": "6263:12:11" } ] }, "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", - "id": 1431, + "id": 2887, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -11129,23 +11053,23 @@ "name": "getOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1383, + "id": 2839, "nodeType": "ParameterList", "parameters": [], - "src": "5839:2:7" + "src": "5842:2:11" }, "payable": false, "returnParameters": { - "id": 1387, + "id": 2843, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1386, + "id": 2842, "name": "", "nodeType": "VariableDeclaration", - "scope": 1431, - "src": "5887:9:7", + "scope": 2887, + "src": "5890:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11154,19 +11078,19 @@ }, "typeName": { "baseType": { - "id": 1384, + "id": 2840, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5887:7:7", + "src": "5890:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1385, + "id": 2841, "length": null, "nodeType": "ArrayTypeName", - "src": "5887:9:7", + "src": "5890:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -11176,20 +11100,20 @@ "visibility": "internal" } ], - "src": "5886:11:7" + "src": "5889:11:11" }, - "scope": 1432, - "src": "5821:458:7", + "scope": 2888, + "src": "5824:458:11", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1433, - "src": "240:6041:7" + "scope": 2889, + "src": "240:6044:11" } ], - "src": "0:6282:7" + "src": "0:6285:11" }, "compiler": { "name": "solc", @@ -11197,5 +11121,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-20T07:57:27.022Z" + "updatedAt": "2018-06-29T09:01:22.079Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/PayingProxy.json b/safe-contracts/build/contracts/PayingProxy.json index 56b95009f1..809d039bee 100644 --- a/safe-contracts/build/contracts/PayingProxy.json +++ b/safe-contracts/build/contracts/PayingProxy.json @@ -62,51 +62,51 @@ "type": "fallback" } ], - "bytecode": "0x608060405234801561001057600080fd5b50604051610502380380610502833981018060405281019080805190602001909291908051820192919060200180519060200190929190805190602001909291908051906020019092919050505084848160008173ffffffffffffffffffffffffffffffffffffffff1614151515610116576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000815111156101a35773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e600082141561019f573d81fd5b5050505b5050600081111561038357600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561022f578273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610229573d6000803e3d6000fd5b50610382565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156102d257600080fd5b505af11580156102e6573d6000803e3d6000fd5b505050506040513d60208110156102fc57600080fd5b81019080805190602001909291905050501515610381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f74206578656375746520746f6b656e207061796d656e740081525060200191505060405180910390fd5b5b5b505050505061016b806103976000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058207c0d46b157e8df6d783e305a80b9c841f620d4bf15b4e2b2c93f261b93e8d6fa0029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058207c0d46b157e8df6d783e305a80b9c841f620d4bf15b4e2b2c93f261b93e8d6fa0029", - "sourceMap": "452:940:10:-;;;924:466;8:9:-1;5:2;;;30:1;27;20:12;5:2;924:466:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1065:11;1078;668::0;593:1:11;578:11;:16;;;;570:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;658:11;645:10;;:24;;;;;;;;;;;;;;;;;;508:168;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;1134:1:10;1124:7;:11;1120:263;;;1179:1;1155:26;;:12;:26;;;1151:222;;;1201:6;:15;;:24;1217:7;1201:24;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1201:24:10;1151:222;;;1283:12;1272:33;;;1306:6;1314:7;1272:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1272:50:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1272:50:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1272:50:10;;;;;;;;;;;;;;;;1264:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1151:222;1120:263;924:466;;;;;452:940;;;;;;", - "deployedSourceMap": "452:940:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;955:42:11;951:1;945:8;941:57;1030:14;1027:1;1024;1011:34;1125:1;1122;1106:14;1103:1;1091:10;1086:3;1073:54;1161:16;1158:1;1155;1140:38;1206:1;1197:7;1194:14;1191:2;;;1221:16;1218:1;1211:27;1191:2;1263:16;1260:1;1253:27;1426:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1426:104:11;;;;;;;;;;;;;;;;;;;;;;;1302:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1426:104;1492:7;1522:1;1515:8;;1426:104;:::o;1302:118::-;1373:7;1403:10;;;;;;;;;;;1396:17;;1302:118;:::o", - "source": "pragma solidity 0.4.24;\nimport \"./DelegateConstructorProxy.sol\";\nimport \"./interfaces/ERC20Token.sol\";\n\n/// @title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract PayingProxy is DelegateConstructorProxy {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n /// @param funder Address that should be paid for the execution of this call\n /// @param paymentToken Token that should be used for the payment (0 is ETH)\n /// @param payment Value that should be paid\n constructor(address _masterCopy, bytes initializer, address funder, address paymentToken, uint256 payment) \n DelegateConstructorProxy(_masterCopy, initializer)\n public\n {\n if (payment > 0) {\n if (paymentToken == address(0)) {\n funder.transfer(payment);\n } else {\n require(ERC20Token(paymentToken).transfer(funder, payment), \"Could not execute token payment\");\n }\n } \n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b5060405161060a38038061060a833981018060405281019080805190602001909291908051820192919060200180519060200190929190805190602001909291908051906020019092919050505084848160008173ffffffffffffffffffffffffffffffffffffffff1614151515610116576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000815111156101a35773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e600082141561019f573d81fd5b5050505b5050600081111561036d57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156102b7578273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156102b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f436f756c64206e6f74207061792073616665206372656174696f6e207769746881526020017f206574686572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61036c565b6102d1828483610377640100000000026401000000009004565b151561036b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f436f756c64206e6f74207061792073616665206372656174696f6e207769746881526020017f20746f6b656e000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b5b5050505050610490565b600060608383604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506000808251602084016000896127105a03f16040513d6000823e3d60008114610473576020811461047b5760009450610485565b829450610485565b8151158315171594505b505050509392505050565b61016b8061049f6000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820d7000b93834fa325b64ca1644682b27b7ca4e0c5b438f4481d7909f3d065bbeb0029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820d7000b93834fa325b64ca1644682b27b7ca4e0c5b438f4481d7909f3d065bbeb0029", + "sourceMap": "451:1072:12:-;;;945:576;8:9:-1;5:2;;;30:1;27;20:12;5:2;945:576:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1086:11;1099;668::0;593:1:13;578:11;:16;;;;570:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;658:11;645:10;;:24;;;;;;;;;;;;;;;;;;508:168;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;1155:1:12;1145:7;:11;1141:373;;;1200:1;1176:26;;:12;:26;;;1172:332;;;1292:6;:11;;:20;1304:7;1292:20;;;;;;;;;;;;;;;;;;;;;;;1284:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1172:332;;;1402:44;1416:12;1430:6;1438:7;1402:13;;;:44;;;:::i;:::-;1394:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1172:332;1141:373;945:576;;;;;451:1072;;430:752:15;568:16;600:17;673:8;683:6;620:70;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;620:70:15;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;620:70:15;600:90;;867:1;864;857:4;851:11;844:4;838;834:15;831:1;824:5;816;811:3;807:15;802:67;899:4;893:11;940:14;937:1;932:3;917:38;975:14;1008:1;1003:33;;;;1054:4;1049:76;;;;1163:1;1148:16;;968:198;;1003:33;1027:7;1012:22;;1003:33;;1049:76;1116:3;1110:10;1103:18;1093:7;1086:15;1083:39;1076:47;1061:62;;968:198;;773:403;;;;;;;;:::o;451:1072:12:-;;;;;;;", + "deployedSourceMap": "451:1072:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;955:42:13;951:1;945:8;941:57;1030:14;1027:1;1024;1011:34;1125:1;1122;1106:14;1103:1;1091:10;1086:3;1073:54;1161:16;1158:1;1155;1140:38;1206:1;1197:7;1194:14;1191:2;;;1221:16;1218:1;1211:27;1191:2;1263:16;1260:1;1253:27;1426:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1426:104:13;;;;;;;;;;;;;;;;;;;;;;;1302:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:118:13;;;;;;;;;;;;;;;;;;;;;;;;;;;1426:104;1492:7;1522:1;1515:8;;1426:104;:::o;1302:118::-;1373:7;1403:10;;;;;;;;;;;1396:17;;1302:118;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./DelegateConstructorProxy.sol\";\nimport \"./SecuredTokenTransfer.sol\";\n\n/// @title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract PayingProxy is DelegateConstructorProxy, SecuredTokenTransfer {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n /// @param funder Address that should be paid for the execution of this call\n /// @param paymentToken Token that should be used for the payment (0 is ETH)\n /// @param payment Value that should be paid\n constructor(address _masterCopy, bytes initializer, address funder, address paymentToken, uint256 payment) \n DelegateConstructorProxy(_masterCopy, initializer)\n public\n {\n if (payment > 0) {\n if (paymentToken == address(0)) {\n // solium-disable-next-line security/no-send\n require(funder.send(payment), \"Could not pay safe creation with ether\");\n } else {\n require(transferToken(paymentToken, funder, payment), \"Could not pay safe creation with token\");\n }\n } \n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/PayingProxy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/PayingProxy.sol", "exportedSymbols": { "PayingProxy": [ - 1568 + 2945 ] }, - "id": 1569, + "id": 2946, "nodeType": "SourceUnit", "nodes": [ { - "id": 1515, + "id": 2890, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:10" + "src": "0:23:12" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", "file": "./DelegateConstructorProxy.sol", - "id": 1516, + "id": 2891, "nodeType": "ImportDirective", - "scope": 1569, + "scope": 2946, "sourceUnit": 24, - "src": "24:40:10", + "src": "24:40:12", "symbolAliases": [], "unitAlias": "" }, { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", - "file": "./interfaces/ERC20Token.sol", - "id": 1517, + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SecuredTokenTransfer.sol", + "file": "./SecuredTokenTransfer.sol", + "id": 2892, "nodeType": "ImportDirective", - "scope": 1569, - "sourceUnit": 1786, - "src": "65:37:10", + "scope": 2946, + "sourceUnit": 3049, + "src": "65:36:12", "symbolAliases": [], "unitAlias": "" }, @@ -116,42 +116,62 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1518, + "id": 2893, "name": "DelegateConstructorProxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 23, - "src": "476:24:10", + "src": "475:24:12", "typeDescriptions": { "typeIdentifier": "t_contract$_DelegateConstructorProxy_$23", "typeString": "contract DelegateConstructorProxy" } }, - "id": 1519, + "id": 2894, "nodeType": "InheritanceSpecifier", - "src": "476:24:10" + "src": "475:24:12" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2895, + "name": "SecuredTokenTransfer", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3048, + "src": "501:20:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SecuredTokenTransfer_$3048", + "typeString": "contract SecuredTokenTransfer" + } + }, + "id": 2896, + "nodeType": "InheritanceSpecifier", + "src": "501:20:12" } ], "contractDependencies": [ 23, - 1611 + 2988, + 3048 ], "contractKind": "contract", "documentation": "@title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1568, + "id": 2945, "linearizedBaseContracts": [ - 1568, + 2945, + 3048, 23, - 1611 + 2988 ], "name": "PayingProxy", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1566, + "id": 2943, "nodeType": "Block", - "src": "1110:280:10", + "src": "1131:390:12", "statements": [ { "condition": { @@ -160,19 +180,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1538, + "id": 2915, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1536, + "id": 2913, "name": "payment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1529, - "src": "1124:7:10", + "referencedDeclaration": 2906, + "src": "1145:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -183,14 +203,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1537, + "id": 2914, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1134:1:10", + "src": "1155:1:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -198,20 +218,20 @@ }, "value": "0" }, - "src": "1124:11:10", + "src": "1145:11:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1565, + "id": 2942, "nodeType": "IfStatement", - "src": "1120:263:10", + "src": "1141:373:12", "trueBody": { - "id": 1564, + "id": 2941, "nodeType": "Block", - "src": "1137:246:10", + "src": "1158:356:12", "statements": [ { "condition": { @@ -220,19 +240,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1543, + "id": 2920, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1539, + "id": 2916, "name": "paymentToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1527, - "src": "1155:12:10", + "referencedDeclaration": 2904, + "src": "1176:12:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -246,14 +266,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1541, + "id": 2918, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1179:1:10", + "src": "1200:1:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -269,20 +289,20 @@ "typeString": "int_const 0" } ], - "id": 1540, + "id": 2917, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1171:7:10", + "src": "1192:7:12", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1542, + "id": 2919, "isConstant": false, "isLValue": false, "isPure": true, @@ -290,22 +310,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1171:10:10", + "src": "1192:10:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1155:26:10", + "src": "1176:26:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 1562, + "id": 2939, "nodeType": "Block", - "src": "1246:127:10", + "src": "1376:128:12", "statements": [ { "expression": { @@ -316,12 +336,25 @@ "arguments": [ { "argumentTypes": null, - "id": 1556, + "id": 2932, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2904, + "src": "1416:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2933, "name": "funder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1525, - "src": "1306:6:10", + "referencedDeclaration": 2902, + "src": "1430:6:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -329,12 +362,12 @@ }, { "argumentTypes": null, - "id": 1557, + "id": 2934, "name": "payment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1529, - "src": "1314:7:10", + "referencedDeclaration": 2906, + "src": "1438:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -343,6 +376,10 @@ ], "expression": { "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, { "typeIdentifier": "t_address", "typeString": "address" @@ -352,70 +389,18 @@ "typeString": "uint256" } ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1553, - "name": "paymentToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1527, - "src": "1283:12:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1552, - "name": "ERC20Token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1785, - "src": "1272:10:10", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1785_$", - "typeString": "type(contract ERC20Token)" - } - }, - "id": 1554, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1272:24:10", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Token_$1785", - "typeString": "contract ERC20Token" - } - }, - "id": 1555, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 1739, - "src": "1272:33:10", + "id": 2931, + "name": "transferToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3047, + "src": "1402:13:12", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) external returns (bool)" + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) returns (bool)" } }, - "id": 1558, + "id": 2935, "isConstant": false, "isLValue": false, "isPure": false, @@ -423,7 +408,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1272:50:10", + "src": "1402:44:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -431,21 +416,21 @@ }, { "argumentTypes": null, - "hexValue": "436f756c64206e6f74206578656375746520746f6b656e207061796d656e74", - "id": 1559, + "hexValue": "436f756c64206e6f74207061792073616665206372656174696f6e207769746820746f6b656e", + "id": 2936, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1324:33:10", + "src": "1448:40:12", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_stringliteral_56ee7cbc844d6a78f120ea6d555eb9afe8d3243b816d5489758d19d83ae941d2", - "typeString": "literal_string \"Could not execute token payment\"" + "typeIdentifier": "t_stringliteral_03e5f5a3fbd065ad357c2a53629b6dc528c3f7172cf25b2c45eb26f6e42b59c6", + "typeString": "literal_string \"Could not pay safe creation with token\"" }, - "value": "Could not execute token payment" + "value": "Could not pay safe creation with token" } ], "expression": { @@ -455,25 +440,25 @@ "typeString": "bool" }, { - "typeIdentifier": "t_stringliteral_56ee7cbc844d6a78f120ea6d555eb9afe8d3243b816d5489758d19d83ae941d2", - "typeString": "literal_string \"Could not execute token payment\"" + "typeIdentifier": "t_stringliteral_03e5f5a3fbd065ad357c2a53629b6dc528c3f7172cf25b2c45eb26f6e42b59c6", + "typeString": "literal_string \"Could not pay safe creation with token\"" } ], - "id": 1551, + "id": 2930, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "1264:7:10", + "referencedDeclaration": 4040, + "src": "1394:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1560, + "id": 2937, "isConstant": false, "isLValue": false, "isPure": false, @@ -481,25 +466,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1264:94:10", + "src": "1394:95:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1561, + "id": 2938, "nodeType": "ExpressionStatement", - "src": "1264:94:10" + "src": "1394:95:12" } ] }, - "id": 1563, + "id": 2940, "nodeType": "IfStatement", - "src": "1151:222:10", + "src": "1172:332:12", "trueBody": { - "id": 1550, + "id": 2929, "nodeType": "Block", - "src": "1183:57:10", + "src": "1204:166:12", "statements": [ { "expression": { @@ -507,53 +492,114 @@ "arguments": [ { "argumentTypes": null, - "id": 1547, - "name": "payment", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1529, - "src": "1217:7:10", + "arguments": [ + { + "argumentTypes": null, + "id": 2924, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2906, + "src": "1304:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2922, + "name": "funder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2902, + "src": "1292:6:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "send", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1292:11:12", + "typeDescriptions": { + "typeIdentifier": "t_function_send_nonpayable$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) returns (bool)" + } + }, + "id": 2925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1292:20:12", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f74207061792073616665206372656174696f6e2077697468206574686572", + "id": 2926, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1314:40:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_001db5e0eea429a497fbb276b295895ba66824ab53239e68691cf332a945feab", + "typeString": "literal_string \"Could not pay safe creation with ether\"" + }, + "value": "Could not pay safe creation with ether" } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_001db5e0eea429a497fbb276b295895ba66824ab53239e68691cf332a945feab", + "typeString": "literal_string \"Could not pay safe creation with ether\"" } ], - "expression": { - "argumentTypes": null, - "id": 1544, - "name": "funder", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1525, - "src": "1201:6:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1546, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1201:15:10", + "id": 2921, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4039, + 4040 + ], + "referencedDeclaration": 4040, + "src": "1284:7:12", "typeDescriptions": { - "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1548, + "id": 2927, "isConstant": false, "isLValue": false, "isPure": false, @@ -561,15 +607,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1201:24:10", + "src": "1284:71:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1549, + "id": 2928, "nodeType": "ExpressionStatement", - "src": "1201:24:10" + "src": "1284:71:12" } ] } @@ -580,7 +626,7 @@ ] }, "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.\n @param initializer Data used for a delegate call to initialize the contract.\n @param funder Address that should be paid for the execution of this call\n @param paymentToken Token that should be used for the payment (0 is ETH)\n @param payment Value that should be paid", - "id": 1567, + "id": 2944, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -589,12 +635,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1532, + "id": 2909, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, - "src": "1065:11:10", + "referencedDeclaration": 2898, + "src": "1086:11:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -602,49 +648,49 @@ }, { "argumentTypes": null, - "id": 1533, + "id": 2910, "name": "initializer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1523, - "src": "1078:11:10", + "referencedDeclaration": 2900, + "src": "1099:11:12", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], - "id": 1534, + "id": 2911, "modifierName": { "argumentTypes": null, - "id": 1531, + "id": 2908, "name": "DelegateConstructorProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 23, - "src": "1040:24:10", + "src": "1061:24:12", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_DelegateConstructorProxy_$23_$", "typeString": "type(contract DelegateConstructorProxy)" } }, "nodeType": "ModifierInvocation", - "src": "1040:50:10" + "src": "1061:50:12" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1530, + "id": 2907, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1521, + "id": 2898, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1567, - "src": "936:19:10", + "scope": 2944, + "src": "957:19:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -652,10 +698,10 @@ "typeString": "address" }, "typeName": { - "id": 1520, + "id": 2897, "name": "address", "nodeType": "ElementaryTypeName", - "src": "936:7:10", + "src": "957:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -666,11 +712,11 @@ }, { "constant": false, - "id": 1523, + "id": 2900, "name": "initializer", "nodeType": "VariableDeclaration", - "scope": 1567, - "src": "957:17:10", + "scope": 2944, + "src": "978:17:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -678,10 +724,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1522, + "id": 2899, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "957:5:10", + "src": "978:5:12", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -692,11 +738,11 @@ }, { "constant": false, - "id": 1525, + "id": 2902, "name": "funder", "nodeType": "VariableDeclaration", - "scope": 1567, - "src": "976:14:10", + "scope": 2944, + "src": "997:14:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -704,10 +750,10 @@ "typeString": "address" }, "typeName": { - "id": 1524, + "id": 2901, "name": "address", "nodeType": "ElementaryTypeName", - "src": "976:7:10", + "src": "997:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -718,11 +764,11 @@ }, { "constant": false, - "id": 1527, + "id": 2904, "name": "paymentToken", "nodeType": "VariableDeclaration", - "scope": 1567, - "src": "992:20:10", + "scope": 2944, + "src": "1013:20:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -730,10 +776,10 @@ "typeString": "address" }, "typeName": { - "id": 1526, + "id": 2903, "name": "address", "nodeType": "ElementaryTypeName", - "src": "992:7:10", + "src": "1013:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -744,11 +790,11 @@ }, { "constant": false, - "id": 1529, + "id": 2906, "name": "payment", "nodeType": "VariableDeclaration", - "scope": 1567, - "src": "1014:15:10", + "scope": 2944, + "src": "1035:15:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -756,10 +802,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1528, + "id": 2905, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1014:7:10", + "src": "1035:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -769,67 +815,67 @@ "visibility": "internal" } ], - "src": "935:95:10" + "src": "956:95:12" }, "payable": false, "returnParameters": { - "id": 1535, + "id": 2912, "nodeType": "ParameterList", "parameters": [], - "src": "1110:0:10" + "src": "1131:0:12" }, - "scope": 1568, - "src": "924:466:10", + "scope": 2945, + "src": "945:576:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1569, - "src": "452:940:10" + "scope": 2946, + "src": "451:1072:12" } ], - "src": "0:1393:10" + "src": "0:1524:12" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/PayingProxy.sol", "exportedSymbols": { "PayingProxy": [ - 1568 + 2945 ] }, - "id": 1569, + "id": 2946, "nodeType": "SourceUnit", "nodes": [ { - "id": 1515, + "id": 2890, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:10" + "src": "0:23:12" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", "file": "./DelegateConstructorProxy.sol", - "id": 1516, + "id": 2891, "nodeType": "ImportDirective", - "scope": 1569, + "scope": 2946, "sourceUnit": 24, - "src": "24:40:10", + "src": "24:40:12", "symbolAliases": [], "unitAlias": "" }, { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", - "file": "./interfaces/ERC20Token.sol", - "id": 1517, + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SecuredTokenTransfer.sol", + "file": "./SecuredTokenTransfer.sol", + "id": 2892, "nodeType": "ImportDirective", - "scope": 1569, - "sourceUnit": 1786, - "src": "65:37:10", + "scope": 2946, + "sourceUnit": 3049, + "src": "65:36:12", "symbolAliases": [], "unitAlias": "" }, @@ -839,42 +885,62 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1518, + "id": 2893, "name": "DelegateConstructorProxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 23, - "src": "476:24:10", + "src": "475:24:12", "typeDescriptions": { "typeIdentifier": "t_contract$_DelegateConstructorProxy_$23", "typeString": "contract DelegateConstructorProxy" } }, - "id": 1519, + "id": 2894, "nodeType": "InheritanceSpecifier", - "src": "476:24:10" + "src": "475:24:12" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2895, + "name": "SecuredTokenTransfer", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3048, + "src": "501:20:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SecuredTokenTransfer_$3048", + "typeString": "contract SecuredTokenTransfer" + } + }, + "id": 2896, + "nodeType": "InheritanceSpecifier", + "src": "501:20:12" } ], "contractDependencies": [ 23, - 1611 + 2988, + 3048 ], "contractKind": "contract", "documentation": "@title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1568, + "id": 2945, "linearizedBaseContracts": [ - 1568, + 2945, + 3048, 23, - 1611 + 2988 ], "name": "PayingProxy", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1566, + "id": 2943, "nodeType": "Block", - "src": "1110:280:10", + "src": "1131:390:12", "statements": [ { "condition": { @@ -883,19 +949,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1538, + "id": 2915, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1536, + "id": 2913, "name": "payment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1529, - "src": "1124:7:10", + "referencedDeclaration": 2906, + "src": "1145:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -906,14 +972,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1537, + "id": 2914, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1134:1:10", + "src": "1155:1:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -921,20 +987,20 @@ }, "value": "0" }, - "src": "1124:11:10", + "src": "1145:11:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1565, + "id": 2942, "nodeType": "IfStatement", - "src": "1120:263:10", + "src": "1141:373:12", "trueBody": { - "id": 1564, + "id": 2941, "nodeType": "Block", - "src": "1137:246:10", + "src": "1158:356:12", "statements": [ { "condition": { @@ -943,19 +1009,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1543, + "id": 2920, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1539, + "id": 2916, "name": "paymentToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1527, - "src": "1155:12:10", + "referencedDeclaration": 2904, + "src": "1176:12:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -969,14 +1035,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1541, + "id": 2918, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1179:1:10", + "src": "1200:1:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -992,20 +1058,20 @@ "typeString": "int_const 0" } ], - "id": 1540, + "id": 2917, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1171:7:10", + "src": "1192:7:12", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1542, + "id": 2919, "isConstant": false, "isLValue": false, "isPure": true, @@ -1013,22 +1079,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1171:10:10", + "src": "1192:10:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1155:26:10", + "src": "1176:26:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 1562, + "id": 2939, "nodeType": "Block", - "src": "1246:127:10", + "src": "1376:128:12", "statements": [ { "expression": { @@ -1039,12 +1105,25 @@ "arguments": [ { "argumentTypes": null, - "id": 1556, + "id": 2932, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2904, + "src": "1416:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2933, "name": "funder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1525, - "src": "1306:6:10", + "referencedDeclaration": 2902, + "src": "1430:6:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1052,12 +1131,12 @@ }, { "argumentTypes": null, - "id": 1557, + "id": 2934, "name": "payment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1529, - "src": "1314:7:10", + "referencedDeclaration": 2906, + "src": "1438:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1066,6 +1145,10 @@ ], "expression": { "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, { "typeIdentifier": "t_address", "typeString": "address" @@ -1075,70 +1158,18 @@ "typeString": "uint256" } ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1553, - "name": "paymentToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1527, - "src": "1283:12:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1552, - "name": "ERC20Token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1785, - "src": "1272:10:10", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1785_$", - "typeString": "type(contract ERC20Token)" - } - }, - "id": 1554, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1272:24:10", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Token_$1785", - "typeString": "contract ERC20Token" - } - }, - "id": 1555, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 1739, - "src": "1272:33:10", + "id": 2931, + "name": "transferToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3047, + "src": "1402:13:12", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) external returns (bool)" + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) returns (bool)" } }, - "id": 1558, + "id": 2935, "isConstant": false, "isLValue": false, "isPure": false, @@ -1146,7 +1177,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1272:50:10", + "src": "1402:44:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1154,21 +1185,21 @@ }, { "argumentTypes": null, - "hexValue": "436f756c64206e6f74206578656375746520746f6b656e207061796d656e74", - "id": 1559, + "hexValue": "436f756c64206e6f74207061792073616665206372656174696f6e207769746820746f6b656e", + "id": 2936, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1324:33:10", + "src": "1448:40:12", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_stringliteral_56ee7cbc844d6a78f120ea6d555eb9afe8d3243b816d5489758d19d83ae941d2", - "typeString": "literal_string \"Could not execute token payment\"" + "typeIdentifier": "t_stringliteral_03e5f5a3fbd065ad357c2a53629b6dc528c3f7172cf25b2c45eb26f6e42b59c6", + "typeString": "literal_string \"Could not pay safe creation with token\"" }, - "value": "Could not execute token payment" + "value": "Could not pay safe creation with token" } ], "expression": { @@ -1178,25 +1209,25 @@ "typeString": "bool" }, { - "typeIdentifier": "t_stringliteral_56ee7cbc844d6a78f120ea6d555eb9afe8d3243b816d5489758d19d83ae941d2", - "typeString": "literal_string \"Could not execute token payment\"" + "typeIdentifier": "t_stringliteral_03e5f5a3fbd065ad357c2a53629b6dc528c3f7172cf25b2c45eb26f6e42b59c6", + "typeString": "literal_string \"Could not pay safe creation with token\"" } ], - "id": 1551, + "id": 2930, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "1264:7:10", + "referencedDeclaration": 4040, + "src": "1394:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1560, + "id": 2937, "isConstant": false, "isLValue": false, "isPure": false, @@ -1204,25 +1235,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1264:94:10", + "src": "1394:95:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1561, + "id": 2938, "nodeType": "ExpressionStatement", - "src": "1264:94:10" + "src": "1394:95:12" } ] }, - "id": 1563, + "id": 2940, "nodeType": "IfStatement", - "src": "1151:222:10", + "src": "1172:332:12", "trueBody": { - "id": 1550, + "id": 2929, "nodeType": "Block", - "src": "1183:57:10", + "src": "1204:166:12", "statements": [ { "expression": { @@ -1230,53 +1261,114 @@ "arguments": [ { "argumentTypes": null, - "id": 1547, - "name": "payment", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1529, - "src": "1217:7:10", + "arguments": [ + { + "argumentTypes": null, + "id": 2924, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2906, + "src": "1304:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2922, + "name": "funder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2902, + "src": "1292:6:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "send", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1292:11:12", + "typeDescriptions": { + "typeIdentifier": "t_function_send_nonpayable$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) returns (bool)" + } + }, + "id": 2925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1292:20:12", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f74207061792073616665206372656174696f6e2077697468206574686572", + "id": 2926, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1314:40:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_001db5e0eea429a497fbb276b295895ba66824ab53239e68691cf332a945feab", + "typeString": "literal_string \"Could not pay safe creation with ether\"" + }, + "value": "Could not pay safe creation with ether" } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_001db5e0eea429a497fbb276b295895ba66824ab53239e68691cf332a945feab", + "typeString": "literal_string \"Could not pay safe creation with ether\"" } ], - "expression": { - "argumentTypes": null, - "id": 1544, - "name": "funder", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1525, - "src": "1201:6:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1546, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1201:15:10", + "id": 2921, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4039, + 4040 + ], + "referencedDeclaration": 4040, + "src": "1284:7:12", "typeDescriptions": { - "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1548, + "id": 2927, "isConstant": false, "isLValue": false, "isPure": false, @@ -1284,15 +1376,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1201:24:10", + "src": "1284:71:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1549, + "id": 2928, "nodeType": "ExpressionStatement", - "src": "1201:24:10" + "src": "1284:71:12" } ] } @@ -1303,7 +1395,7 @@ ] }, "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.\n @param initializer Data used for a delegate call to initialize the contract.\n @param funder Address that should be paid for the execution of this call\n @param paymentToken Token that should be used for the payment (0 is ETH)\n @param payment Value that should be paid", - "id": 1567, + "id": 2944, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -1312,12 +1404,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1532, + "id": 2909, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1521, - "src": "1065:11:10", + "referencedDeclaration": 2898, + "src": "1086:11:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1325,49 +1417,49 @@ }, { "argumentTypes": null, - "id": 1533, + "id": 2910, "name": "initializer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1523, - "src": "1078:11:10", + "referencedDeclaration": 2900, + "src": "1099:11:12", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], - "id": 1534, + "id": 2911, "modifierName": { "argumentTypes": null, - "id": 1531, + "id": 2908, "name": "DelegateConstructorProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 23, - "src": "1040:24:10", + "src": "1061:24:12", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_DelegateConstructorProxy_$23_$", "typeString": "type(contract DelegateConstructorProxy)" } }, "nodeType": "ModifierInvocation", - "src": "1040:50:10" + "src": "1061:50:12" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1530, + "id": 2907, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1521, + "id": 2898, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1567, - "src": "936:19:10", + "scope": 2944, + "src": "957:19:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1375,10 +1467,10 @@ "typeString": "address" }, "typeName": { - "id": 1520, + "id": 2897, "name": "address", "nodeType": "ElementaryTypeName", - "src": "936:7:10", + "src": "957:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1389,11 +1481,11 @@ }, { "constant": false, - "id": 1523, + "id": 2900, "name": "initializer", "nodeType": "VariableDeclaration", - "scope": 1567, - "src": "957:17:10", + "scope": 2944, + "src": "978:17:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1401,10 +1493,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1522, + "id": 2899, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "957:5:10", + "src": "978:5:12", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1415,11 +1507,11 @@ }, { "constant": false, - "id": 1525, + "id": 2902, "name": "funder", "nodeType": "VariableDeclaration", - "scope": 1567, - "src": "976:14:10", + "scope": 2944, + "src": "997:14:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1427,10 +1519,10 @@ "typeString": "address" }, "typeName": { - "id": 1524, + "id": 2901, "name": "address", "nodeType": "ElementaryTypeName", - "src": "976:7:10", + "src": "997:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1441,11 +1533,11 @@ }, { "constant": false, - "id": 1527, + "id": 2904, "name": "paymentToken", "nodeType": "VariableDeclaration", - "scope": 1567, - "src": "992:20:10", + "scope": 2944, + "src": "1013:20:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1453,10 +1545,10 @@ "typeString": "address" }, "typeName": { - "id": 1526, + "id": 2903, "name": "address", "nodeType": "ElementaryTypeName", - "src": "992:7:10", + "src": "1013:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1467,11 +1559,11 @@ }, { "constant": false, - "id": 1529, + "id": 2906, "name": "payment", "nodeType": "VariableDeclaration", - "scope": 1567, - "src": "1014:15:10", + "scope": 2944, + "src": "1035:15:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1479,10 +1571,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1528, + "id": 2905, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1014:7:10", + "src": "1035:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1492,27 +1584,27 @@ "visibility": "internal" } ], - "src": "935:95:10" + "src": "956:95:12" }, "payable": false, "returnParameters": { - "id": 1535, + "id": 2912, "nodeType": "ParameterList", "parameters": [], - "src": "1110:0:10" + "src": "1131:0:12" }, - "scope": 1568, - "src": "924:466:10", + "scope": 2945, + "src": "945:576:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1569, - "src": "452:940:10" + "scope": 2946, + "src": "451:1072:12" } ], - "src": "0:1393:10" + "src": "0:1524:12" }, "compiler": { "name": "solc", @@ -1520,5 +1612,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-18T14:44:09.461Z" + "updatedAt": "2018-06-29T09:01:22.083Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Proxy.json b/safe-contracts/build/contracts/Proxy.json index af2f4b34a1..69aaa3b561 100644 --- a/safe-contracts/build/contracts/Proxy.json +++ b/safe-contracts/build/contracts/Proxy.json @@ -48,29 +48,29 @@ ], "bytecode": "0x608060405234801561001057600080fd5b506040516020806102a38339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff16141515156100e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806101386000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820fb8f7addc79801292900c520af66dd86a1f9d0b643abe5d3ef1ac03eeb2d04080029", "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820fb8f7addc79801292900c520af66dd86a1f9d0b643abe5d3ef1ac03eeb2d04080029", - "sourceMap": "190:1342:11:-;;;508:168;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:168:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;593:1;578:11;:16;;;;570:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;658:11;645:10;;:24;;;;;;;;;;;;;;;;;;508:168;190:1342;;;;;;", - "deployedSourceMap": "190:1342:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;955:42;951:1;945:8;941:57;1030:14;1027:1;1024;1011:34;1125:1;1122;1106:14;1103:1;1091:10;1086:3;1073:54;1161:16;1158:1;1155;1140:38;1206:1;1197:7;1194:14;1191:2;;;1221:16;1218:1;1211:27;1191:2;1263:16;1260:1;1253:27;1426:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1426:104:11;;;;;;;;;;;;;;;;;;;;;;;1302:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1426:104;1492:7;1522:1;1515:8;;1426:104;:::o;1302:118::-;1373:7;1403:10;;;;;;;;;;;1396:17;;1302:118;:::o", + "sourceMap": "190:1342:13:-;;;508:168;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:168:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;593:1;578:11;:16;;;;570:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;658:11;645:10;;:24;;;;;;;;;;;;;;;;;;508:168;190:1342;;;;;;", + "deployedSourceMap": "190:1342:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;955:42;951:1;945:8;941:57;1030:14;1027:1;1024;1011:34;1125:1;1122;1106:14;1103:1;1091:10;1086:3;1073:54;1161:16;1158:1;1155;1140:38;1206:1;1197:7;1194:14;1191:2;;;1221:16;1218:1;1211:27;1191:2;1263:16;1260:1;1253:27;1426:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1426:104:13;;;;;;;;;;;;;;;;;;;;;;;1302:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:118:13;;;;;;;;;;;;;;;;;;;;;;;;;;;1426:104;1492:7;1522:1;1515:8;;1426:104;:::o;1302:118::-;1373:7;1403:10;;;;;;;;;;;1396:17;;1302:118;:::o", "source": "pragma solidity 0.4.24;\n\n\n/// @title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n/// @author Stefan George - \ncontract Proxy {\n\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.\n address masterCopy;\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n constructor(address _masterCopy)\n public\n {\n require(_masterCopy != 0, \"Invalid master copy address provided\");\n masterCopy = _masterCopy;\n }\n\n /// @dev Fallback function forwards all transactions and returns all received return data.\n function ()\n external\n payable\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas, masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0) { revert(0, returndatasize()) }\n return(0, returndatasize())\n }\n }\n\n function implementation()\n public\n view\n returns (address)\n {\n return masterCopy;\n }\n\n function proxyType()\n public\n pure\n returns (uint256)\n {\n return 2;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "exportedSymbols": { "Proxy": [ - 1611 + 2988 ] }, - "id": 1612, + "id": 2989, "nodeType": "SourceUnit", "nodes": [ { - "id": 1570, + "id": 2947, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:11" + "src": "0:23:13" }, { "baseContracts": [], @@ -78,20 +78,20 @@ "contractKind": "contract", "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1611, + "id": 2988, "linearizedBaseContracts": [ - 1611 + 2988 ], "name": "Proxy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1572, + "id": 2949, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1611, - "src": "363:18:11", + "scope": 2988, + "src": "363:18:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -99,10 +99,10 @@ "typeString": "address" }, "typeName": { - "id": 1571, + "id": 2948, "name": "address", "nodeType": "ElementaryTypeName", - "src": "363:7:11", + "src": "363:7:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -113,9 +113,9 @@ }, { "body": { - "id": 1588, + "id": 2965, "nodeType": "Block", - "src": "560:116:11", + "src": "560:116:13", "statements": [ { "expression": { @@ -127,19 +127,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1580, + "id": 2957, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1578, + "id": 2955, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1574, - "src": "578:11:11", + "referencedDeclaration": 2951, + "src": "578:11:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -150,14 +150,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1579, + "id": 2956, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "593:1:11", + "src": "593:1:13", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -165,7 +165,7 @@ }, "value": "0" }, - "src": "578:16:11", + "src": "578:16:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -174,14 +174,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206d617374657220636f707920616464726573732070726f7669646564", - "id": 1581, + "id": 2958, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "596:38:11", + "src": "596:38:13", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", @@ -201,21 +201,21 @@ "typeString": "literal_string \"Invalid master copy address provided\"" } ], - "id": 1577, + "id": 2954, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "570:7:11", + "referencedDeclaration": 4040, + "src": "570:7:13", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1582, + "id": 2959, "isConstant": false, "isLValue": false, "isPure": false, @@ -223,32 +223,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "570:65:11", + "src": "570:65:13", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1583, + "id": 2960, "nodeType": "ExpressionStatement", - "src": "570:65:11" + "src": "570:65:13" }, { "expression": { "argumentTypes": null, - "id": 1586, + "id": 2963, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1584, + "id": 2961, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1572, - "src": "645:10:11", + "referencedDeclaration": 2949, + "src": "645:10:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -258,31 +258,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1585, + "id": 2962, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1574, - "src": "658:11:11", + "referencedDeclaration": 2951, + "src": "658:11:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "645:24:11", + "src": "645:24:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1587, + "id": 2964, "nodeType": "ExpressionStatement", - "src": "645:24:11" + "src": "645:24:13" } ] }, "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.", - "id": 1589, + "id": 2966, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -290,16 +290,16 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1575, + "id": 2952, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1574, + "id": 2951, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1589, - "src": "520:19:11", + "scope": 2966, + "src": "520:19:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -307,10 +307,10 @@ "typeString": "address" }, "typeName": { - "id": 1573, + "id": 2950, "name": "address", "nodeType": "ElementaryTypeName", - "src": "520:7:11", + "src": "520:7:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -320,38 +320,38 @@ "visibility": "internal" } ], - "src": "519:21:11" + "src": "519:21:13" }, "payable": false, "returnParameters": { - "id": 1576, + "id": 2953, "nodeType": "ParameterList", "parameters": [], - "src": "560:0:11" + "src": "560:0:13" }, - "scope": 1611, - "src": "508:168:11", + "scope": 2988, + "src": "508:168:13", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1593, + "id": 2970, "nodeType": "Block", - "src": "826:470:11", + "src": "826:470:13", "statements": [ { "externalReferences": [], - "id": 1592, + "id": 2969, "nodeType": "InlineAssembly", "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas(), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0)\n {\n revert(0, returndatasize())\n }\n return(0, returndatasize())\n}", - "src": "900:396:11" + "src": "900:396:13" } ] }, "documentation": "@dev Fallback function forwards all transactions and returns all received return data.", - "id": 1594, + "id": 2971, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -359,53 +359,53 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1590, + "id": 2967, "nodeType": "ParameterList", "parameters": [], - "src": "786:2:11" + "src": "786:2:13" }, "payable": true, "returnParameters": { - "id": 1591, + "id": 2968, "nodeType": "ParameterList", "parameters": [], - "src": "826:0:11" + "src": "826:0:13" }, - "scope": 1611, - "src": "777:519:11", + "scope": 2988, + "src": "777:519:13", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 1601, + "id": 2978, "nodeType": "Block", - "src": "1386:34:11", + "src": "1386:34:13", "statements": [ { "expression": { "argumentTypes": null, - "id": 1599, + "id": 2976, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1572, - "src": "1403:10:11", + "referencedDeclaration": 2949, + "src": "1403:10:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 1598, - "id": 1600, + "functionReturnParameters": 2975, + "id": 2977, "nodeType": "Return", - "src": "1396:17:11" + "src": "1396:17:13" } ] }, "documentation": null, - "id": 1602, + "id": 2979, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -413,23 +413,23 @@ "name": "implementation", "nodeType": "FunctionDefinition", "parameters": { - "id": 1595, + "id": 2972, "nodeType": "ParameterList", "parameters": [], - "src": "1325:2:11" + "src": "1325:2:13" }, "payable": false, "returnParameters": { - "id": 1598, + "id": 2975, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1597, + "id": 2974, "name": "", "nodeType": "VariableDeclaration", - "scope": 1602, - "src": "1373:7:11", + "scope": 2979, + "src": "1373:7:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -437,10 +437,10 @@ "typeString": "address" }, "typeName": { - "id": 1596, + "id": 2973, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1373:7:11", + "src": "1373:7:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -450,32 +450,32 @@ "visibility": "internal" } ], - "src": "1372:9:11" + "src": "1372:9:13" }, - "scope": 1611, - "src": "1302:118:11", + "scope": 2988, + "src": "1302:118:13", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1609, + "id": 2986, "nodeType": "Block", - "src": "1505:25:11", + "src": "1505:25:13", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "32", - "id": 1607, + "id": 2984, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1522:1:11", + "src": "1522:1:13", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -483,15 +483,15 @@ }, "value": "2" }, - "functionReturnParameters": 1606, - "id": 1608, + "functionReturnParameters": 2983, + "id": 2985, "nodeType": "Return", - "src": "1515:8:11" + "src": "1515:8:13" } ] }, "documentation": null, - "id": 1610, + "id": 2987, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -499,23 +499,23 @@ "name": "proxyType", "nodeType": "FunctionDefinition", "parameters": { - "id": 1603, + "id": 2980, "nodeType": "ParameterList", "parameters": [], - "src": "1444:2:11" + "src": "1444:2:13" }, "payable": false, "returnParameters": { - "id": 1606, + "id": 2983, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1605, + "id": 2982, "name": "", "nodeType": "VariableDeclaration", - "scope": 1610, - "src": "1492:7:11", + "scope": 2987, + "src": "1492:7:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -523,10 +523,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1604, + "id": 2981, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1492:7:11", + "src": "1492:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -536,40 +536,40 @@ "visibility": "internal" } ], - "src": "1491:9:11" + "src": "1491:9:13" }, - "scope": 1611, - "src": "1426:104:11", + "scope": 2988, + "src": "1426:104:13", "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 1612, - "src": "190:1342:11" + "scope": 2989, + "src": "190:1342:13" } ], - "src": "0:1533:11" + "src": "0:1533:13" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "exportedSymbols": { "Proxy": [ - 1611 + 2988 ] }, - "id": 1612, + "id": 2989, "nodeType": "SourceUnit", "nodes": [ { - "id": 1570, + "id": 2947, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:11" + "src": "0:23:13" }, { "baseContracts": [], @@ -577,20 +577,20 @@ "contractKind": "contract", "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1611, + "id": 2988, "linearizedBaseContracts": [ - 1611 + 2988 ], "name": "Proxy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1572, + "id": 2949, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1611, - "src": "363:18:11", + "scope": 2988, + "src": "363:18:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -598,10 +598,10 @@ "typeString": "address" }, "typeName": { - "id": 1571, + "id": 2948, "name": "address", "nodeType": "ElementaryTypeName", - "src": "363:7:11", + "src": "363:7:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -612,9 +612,9 @@ }, { "body": { - "id": 1588, + "id": 2965, "nodeType": "Block", - "src": "560:116:11", + "src": "560:116:13", "statements": [ { "expression": { @@ -626,19 +626,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1580, + "id": 2957, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1578, + "id": 2955, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1574, - "src": "578:11:11", + "referencedDeclaration": 2951, + "src": "578:11:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -649,14 +649,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1579, + "id": 2956, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "593:1:11", + "src": "593:1:13", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -664,7 +664,7 @@ }, "value": "0" }, - "src": "578:16:11", + "src": "578:16:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -673,14 +673,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206d617374657220636f707920616464726573732070726f7669646564", - "id": 1581, + "id": 2958, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "596:38:11", + "src": "596:38:13", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", @@ -700,21 +700,21 @@ "typeString": "literal_string \"Invalid master copy address provided\"" } ], - "id": 1577, + "id": 2954, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "570:7:11", + "referencedDeclaration": 4040, + "src": "570:7:13", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1582, + "id": 2959, "isConstant": false, "isLValue": false, "isPure": false, @@ -722,32 +722,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "570:65:11", + "src": "570:65:13", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1583, + "id": 2960, "nodeType": "ExpressionStatement", - "src": "570:65:11" + "src": "570:65:13" }, { "expression": { "argumentTypes": null, - "id": 1586, + "id": 2963, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1584, + "id": 2961, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1572, - "src": "645:10:11", + "referencedDeclaration": 2949, + "src": "645:10:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -757,31 +757,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1585, + "id": 2962, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1574, - "src": "658:11:11", + "referencedDeclaration": 2951, + "src": "658:11:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "645:24:11", + "src": "645:24:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1587, + "id": 2964, "nodeType": "ExpressionStatement", - "src": "645:24:11" + "src": "645:24:13" } ] }, "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.", - "id": 1589, + "id": 2966, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -789,16 +789,16 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1575, + "id": 2952, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1574, + "id": 2951, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1589, - "src": "520:19:11", + "scope": 2966, + "src": "520:19:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -806,10 +806,10 @@ "typeString": "address" }, "typeName": { - "id": 1573, + "id": 2950, "name": "address", "nodeType": "ElementaryTypeName", - "src": "520:7:11", + "src": "520:7:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -819,38 +819,38 @@ "visibility": "internal" } ], - "src": "519:21:11" + "src": "519:21:13" }, "payable": false, "returnParameters": { - "id": 1576, + "id": 2953, "nodeType": "ParameterList", "parameters": [], - "src": "560:0:11" + "src": "560:0:13" }, - "scope": 1611, - "src": "508:168:11", + "scope": 2988, + "src": "508:168:13", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1593, + "id": 2970, "nodeType": "Block", - "src": "826:470:11", + "src": "826:470:13", "statements": [ { "externalReferences": [], - "id": 1592, + "id": 2969, "nodeType": "InlineAssembly", "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas(), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0)\n {\n revert(0, returndatasize())\n }\n return(0, returndatasize())\n}", - "src": "900:396:11" + "src": "900:396:13" } ] }, "documentation": "@dev Fallback function forwards all transactions and returns all received return data.", - "id": 1594, + "id": 2971, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -858,53 +858,53 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1590, + "id": 2967, "nodeType": "ParameterList", "parameters": [], - "src": "786:2:11" + "src": "786:2:13" }, "payable": true, "returnParameters": { - "id": 1591, + "id": 2968, "nodeType": "ParameterList", "parameters": [], - "src": "826:0:11" + "src": "826:0:13" }, - "scope": 1611, - "src": "777:519:11", + "scope": 2988, + "src": "777:519:13", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 1601, + "id": 2978, "nodeType": "Block", - "src": "1386:34:11", + "src": "1386:34:13", "statements": [ { "expression": { "argumentTypes": null, - "id": 1599, + "id": 2976, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1572, - "src": "1403:10:11", + "referencedDeclaration": 2949, + "src": "1403:10:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 1598, - "id": 1600, + "functionReturnParameters": 2975, + "id": 2977, "nodeType": "Return", - "src": "1396:17:11" + "src": "1396:17:13" } ] }, "documentation": null, - "id": 1602, + "id": 2979, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -912,23 +912,23 @@ "name": "implementation", "nodeType": "FunctionDefinition", "parameters": { - "id": 1595, + "id": 2972, "nodeType": "ParameterList", "parameters": [], - "src": "1325:2:11" + "src": "1325:2:13" }, "payable": false, "returnParameters": { - "id": 1598, + "id": 2975, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1597, + "id": 2974, "name": "", "nodeType": "VariableDeclaration", - "scope": 1602, - "src": "1373:7:11", + "scope": 2979, + "src": "1373:7:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -936,10 +936,10 @@ "typeString": "address" }, "typeName": { - "id": 1596, + "id": 2973, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1373:7:11", + "src": "1373:7:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -949,32 +949,32 @@ "visibility": "internal" } ], - "src": "1372:9:11" + "src": "1372:9:13" }, - "scope": 1611, - "src": "1302:118:11", + "scope": 2988, + "src": "1302:118:13", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1609, + "id": 2986, "nodeType": "Block", - "src": "1505:25:11", + "src": "1505:25:13", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "32", - "id": 1607, + "id": 2984, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1522:1:11", + "src": "1522:1:13", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -982,15 +982,15 @@ }, "value": "2" }, - "functionReturnParameters": 1606, - "id": 1608, + "functionReturnParameters": 2983, + "id": 2985, "nodeType": "Return", - "src": "1515:8:11" + "src": "1515:8:13" } ] }, "documentation": null, - "id": 1610, + "id": 2987, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -998,23 +998,23 @@ "name": "proxyType", "nodeType": "FunctionDefinition", "parameters": { - "id": 1603, + "id": 2980, "nodeType": "ParameterList", "parameters": [], - "src": "1444:2:11" + "src": "1444:2:13" }, "payable": false, "returnParameters": { - "id": 1606, + "id": 2983, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1605, + "id": 2982, "name": "", "nodeType": "VariableDeclaration", - "scope": 1610, - "src": "1492:7:11", + "scope": 2987, + "src": "1492:7:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1022,10 +1022,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1604, + "id": 2981, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1492:7:11", + "src": "1492:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1035,20 +1035,20 @@ "visibility": "internal" } ], - "src": "1491:9:11" + "src": "1491:9:13" }, - "scope": 1611, - "src": "1426:104:11", + "scope": 2988, + "src": "1426:104:13", "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 1612, - "src": "190:1342:11" + "scope": 2989, + "src": "190:1342:13" } ], - "src": "0:1533:11" + "src": "0:1533:13" }, "compiler": { "name": "solc", @@ -1056,5 +1056,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-18T14:44:09.462Z" + "updatedAt": "2018-06-29T09:01:22.083Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ProxyFactory.json b/safe-contracts/build/contracts/ProxyFactory.json index a1eba234d9..685ff592c8 100644 --- a/safe-contracts/build/contracts/ProxyFactory.json +++ b/safe-contracts/build/contracts/ProxyFactory.json @@ -39,52 +39,52 @@ ], "bytecode": "0x608060405234801561001057600080fd5b506104dd806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102a38061020f833901905600608060405234801561001057600080fd5b506040516020806102a38339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff16141515156100e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806101386000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820fb8f7addc79801292900c520af66dd86a1f9d0b643abe5d3ef1ac03eeb2d04080029a165627a7a72305820c742bd15271cf4492803c598458497f17945465dfdcebd0ab4ff208e21d7becf0029", "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102a38061020f833901905600608060405234801561001057600080fd5b506040516020806102a38339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff16141515156100e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806101386000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820fb8f7addc79801292900c520af66dd86a1f9d0b643abe5d3ef1ac03eeb2d04080029a165627a7a72305820c742bd15271cf4492803c598458497f17945465dfdcebd0ab4ff208e21d7becf0029", - "sourceMap": "225:725:12:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:725:12;;;;;;;", - "deployedSourceMap": "225:725:12:-;;;;;;;;;;;;;;;;;;;;;;;;532:416;;8:9:-1;5:2;;;30:1;27;20:12;5:2;532:416:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:11;662:10;652:21;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;652:21:12;644:29;;701:1;687:4;:11;:15;683:237;;;874:1;870;867;860:4;854:11;847:4;841;837:15;834:1;827:5;822:3;817:55;814:62;811:2;;;889:1;886;879:12;811:2;793:114;921:20;935:5;921:20;;;;;;;;;;;;;;;;;;;;;;532:416;;;;:::o;225:725::-;;;;;;;;;;:::o", + "sourceMap": "225:725:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:725:14;;;;;;;", + "deployedSourceMap": "225:725:14:-;;;;;;;;;;;;;;;;;;;;;;;;532:416;;8:9:-1;5:2;;;30:1;27;20:12;5:2;532:416:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:11;662:10;652:21;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;652:21:14;644:29;;701:1;687:4;:11;:15;683:237;;;874:1;870;867;860:4;854:11;847:4;841;837:15;834:1;827:5;822:3;817:55;814:62;811:2;;;889:1;886;879:12;811:2;793:114;921:20;935:5;921:20;;;;;;;;;;;;;;;;;;;;;;532:416;;;;:::o;225:725::-;;;;;;;;;;:::o", "source": "pragma solidity 0.4.24;\nimport \"./Proxy.sol\";\n\n\n/// @title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n/// @author Stefan George - \ncontract ProxyFactory {\n\n event ProxyCreation(Proxy proxy);\n\n /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n /// @param masterCopy Address of master copy.\n /// @param data Payload for message call sent to new proxy contract.\n function createProxy(address masterCopy, bytes data)\n public\n returns (Proxy proxy)\n {\n proxy = new Proxy(masterCopy);\n if (data.length > 0)\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n if eq(call(gas, proxy, 0, add(data, 0x20), mload(data), 0, 0), 0) { revert(0, 0) }\n }\n emit ProxyCreation(proxy);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", "exportedSymbols": { "ProxyFactory": [ - 1646 + 3023 ] }, - "id": 1647, + "id": 3024, "nodeType": "SourceUnit", "nodes": [ { - "id": 1613, + "id": 2990, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:12" + "src": "0:23:14" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "file": "./Proxy.sol", - "id": 1614, + "id": 2991, "nodeType": "ImportDirective", - "scope": 1647, - "sourceUnit": 1612, - "src": "24:21:12", + "scope": 3024, + "sourceUnit": 2989, + "src": "24:21:14", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [ - 1611 + 2988 ], "contractKind": "contract", "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1646, + "id": 3023, "linearizedBaseContracts": [ - 1646 + 3023 ], "name": "ProxyFactory", "nodeType": "ContractDefinition", @@ -92,36 +92,36 @@ { "anonymous": false, "documentation": null, - "id": 1618, + "id": 2995, "name": "ProxyCreation", "nodeType": "EventDefinition", "parameters": { - "id": 1617, + "id": 2994, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1616, + "id": 2993, "indexed": false, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1618, - "src": "274:11:12", + "scope": 2995, + "src": "274:11:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1615, + "id": 2992, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1611, - "src": "274:5:12", + "referencedDeclaration": 2988, + "src": "274:5:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" } }, @@ -129,34 +129,34 @@ "visibility": "internal" } ], - "src": "273:13:12" + "src": "273:13:14" }, - "src": "254:33:12" + "src": "254:33:14" }, { "body": { - "id": 1644, + "id": 3021, "nodeType": "Block", - "src": "634:314:12", + "src": "634:314:14", "statements": [ { "expression": { "argumentTypes": null, - "id": 1632, + "id": 3009, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1627, + "id": 3004, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1625, - "src": "644:5:12", + "referencedDeclaration": 3002, + "src": "644:5:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" } }, @@ -167,12 +167,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1630, + "id": 3007, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1620, - "src": "662:10:12", + "referencedDeclaration": 2997, + "src": "662:10:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -186,31 +186,31 @@ "typeString": "address" } ], - "id": 1629, + "id": 3006, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "652:9:12", + "src": "652:9:14", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1611_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$2988_$", "typeString": "function (address) returns (contract Proxy)" }, "typeName": { "contractScope": null, - "id": 1628, + "id": 3005, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1611, - "src": "656:5:12", + "referencedDeclaration": 2988, + "src": "656:5:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" } } }, - "id": 1631, + "id": 3008, "isConstant": false, "isLValue": false, "isPure": false, @@ -218,21 +218,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "652:21:12", + "src": "652:21:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" } }, - "src": "644:29:12", + "src": "644:29:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" } }, - "id": 1633, + "id": 3010, "nodeType": "ExpressionStatement", - "src": "644:29:12" + "src": "644:29:14" }, { "condition": { @@ -241,7 +241,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1637, + "id": 3014, "isConstant": false, "isLValue": false, "isPure": false, @@ -250,18 +250,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1634, + "id": 3011, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1622, - "src": "687:4:12", + "referencedDeclaration": 2999, + "src": "687:4:14", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1635, + "id": 3012, "isConstant": false, "isLValue": false, "isPure": false, @@ -269,7 +269,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "687:11:12", + "src": "687:11:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -280,14 +280,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1636, + "id": 3013, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "701:1:12", + "src": "701:1:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -295,50 +295,50 @@ }, "value": "0" }, - "src": "687:15:12", + "src": "687:15:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1639, + "id": 3016, "nodeType": "IfStatement", - "src": "683:237:12", + "src": "683:237:14", "trueBody": { "externalReferences": [ { "data": { - "declaration": 1622, + "declaration": 2999, "isOffset": false, "isSlot": false, - "src": "860:4:12", + "src": "860:4:14", "valueSize": 1 } }, { "proxy": { - "declaration": 1625, + "declaration": 3002, "isOffset": false, "isSlot": false, - "src": "827:5:12", + "src": "827:5:14", "valueSize": 1 } }, { "data": { - "declaration": 1622, + "declaration": 2999, "isOffset": false, "isSlot": false, - "src": "841:4:12", + "src": "841:4:14", "valueSize": 1 } } ], - "id": 1638, + "id": 3015, "nodeType": "InlineAssembly", "operations": "{\n if eq(call(gas(), proxy, 0, add(data, 0x20), mload(data), 0, 0), 0)\n {\n revert(0, 0)\n }\n}", - "src": "784:136:12" + "src": "784:136:14" } }, { @@ -347,14 +347,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1641, + "id": 3018, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1625, - "src": "935:5:12", + "referencedDeclaration": 3002, + "src": "935:5:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" } } @@ -362,22 +362,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" } ], - "id": 1640, + "id": 3017, "name": "ProxyCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "921:13:12", + "referencedDeclaration": 2995, + "src": "921:13:14", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1611_$returns$__$", + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$2988_$returns$__$", "typeString": "function (contract Proxy)" } }, - "id": 1642, + "id": 3019, "isConstant": false, "isLValue": false, "isPure": false, @@ -385,20 +385,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "921:20:12", + "src": "921:20:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1643, + "id": 3020, "nodeType": "EmitStatement", - "src": "916:25:12" + "src": "916:25:14" } ] }, "documentation": "@dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @param masterCopy Address of master copy.\n @param data Payload for message call sent to new proxy contract.", - "id": 1645, + "id": 3022, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -406,16 +406,16 @@ "name": "createProxy", "nodeType": "FunctionDefinition", "parameters": { - "id": 1623, + "id": 3000, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1620, + "id": 2997, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1645, - "src": "553:18:12", + "scope": 3022, + "src": "553:18:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -423,10 +423,10 @@ "typeString": "address" }, "typeName": { - "id": 1619, + "id": 2996, "name": "address", "nodeType": "ElementaryTypeName", - "src": "553:7:12", + "src": "553:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -437,11 +437,11 @@ }, { "constant": false, - "id": 1622, + "id": 2999, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1645, - "src": "573:10:12", + "scope": 3022, + "src": "573:10:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -449,10 +449,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1621, + "id": 2998, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "573:5:12", + "src": "573:5:14", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -462,35 +462,35 @@ "visibility": "internal" } ], - "src": "552:32:12" + "src": "552:32:14" }, "payable": false, "returnParameters": { - "id": 1626, + "id": 3003, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1625, + "id": 3002, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1645, - "src": "617:11:12", + "scope": 3022, + "src": "617:11:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1624, + "id": 3001, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1611, - "src": "617:5:12", + "referencedDeclaration": 2988, + "src": "617:5:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" } }, @@ -498,63 +498,63 @@ "visibility": "internal" } ], - "src": "616:13:12" + "src": "616:13:14" }, - "scope": 1646, - "src": "532:416:12", + "scope": 3023, + "src": "532:416:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1647, - "src": "225:725:12" + "scope": 3024, + "src": "225:725:14" } ], - "src": "0:951:12" + "src": "0:951:14" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", "exportedSymbols": { "ProxyFactory": [ - 1646 + 3023 ] }, - "id": 1647, + "id": 3024, "nodeType": "SourceUnit", "nodes": [ { - "id": 1613, + "id": 2990, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:12" + "src": "0:23:14" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "file": "./Proxy.sol", - "id": 1614, + "id": 2991, "nodeType": "ImportDirective", - "scope": 1647, - "sourceUnit": 1612, - "src": "24:21:12", + "scope": 3024, + "sourceUnit": 2989, + "src": "24:21:14", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [ - 1611 + 2988 ], "contractKind": "contract", "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1646, + "id": 3023, "linearizedBaseContracts": [ - 1646 + 3023 ], "name": "ProxyFactory", "nodeType": "ContractDefinition", @@ -562,36 +562,36 @@ { "anonymous": false, "documentation": null, - "id": 1618, + "id": 2995, "name": "ProxyCreation", "nodeType": "EventDefinition", "parameters": { - "id": 1617, + "id": 2994, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1616, + "id": 2993, "indexed": false, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1618, - "src": "274:11:12", + "scope": 2995, + "src": "274:11:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1615, + "id": 2992, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1611, - "src": "274:5:12", + "referencedDeclaration": 2988, + "src": "274:5:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" } }, @@ -599,34 +599,34 @@ "visibility": "internal" } ], - "src": "273:13:12" + "src": "273:13:14" }, - "src": "254:33:12" + "src": "254:33:14" }, { "body": { - "id": 1644, + "id": 3021, "nodeType": "Block", - "src": "634:314:12", + "src": "634:314:14", "statements": [ { "expression": { "argumentTypes": null, - "id": 1632, + "id": 3009, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1627, + "id": 3004, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1625, - "src": "644:5:12", + "referencedDeclaration": 3002, + "src": "644:5:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" } }, @@ -637,12 +637,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1630, + "id": 3007, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1620, - "src": "662:10:12", + "referencedDeclaration": 2997, + "src": "662:10:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -656,31 +656,31 @@ "typeString": "address" } ], - "id": 1629, + "id": 3006, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "652:9:12", + "src": "652:9:14", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1611_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$2988_$", "typeString": "function (address) returns (contract Proxy)" }, "typeName": { "contractScope": null, - "id": 1628, + "id": 3005, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1611, - "src": "656:5:12", + "referencedDeclaration": 2988, + "src": "656:5:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" } } }, - "id": 1631, + "id": 3008, "isConstant": false, "isLValue": false, "isPure": false, @@ -688,21 +688,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "652:21:12", + "src": "652:21:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" } }, - "src": "644:29:12", + "src": "644:29:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" } }, - "id": 1633, + "id": 3010, "nodeType": "ExpressionStatement", - "src": "644:29:12" + "src": "644:29:14" }, { "condition": { @@ -711,7 +711,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1637, + "id": 3014, "isConstant": false, "isLValue": false, "isPure": false, @@ -720,18 +720,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1634, + "id": 3011, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1622, - "src": "687:4:12", + "referencedDeclaration": 2999, + "src": "687:4:14", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1635, + "id": 3012, "isConstant": false, "isLValue": false, "isPure": false, @@ -739,7 +739,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "687:11:12", + "src": "687:11:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -750,14 +750,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1636, + "id": 3013, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "701:1:12", + "src": "701:1:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -765,50 +765,50 @@ }, "value": "0" }, - "src": "687:15:12", + "src": "687:15:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1639, + "id": 3016, "nodeType": "IfStatement", - "src": "683:237:12", + "src": "683:237:14", "trueBody": { "externalReferences": [ { "data": { - "declaration": 1622, + "declaration": 2999, "isOffset": false, "isSlot": false, - "src": "860:4:12", + "src": "860:4:14", "valueSize": 1 } }, { "proxy": { - "declaration": 1625, + "declaration": 3002, "isOffset": false, "isSlot": false, - "src": "827:5:12", + "src": "827:5:14", "valueSize": 1 } }, { "data": { - "declaration": 1622, + "declaration": 2999, "isOffset": false, "isSlot": false, - "src": "841:4:12", + "src": "841:4:14", "valueSize": 1 } } ], - "id": 1638, + "id": 3015, "nodeType": "InlineAssembly", "operations": "{\n if eq(call(gas(), proxy, 0, add(data, 0x20), mload(data), 0, 0), 0)\n {\n revert(0, 0)\n }\n}", - "src": "784:136:12" + "src": "784:136:14" } }, { @@ -817,14 +817,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1641, + "id": 3018, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1625, - "src": "935:5:12", + "referencedDeclaration": 3002, + "src": "935:5:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" } } @@ -832,22 +832,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" } ], - "id": 1640, + "id": 3017, "name": "ProxyCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "921:13:12", + "referencedDeclaration": 2995, + "src": "921:13:14", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1611_$returns$__$", + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$2988_$returns$__$", "typeString": "function (contract Proxy)" } }, - "id": 1642, + "id": 3019, "isConstant": false, "isLValue": false, "isPure": false, @@ -855,20 +855,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "921:20:12", + "src": "921:20:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1643, + "id": 3020, "nodeType": "EmitStatement", - "src": "916:25:12" + "src": "916:25:14" } ] }, "documentation": "@dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @param masterCopy Address of master copy.\n @param data Payload for message call sent to new proxy contract.", - "id": 1645, + "id": 3022, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -876,16 +876,16 @@ "name": "createProxy", "nodeType": "FunctionDefinition", "parameters": { - "id": 1623, + "id": 3000, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1620, + "id": 2997, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1645, - "src": "553:18:12", + "scope": 3022, + "src": "553:18:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -893,10 +893,10 @@ "typeString": "address" }, "typeName": { - "id": 1619, + "id": 2996, "name": "address", "nodeType": "ElementaryTypeName", - "src": "553:7:12", + "src": "553:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -907,11 +907,11 @@ }, { "constant": false, - "id": 1622, + "id": 2999, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1645, - "src": "573:10:12", + "scope": 3022, + "src": "573:10:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -919,10 +919,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1621, + "id": 2998, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "573:5:12", + "src": "573:5:14", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -932,35 +932,35 @@ "visibility": "internal" } ], - "src": "552:32:12" + "src": "552:32:14" }, "payable": false, "returnParameters": { - "id": 1626, + "id": 3003, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1625, + "id": 3002, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1645, - "src": "617:11:12", + "scope": 3022, + "src": "617:11:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1624, + "id": 3001, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1611, - "src": "617:5:12", + "referencedDeclaration": 2988, + "src": "617:5:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1611", + "typeIdentifier": "t_contract$_Proxy_$2988", "typeString": "contract Proxy" } }, @@ -968,20 +968,20 @@ "visibility": "internal" } ], - "src": "616:13:12" + "src": "616:13:14" }, - "scope": 1646, - "src": "532:416:12", + "scope": 3023, + "src": "532:416:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1647, - "src": "225:725:12" + "scope": 3024, + "src": "225:725:14" } ], - "src": "0:951:12" + "src": "0:951:14" }, "compiler": { "name": "solc", @@ -991,28 +991,28 @@ "4": { "events": {}, "links": {}, - "address": "0xe799418aadc40eb8f2081424bd518cdb442d50f4", - "transactionHash": "0x83f7e65d10e5b2ae69f461d86bba33a67a845d65a591749327bd73ce6e28d50b" + "address": "0xb91b58a0e2c5f0737cca7226c0ed41ae0f09af7d", + "transactionHash": "0x6c3db596a40030d69889e70063082d7b7979b3d9637e0a1370f10b1f9ea34772" }, - "1529327661534": { + "1530013596495": { "events": {}, "links": {}, - "address": "0xa0e45d0af3d5daeb68a725e7f2dd544bcce9dd29", - "transactionHash": "0x5db6814a3b712012c000eb4d202e8d481abd2fcd127b1f746e2ab1d88ee523c9" + "address": "0x9c30095bde0e76c19f0184e26dc7179eeab7aa67", + "transactionHash": "0xc52c6b366f718febb548464465461c5974c0f79b7f3f877c111faea2c9fda273" }, - "1529333415702": { + "1530525742205": { "events": {}, "links": {}, - "address": "0xce824fab495ef56405218cce3512b7a73df9e2ca", - "transactionHash": "0x10a89cb87c96bb1becc3a78f1bfdd54f98cdc1cb7e5164e26b1cbbd09d69be8c" + "address": "0x32d2a0e2b94b3282aea36376e601e07c80d89c23", + "transactionHash": "0x75ad1066b44cd801ac66a316dbe4c09e72636d72b70fd62eb647295a0fc5e285" }, - "1529652204341": { + "1530611935189": { "events": {}, "links": {}, - "address": "0xffacf76025eda5f84659135a9d5c2d815dbe1caa", + "address": "0x51d27a55e3375e82e5965a1c266596b0239755f3", "transactionHash": "0x75ad1066b44cd801ac66a316dbe4c09e72636d72b70fd62eb647295a0fc5e285" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-22T07:24:16.243Z" + "updatedAt": "2018-07-03T09:59:18.516Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SecuredTokenTransfer.json b/safe-contracts/build/contracts/SecuredTokenTransfer.json new file mode 100644 index 0000000000..be6217151b --- /dev/null +++ b/safe-contracts/build/contracts/SecuredTokenTransfer.json @@ -0,0 +1,783 @@ +{ + "contractName": "SecuredTokenTransfer", + "abi": [], + "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a723058203704d691dd103c6cda573e69dcd48a2de4d0edf672da44096a50180687c79a770029", + "deployedBytecode": "0x6080604052600080fd00a165627a7a723058203704d691dd103c6cda573e69dcd48a2de4d0edf672da44096a50180687c79a770029", + "sourceMap": "133:1051:15:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;133:1051:15;;;;;;;", + "deployedSourceMap": "133:1051:15:-;;;;;", + "source": "pragma solidity 0.4.24;\n\n\n/// @title SecuredTokenTransfer - Secure token transfer\n/// @author Richard Meissner - \ncontract SecuredTokenTransfer {\n\n /// @dev Transfers a token and returns if it was a success\n /// @param token Token that should be transferred\n /// @param receiver Receiver to whom the token should be transferred\n /// @param amount The amount of tokens that should be transferred\n function transferToken (\n address token, \n address receiver,\n uint256 amount\n )\n internal\n returns (bool transferred)\n {\n bytes memory data = abi.encodeWithSignature(\"transfer(address,uint256)\", receiver, amount);\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let success := call(sub(gas, 10000), token, 0, add(data, 0x20), mload(data), 0, 0)\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize)\n switch returndatasize \n case 0 { transferred := success }\n case 0x20 { transferred := iszero(or(iszero(success), iszero(mload(ptr)))) }\n default { transferred := 0 }\n }\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SecuredTokenTransfer.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SecuredTokenTransfer.sol", + "exportedSymbols": { + "SecuredTokenTransfer": [ + 3048 + ] + }, + "id": 3049, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3025, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:15" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title SecuredTokenTransfer - Secure token transfer\n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 3048, + "linearizedBaseContracts": [ + 3048 + ], + "name": "SecuredTokenTransfer", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3046, + "nodeType": "Block", + "src": "590:592:15", + "statements": [ + { + "assignments": [ + 3037 + ], + "declarations": [ + { + "constant": false, + "id": 3037, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 3047, + "src": "600:17:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3036, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "600:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3044, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "7472616e7366657228616464726573732c75696e7432353629", + "id": 3040, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "644:27:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + "value": "transfer(address,uint256)" + }, + { + "argumentTypes": null, + "id": 3041, + "name": "receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3029, + "src": "673:8:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3042, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3031, + "src": "683:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3038, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4023, + "src": "620:3:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3039, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "620:23:15", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 3043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "620:70:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "600:90:15" + }, + { + "externalReferences": [ + { + "transferred": { + "declaration": 3034, + "isOffset": false, + "isSlot": false, + "src": "1061:11:15", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 3037, + "isOffset": false, + "isSlot": false, + "src": "857:4:15", + "valueSize": 1 + } + }, + { + "token": { + "declaration": 3027, + "isOffset": false, + "isSlot": false, + "src": "824:5:15", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 3037, + "isOffset": false, + "isSlot": false, + "src": "838:4:15", + "valueSize": 1 + } + }, + { + "transferred": { + "declaration": 3034, + "isOffset": false, + "isSlot": false, + "src": "1012:11:15", + "valueSize": 1 + } + }, + { + "transferred": { + "declaration": 3034, + "isOffset": false, + "isSlot": false, + "src": "1148:11:15", + "valueSize": 1 + } + } + ], + "id": 3045, + "nodeType": "InlineAssembly", + "operations": "{\n let success := call(sub(gas(), 10000), token, 0, add(data, 0x20), mload(data), 0, 0)\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize())\n switch returndatasize()\n case 0 {\n transferred := success\n }\n case 0x20 {\n transferred := iszero(or(iszero(success), iszero(mload(ptr))))\n }\n default {\n transferred := 0\n }\n}", + "src": "764:418:15" + } + ] + }, + "documentation": "@dev Transfers a token and returns if it was a success\n @param token Token that should be transferred\n @param receiver Receiver to whom the token should be transferred\n @param amount The amount of tokens that should be transferred", + "id": 3047, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferToken", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3032, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3027, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 3047, + "src": "463:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3026, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "463:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3029, + "name": "receiver", + "nodeType": "VariableDeclaration", + "scope": 3047, + "src": "487:16:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3028, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "487:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3031, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 3047, + "src": "513:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3030, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "513:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "453:80:15" + }, + "payable": false, + "returnParameters": { + "id": 3035, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3034, + "name": "transferred", + "nodeType": "VariableDeclaration", + "scope": 3047, + "src": "568:16:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3033, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "568:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "567:18:15" + }, + "scope": 3048, + "src": "430:752:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 3049, + "src": "133:1051:15" + } + ], + "src": "0:1185:15" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SecuredTokenTransfer.sol", + "exportedSymbols": { + "SecuredTokenTransfer": [ + 3048 + ] + }, + "id": 3049, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3025, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:15" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title SecuredTokenTransfer - Secure token transfer\n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 3048, + "linearizedBaseContracts": [ + 3048 + ], + "name": "SecuredTokenTransfer", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3046, + "nodeType": "Block", + "src": "590:592:15", + "statements": [ + { + "assignments": [ + 3037 + ], + "declarations": [ + { + "constant": false, + "id": 3037, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 3047, + "src": "600:17:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3036, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "600:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3044, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "7472616e7366657228616464726573732c75696e7432353629", + "id": 3040, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "644:27:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + "value": "transfer(address,uint256)" + }, + { + "argumentTypes": null, + "id": 3041, + "name": "receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3029, + "src": "673:8:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3042, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3031, + "src": "683:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3038, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4023, + "src": "620:3:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3039, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "620:23:15", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 3043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "620:70:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "600:90:15" + }, + { + "externalReferences": [ + { + "transferred": { + "declaration": 3034, + "isOffset": false, + "isSlot": false, + "src": "1061:11:15", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 3037, + "isOffset": false, + "isSlot": false, + "src": "857:4:15", + "valueSize": 1 + } + }, + { + "token": { + "declaration": 3027, + "isOffset": false, + "isSlot": false, + "src": "824:5:15", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 3037, + "isOffset": false, + "isSlot": false, + "src": "838:4:15", + "valueSize": 1 + } + }, + { + "transferred": { + "declaration": 3034, + "isOffset": false, + "isSlot": false, + "src": "1012:11:15", + "valueSize": 1 + } + }, + { + "transferred": { + "declaration": 3034, + "isOffset": false, + "isSlot": false, + "src": "1148:11:15", + "valueSize": 1 + } + } + ], + "id": 3045, + "nodeType": "InlineAssembly", + "operations": "{\n let success := call(sub(gas(), 10000), token, 0, add(data, 0x20), mload(data), 0, 0)\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize())\n switch returndatasize()\n case 0 {\n transferred := success\n }\n case 0x20 {\n transferred := iszero(or(iszero(success), iszero(mload(ptr))))\n }\n default {\n transferred := 0\n }\n}", + "src": "764:418:15" + } + ] + }, + "documentation": "@dev Transfers a token and returns if it was a success\n @param token Token that should be transferred\n @param receiver Receiver to whom the token should be transferred\n @param amount The amount of tokens that should be transferred", + "id": 3047, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferToken", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3032, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3027, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 3047, + "src": "463:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3026, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "463:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3029, + "name": "receiver", + "nodeType": "VariableDeclaration", + "scope": 3047, + "src": "487:16:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3028, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "487:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3031, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 3047, + "src": "513:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3030, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "513:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "453:80:15" + }, + "payable": false, + "returnParameters": { + "id": 3035, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3034, + "name": "transferred", + "nodeType": "VariableDeclaration", + "scope": 3047, + "src": "568:16:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3033, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "568:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "567:18:15" + }, + "scope": 3048, + "src": "430:752:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 3049, + "src": "133:1051:15" + } + ], + "src": "0:1185:15" + }, + "compiler": { + "name": "solc", + "version": "0.4.24+commit.e67f0147.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.0", + "updatedAt": "2018-06-29T09:01:22.084Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/SelfAuthorized.json b/safe-contracts/build/contracts/SelfAuthorized.json index a1e9201e8b..3bff3abc7e 100644 --- a/safe-contracts/build/contracts/SelfAuthorized.json +++ b/safe-contracts/build/contracts/SelfAuthorized.json @@ -3,29 +3,29 @@ "abi": [], "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820ec80f1b4520aa5197e4181778f1e2e4fc460002d4a40e2e8e6709c8986067c220029", "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820ec80f1b4520aa5197e4181778f1e2e4fc460002d4a40e2e8e6709c8986067c220029", - "sourceMap": "152:166:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;152:166:8;;;;;;;", - "deployedSourceMap": "152:166:8:-;;;;;", + "sourceMap": "152:166:16:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;152:166:16;;;;;;;", + "deployedSourceMap": "152:166:16:-;;;;;", "source": "pragma solidity 0.4.24;\n\n\n/// @title SelfAuthorized - authorizes current contract to perform actions\n/// @author Richard Meissner - \ncontract SelfAuthorized {\n modifier authorized() {\n require(msg.sender == address(this), \"Method can only be called from this contract\");\n _;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "exportedSymbols": { "SelfAuthorized": [ - 1449 + 3065 ] }, - "id": 1450, + "id": 3066, "nodeType": "SourceUnit", "nodes": [ { - "id": 1434, + "id": 3050, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:8" + "src": "0:23:16" }, { "baseContracts": [], @@ -33,18 +33,18 @@ "contractKind": "contract", "documentation": "@title SelfAuthorized - authorizes current contract to perform actions\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1449, + "id": 3065, "linearizedBaseContracts": [ - 1449 + 3065 ], "name": "SelfAuthorized", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1447, + "id": 3063, "nodeType": "Block", - "src": "204:112:8", + "src": "204:112:16", "statements": [ { "expression": { @@ -56,7 +56,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1442, + "id": 3058, "isConstant": false, "isLValue": false, "isPure": false, @@ -65,18 +65,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1437, + "id": 3053, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1773, - "src": "222:3:8", + "referencedDeclaration": 4036, + "src": "222:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1438, + "id": 3054, "isConstant": false, "isLValue": false, "isPure": false, @@ -84,7 +84,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "222:10:8", + "src": "222:10:16", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -97,14 +97,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1440, + "id": 3056, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1788, - "src": "244:4:8", + "referencedDeclaration": 4055, + "src": "244:4:16", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1449", + "typeIdentifier": "t_contract$_SelfAuthorized_$3065", "typeString": "contract SelfAuthorized" } } @@ -112,24 +112,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SelfAuthorized_$1449", + "typeIdentifier": "t_contract$_SelfAuthorized_$3065", "typeString": "contract SelfAuthorized" } ], - "id": 1439, + "id": 3055, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "236:7:8", + "src": "236:7:16", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1441, + "id": 3057, "isConstant": false, "isLValue": false, "isPure": false, @@ -137,13 +137,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "236:13:8", + "src": "236:13:16", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "222:27:8", + "src": "222:27:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -152,14 +152,14 @@ { "argumentTypes": null, "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207468697320636f6e7472616374", - "id": 1443, + "id": 3059, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "251:46:8", + "src": "251:46:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c4780ef0a1d41d59bac8c510cf9ada421bccf2b90f75a8e4ba2e8c09e8d72733", @@ -179,21 +179,21 @@ "typeString": "literal_string \"Method can only be called from this contract\"" } ], - "id": 1436, + "id": 3052, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "214:7:8", + "referencedDeclaration": 4040, + "src": "214:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1444, + "id": 3060, "isConstant": false, "isLValue": false, "isPure": false, @@ -201,62 +201,62 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "214:84:8", + "src": "214:84:16", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1445, + "id": 3061, "nodeType": "ExpressionStatement", - "src": "214:84:8" + "src": "214:84:16" }, { - "id": 1446, + "id": 3062, "nodeType": "PlaceholderStatement", - "src": "308:1:8" + "src": "308:1:16" } ] }, "documentation": null, - "id": 1448, + "id": 3064, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 1435, + "id": 3051, "nodeType": "ParameterList", "parameters": [], - "src": "201:2:8" + "src": "201:2:16" }, - "src": "182:134:8", + "src": "182:134:16", "visibility": "internal" } ], - "scope": 1450, - "src": "152:166:8" + "scope": 3066, + "src": "152:166:16" } ], - "src": "0:319:8" + "src": "0:319:16" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "exportedSymbols": { "SelfAuthorized": [ - 1449 + 3065 ] }, - "id": 1450, + "id": 3066, "nodeType": "SourceUnit", "nodes": [ { - "id": 1434, + "id": 3050, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:8" + "src": "0:23:16" }, { "baseContracts": [], @@ -264,18 +264,18 @@ "contractKind": "contract", "documentation": "@title SelfAuthorized - authorizes current contract to perform actions\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1449, + "id": 3065, "linearizedBaseContracts": [ - 1449 + 3065 ], "name": "SelfAuthorized", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1447, + "id": 3063, "nodeType": "Block", - "src": "204:112:8", + "src": "204:112:16", "statements": [ { "expression": { @@ -287,7 +287,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1442, + "id": 3058, "isConstant": false, "isLValue": false, "isPure": false, @@ -296,18 +296,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1437, + "id": 3053, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1773, - "src": "222:3:8", + "referencedDeclaration": 4036, + "src": "222:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1438, + "id": 3054, "isConstant": false, "isLValue": false, "isPure": false, @@ -315,7 +315,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "222:10:8", + "src": "222:10:16", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -328,14 +328,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1440, + "id": 3056, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1788, - "src": "244:4:8", + "referencedDeclaration": 4055, + "src": "244:4:16", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1449", + "typeIdentifier": "t_contract$_SelfAuthorized_$3065", "typeString": "contract SelfAuthorized" } } @@ -343,24 +343,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SelfAuthorized_$1449", + "typeIdentifier": "t_contract$_SelfAuthorized_$3065", "typeString": "contract SelfAuthorized" } ], - "id": 1439, + "id": 3055, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "236:7:8", + "src": "236:7:16", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1441, + "id": 3057, "isConstant": false, "isLValue": false, "isPure": false, @@ -368,13 +368,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "236:13:8", + "src": "236:13:16", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "222:27:8", + "src": "222:27:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -383,14 +383,14 @@ { "argumentTypes": null, "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207468697320636f6e7472616374", - "id": 1443, + "id": 3059, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "251:46:8", + "src": "251:46:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c4780ef0a1d41d59bac8c510cf9ada421bccf2b90f75a8e4ba2e8c09e8d72733", @@ -410,21 +410,21 @@ "typeString": "literal_string \"Method can only be called from this contract\"" } ], - "id": 1436, + "id": 3052, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "214:7:8", + "referencedDeclaration": 4040, + "src": "214:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1444, + "id": 3060, "isConstant": false, "isLValue": false, "isPure": false, @@ -432,42 +432,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "214:84:8", + "src": "214:84:16", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1445, + "id": 3061, "nodeType": "ExpressionStatement", - "src": "214:84:8" + "src": "214:84:16" }, { - "id": 1446, + "id": 3062, "nodeType": "PlaceholderStatement", - "src": "308:1:8" + "src": "308:1:16" } ] }, "documentation": null, - "id": 1448, + "id": 3064, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 1435, + "id": 3051, "nodeType": "ParameterList", "parameters": [], - "src": "201:2:8" + "src": "201:2:16" }, - "src": "182:134:8", + "src": "182:134:16", "visibility": "internal" } ], - "scope": 1450, - "src": "152:166:8" + "scope": 3066, + "src": "152:166:16" } ], - "src": "0:319:8" + "src": "0:319:16" }, "compiler": { "name": "solc", @@ -475,5 +475,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-20T07:57:27.027Z" + "updatedAt": "2018-06-29T09:01:22.084Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SignatureValidator.json b/safe-contracts/build/contracts/SignatureValidator.json index 24af72a360..7edb5d1abc 100644 --- a/safe-contracts/build/contracts/SignatureValidator.json +++ b/safe-contracts/build/contracts/SignatureValidator.json @@ -1,90 +1,31 @@ { "contractName": "SignatureValidator", - "abi": [ - { - "constant": true, - "inputs": [ - { - "name": "txHash", - "type": "bytes32" - }, - { - "name": "messageSignature", - "type": "bytes" - }, - { - "name": "pos", - "type": "uint256" - } - ], - "name": "recoverKey", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "signatures", - "type": "bytes" - }, - { - "name": "pos", - "type": "uint256" - } - ], - "name": "signatureSplit", - "outputs": [ - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b506102c1806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806363f44b5914610051578063b817dcc214610112575b600080fd5b34801561005d57600080fd5b506100d06004803603810190808035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001909291905050506101bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561011e57600080fd5b50610183600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610266565b604051808460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001935050505060405180910390f35b6000806000806101cd8686610266565b809350819450829550505050600187848484604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610250573d6000803e3d6000fd5b5050506020604051035193505050509392505050565b60008060008360410260208101860151925060408101860151915060ff604182018701511693505092509250925600a165627a7a72305820008feaa8b6dd7fe4a001ab0d8cd464ff26f4fbcfab9beb4d5b9d08e0da44c46c0029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806363f44b5914610051578063b817dcc214610112575b600080fd5b34801561005d57600080fd5b506100d06004803603810190808035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001909291905050506101bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561011e57600080fd5b50610183600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610266565b604051808460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001935050505060405180910390f35b6000806000806101cd8686610266565b809350819450829550505050600187848484604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610250573d6000803e3d6000fd5b5050506020604051035193505050509392505050565b60008060008360410260208101860151925060408101860151915060ff604182018701511693505092509250925600a165627a7a72305820008feaa8b6dd7fe4a001ab0d8cd464ff26f4fbcfab9beb4d5b9d08e0da44c46c0029", - "sourceMap": "221:1675:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;221:1675:9;;;;;;;", - "deployedSourceMap": "221:1675:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;477:328;;8:9:-1;5:2;;;30:1;27;20:12;5:2;477:328:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;982:912;;8:9:-1;5:2;;;30:1;27;20:12;5:2;982:912:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;477:328;627:7;651;668:9;687;718:37;733:16;751:3;718:14;:37::i;:::-;706:49;;;;;;;;;;;;772:26;782:6;790:1;793;796;772:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;772:26:9;;;;;;;;765:33;;477:328;;;;;;;;:::o;982:912::-;1082:7;1091:9;1102;1402:3;1396:4;1392:14;1464:4;1450:12;1446:23;1434:10;1430:40;1424:47;1419:52;;1529:4;1515:12;1511:23;1499:10;1495:40;1489:47;1484:52;;1873:4;1864;1850:12;1846:23;1834:10;1830:40;1824:47;1820:58;1815:63;;1358:530;;;;;;:::o", - "source": "pragma solidity 0.4.24;\n\n\n/// @title SignatureValidator - recovers a sender from a signature \n/// @author Ricardo Guilherme Schmidt (Status Research & Development GmbH) \n/// @author Richard Meissner - \ncontract SignatureValidator {\n \n /// @dev Recovers address who signed the message \n /// @param txHash operation ethereum signed message hash\n /// @param messageSignature message `txHash` signature\n /// @param pos which signature to read\n function recoverKey (\n bytes32 txHash, \n bytes messageSignature,\n uint256 pos\n )\n pure\n public\n returns (address) \n {\n uint8 v;\n bytes32 r;\n bytes32 s;\n (v, r, s) = signatureSplit(messageSignature, pos);\n return ecrecover(txHash, v, r, s);\n }\n\n /// @dev divides bytes signature into `uint8 v, bytes32 r, bytes32 s`\n /// @param pos which signature to read\n /// @param signatures concatenated rsv signatures\n function signatureSplit(bytes signatures, uint256 pos)\n pure\n public\n returns (uint8 v, bytes32 r, bytes32 s)\n {\n // The signature format is a compact form of:\n // {bytes32 r}{bytes32 s}{uint8 v}\n // Compact means, uint8 is not padded to 32 bytes.\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let signaturePos := mul(0x41, pos)\n r := mload(add(signatures, add(signaturePos, 0x20)))\n s := mload(add(signatures, add(signaturePos, 0x40)))\n // Here we are loading the last 32 bytes, including 31 bytes\n // of 's'. There is no 'mload8' to do this.\n //\n // 'byte' is not working due to the Solidity parser, so lets\n // use the second best option, 'and'\n v := and(mload(add(signatures, add(signaturePos, 0x41))), 0xff)\n }\n }\n}\n", + "abi": [], + "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a723058200cdb9454422435d516dbae78d0a22b0e1372e2fd7734828c7dc1343365c85cd50029", + "deployedBytecode": "0x6080604052600080fd00a165627a7a723058200cdb9454422435d516dbae78d0a22b0e1372e2fd7734828c7dc1343365c85cd50029", + "sourceMap": "221:1679:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;221:1679:17;;;;;;;", + "deployedSourceMap": "221:1679:17:-;;;;;", + "source": "pragma solidity 0.4.24;\n\n\n/// @title SignatureValidator - recovers a sender from a signature \n/// @author Ricardo Guilherme Schmidt (Status Research & Development GmbH) \n/// @author Richard Meissner - \ncontract SignatureValidator {\n \n /// @dev Recovers address who signed the message \n /// @param txHash operation ethereum signed message hash\n /// @param messageSignature message `txHash` signature\n /// @param pos which signature to read\n function recoverKey (\n bytes32 txHash, \n bytes messageSignature,\n uint256 pos\n )\n pure\n internal\n returns (address) \n {\n uint8 v;\n bytes32 r;\n bytes32 s;\n (v, r, s) = signatureSplit(messageSignature, pos);\n return ecrecover(txHash, v, r, s);\n }\n\n /// @dev divides bytes signature into `uint8 v, bytes32 r, bytes32 s`\n /// @param pos which signature to read\n /// @param signatures concatenated rsv signatures\n function signatureSplit(bytes signatures, uint256 pos)\n pure\n internal\n returns (uint8 v, bytes32 r, bytes32 s)\n {\n // The signature format is a compact form of:\n // {bytes32 r}{bytes32 s}{uint8 v}\n // Compact means, uint8 is not padded to 32 bytes.\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let signaturePos := mul(0x41, pos)\n r := mload(add(signatures, add(signaturePos, 0x20)))\n s := mload(add(signatures, add(signaturePos, 0x40)))\n // Here we are loading the last 32 bytes, including 31 bytes\n // of 's'. There is no 'mload8' to do this.\n //\n // 'byte' is not working due to the Solidity parser, so lets\n // use the second best option, 'and'\n v := and(mload(add(signatures, add(signaturePos, 0x41))), 0xff)\n }\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SignatureValidator.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SignatureValidator.sol", "exportedSymbols": { "SignatureValidator": [ - 1505 + 3121 ] }, - "id": 1506, + "id": 3122, "nodeType": "SourceUnit", "nodes": [ { - "id": 1451, + "id": 3067, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:9" + "src": "0:23:17" }, { "baseContracts": [], @@ -92,29 +33,29 @@ "contractKind": "contract", "documentation": "@title SignatureValidator - recovers a sender from a signature \n @author Ricardo Guilherme Schmidt (Status Research & Development GmbH) \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1505, + "id": 3121, "linearizedBaseContracts": [ - 1505 + 3121 ], "name": "SignatureValidator", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1488, + "id": 3104, "nodeType": "Block", - "src": "641:164:9", + "src": "643:164:17", "statements": [ { "assignments": [], "declarations": [ { "constant": false, - "id": 1463, + "id": 3079, "name": "v", "nodeType": "VariableDeclaration", - "scope": 1489, - "src": "651:7:9", + "scope": 3105, + "src": "653:7:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -122,10 +63,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1462, + "id": 3078, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "651:5:9", + "src": "653:5:17", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -135,21 +76,21 @@ "visibility": "internal" } ], - "id": 1464, + "id": 3080, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "651:7:9" + "src": "653:7:17" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1466, + "id": 3082, "name": "r", "nodeType": "VariableDeclaration", - "scope": 1489, - "src": "668:9:9", + "scope": 3105, + "src": "670:9:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -157,10 +98,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1465, + "id": 3081, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "668:7:9", + "src": "670:7:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -170,21 +111,21 @@ "visibility": "internal" } ], - "id": 1467, + "id": 3083, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "668:9:9" + "src": "670:9:17" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1469, + "id": 3085, "name": "s", "nodeType": "VariableDeclaration", - "scope": 1489, - "src": "687:9:9", + "scope": 3105, + "src": "689:9:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -192,10 +133,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1468, + "id": 3084, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "687:7:9", + "src": "689:7:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -205,15 +146,15 @@ "visibility": "internal" } ], - "id": 1470, + "id": 3086, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "687:9:9" + "src": "689:9:17" }, { "expression": { "argumentTypes": null, - "id": 1479, + "id": 3095, "isConstant": false, "isLValue": false, "isPure": false, @@ -223,12 +164,12 @@ "components": [ { "argumentTypes": null, - "id": 1471, + "id": 3087, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1463, - "src": "707:1:9", + "referencedDeclaration": 3079, + "src": "709:1:17", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -236,12 +177,12 @@ }, { "argumentTypes": null, - "id": 1472, + "id": 3088, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1466, - "src": "710:1:9", + "referencedDeclaration": 3082, + "src": "712:1:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -249,26 +190,26 @@ }, { "argumentTypes": null, - "id": 1473, + "id": 3089, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "713:1:9", + "referencedDeclaration": 3085, + "src": "715:1:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], - "id": 1474, + "id": 3090, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", - "src": "706:9:9", + "src": "708:9:17", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$", "typeString": "tuple(uint8,bytes32,bytes32)" @@ -281,12 +222,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1476, + "id": 3092, "name": "messageSignature", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1455, - "src": "733:16:9", + "referencedDeclaration": 3071, + "src": "735:16:17", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -294,12 +235,12 @@ }, { "argumentTypes": null, - "id": 1477, + "id": 3093, "name": "pos", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1457, - "src": "751:3:9", + "referencedDeclaration": 3073, + "src": "753:3:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -317,18 +258,18 @@ "typeString": "uint256" } ], - "id": 1475, + "id": 3091, "name": "signatureSplit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1504, - "src": "718:14:9", + "referencedDeclaration": 3120, + "src": "720:14:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$_t_bytes32_$_t_bytes32_$", "typeString": "function (bytes memory,uint256) pure returns (uint8,bytes32,bytes32)" } }, - "id": 1478, + "id": 3094, "isConstant": false, "isLValue": false, "isPure": false, @@ -336,21 +277,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "718:37:9", + "src": "720:37:17", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$", "typeString": "tuple(uint8,bytes32,bytes32)" } }, - "src": "706:49:9", + "src": "708:49:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1480, + "id": 3096, "nodeType": "ExpressionStatement", - "src": "706:49:9" + "src": "708:49:17" }, { "expression": { @@ -358,12 +299,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1482, + "id": 3098, "name": "txHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1453, - "src": "782:6:9", + "referencedDeclaration": 3069, + "src": "784:6:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -371,12 +312,12 @@ }, { "argumentTypes": null, - "id": 1483, + "id": 3099, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1463, - "src": "790:1:9", + "referencedDeclaration": 3079, + "src": "792:1:17", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -384,12 +325,12 @@ }, { "argumentTypes": null, - "id": 1484, + "id": 3100, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1466, - "src": "793:1:9", + "referencedDeclaration": 3082, + "src": "795:1:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -397,12 +338,12 @@ }, { "argumentTypes": null, - "id": 1485, + "id": 3101, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "796:1:9", + "referencedDeclaration": 3085, + "src": "798:1:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -428,18 +369,18 @@ "typeString": "bytes32" } ], - "id": 1481, + "id": 3097, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1765, - "src": "772:9:9", + "referencedDeclaration": 4028, + "src": "774:9:17", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, - "id": 1486, + "id": 3102, "isConstant": false, "isLValue": false, "isPure": false, @@ -447,21 +388,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "772:26:9", + "src": "774:26:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 1461, - "id": 1487, + "functionReturnParameters": 3077, + "id": 3103, "nodeType": "Return", - "src": "765:33:9" + "src": "767:33:17" } ] }, "documentation": "@dev Recovers address who signed the message \n @param txHash operation ethereum signed message hash\n @param messageSignature message `txHash` signature\n @param pos which signature to read", - "id": 1489, + "id": 3105, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -469,16 +410,16 @@ "name": "recoverKey", "nodeType": "FunctionDefinition", "parameters": { - "id": 1458, + "id": 3074, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1453, + "id": 3069, "name": "txHash", "nodeType": "VariableDeclaration", - "scope": 1489, - "src": "507:14:9", + "scope": 3105, + "src": "507:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -486,10 +427,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1452, + "id": 3068, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "507:7:9", + "src": "507:7:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -500,11 +441,11 @@ }, { "constant": false, - "id": 1455, + "id": 3071, "name": "messageSignature", "nodeType": "VariableDeclaration", - "scope": 1489, - "src": "532:22:9", + "scope": 3105, + "src": "532:22:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -512,10 +453,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1454, + "id": 3070, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "532:5:9", + "src": "532:5:17", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -526,11 +467,11 @@ }, { "constant": false, - "id": 1457, + "id": 3073, "name": "pos", "nodeType": "VariableDeclaration", - "scope": 1489, - "src": "564:11:9", + "scope": 3105, + "src": "564:11:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -538,10 +479,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1456, + "id": 3072, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "564:7:9", + "src": "564:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -551,20 +492,20 @@ "visibility": "internal" } ], - "src": "497:84:9" + "src": "497:84:17" }, "payable": false, "returnParameters": { - "id": 1461, + "id": 3077, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1460, + "id": 3076, "name": "", "nodeType": "VariableDeclaration", - "scope": 1489, - "src": "627:7:9", + "scope": 3105, + "src": "629:7:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -572,10 +513,10 @@ "typeString": "address" }, "typeName": { - "id": 1459, + "id": 3075, "name": "address", "nodeType": "ElementaryTypeName", - "src": "627:7:9", + "src": "629:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -585,95 +526,95 @@ "visibility": "internal" } ], - "src": "626:9:9" + "src": "628:9:17" }, - "scope": 1505, - "src": "477:328:9", + "scope": 3121, + "src": "477:330:17", "stateMutability": "pure", "superFunction": null, - "visibility": "public" + "visibility": "internal" }, { "body": { - "id": 1503, + "id": 3119, "nodeType": "Block", - "src": "1117:777:9", + "src": "1121:777:17", "statements": [ { "externalReferences": [ { "r": { - "declaration": 1498, + "declaration": 3114, "isOffset": false, "isSlot": false, - "src": "1419:1:9", + "src": "1423:1:17", "valueSize": 1 } }, { "pos": { - "declaration": 1493, + "declaration": 3109, "isOffset": false, "isSlot": false, - "src": "1402:3:9", + "src": "1406:3:17", "valueSize": 1 } }, { "signatures": { - "declaration": 1491, + "declaration": 3107, "isOffset": false, "isSlot": false, - "src": "1434:10:9", + "src": "1438:10:17", "valueSize": 1 } }, { "s": { - "declaration": 1500, + "declaration": 3116, "isOffset": false, "isSlot": false, - "src": "1484:1:9", + "src": "1488:1:17", "valueSize": 1 } }, { "signatures": { - "declaration": 1491, + "declaration": 3107, "isOffset": false, "isSlot": false, - "src": "1499:10:9", + "src": "1503:10:17", "valueSize": 1 } }, { "v": { - "declaration": 1496, + "declaration": 3112, "isOffset": false, "isSlot": false, - "src": "1815:1:9", + "src": "1819:1:17", "valueSize": 1 } }, { "signatures": { - "declaration": 1491, + "declaration": 3107, "isOffset": false, "isSlot": false, - "src": "1834:10:9", + "src": "1838:10:17", "valueSize": 1 } } ], - "id": 1502, + "id": 3118, "nodeType": "InlineAssembly", "operations": "{\n let signaturePos := mul(0x41, pos)\n r := mload(add(signatures, add(signaturePos, 0x20)))\n s := mload(add(signatures, add(signaturePos, 0x40)))\n v := and(mload(add(signatures, add(signaturePos, 0x41))), 0xff)\n}", - "src": "1349:545:9" + "src": "1353:545:17" } ] }, "documentation": "@dev divides bytes signature into `uint8 v, bytes32 r, bytes32 s`\n @param pos which signature to read\n @param signatures concatenated rsv signatures", - "id": 1504, + "id": 3120, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -681,16 +622,16 @@ "name": "signatureSplit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1494, + "id": 3110, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1491, + "id": 3107, "name": "signatures", "nodeType": "VariableDeclaration", - "scope": 1504, - "src": "1006:16:9", + "scope": 3120, + "src": "1008:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -698,10 +639,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1490, + "id": 3106, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1006:5:9", + "src": "1008:5:17", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -712,11 +653,11 @@ }, { "constant": false, - "id": 1493, + "id": 3109, "name": "pos", "nodeType": "VariableDeclaration", - "scope": 1504, - "src": "1024:11:9", + "scope": 3120, + "src": "1026:11:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -724,10 +665,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1492, + "id": 3108, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1024:7:9", + "src": "1026:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -737,20 +678,20 @@ "visibility": "internal" } ], - "src": "1005:31:9" + "src": "1007:31:17" }, "payable": false, "returnParameters": { - "id": 1501, + "id": 3117, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1496, + "id": 3112, "name": "v", "nodeType": "VariableDeclaration", - "scope": 1504, - "src": "1082:7:9", + "scope": 3120, + "src": "1086:7:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -758,10 +699,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1495, + "id": 3111, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1082:5:9", + "src": "1086:5:17", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -772,11 +713,11 @@ }, { "constant": false, - "id": 1498, + "id": 3114, "name": "r", "nodeType": "VariableDeclaration", - "scope": 1504, - "src": "1091:9:9", + "scope": 3120, + "src": "1095:9:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -784,10 +725,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1497, + "id": 3113, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1091:7:9", + "src": "1095:7:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -798,11 +739,11 @@ }, { "constant": false, - "id": 1500, + "id": 3116, "name": "s", "nodeType": "VariableDeclaration", - "scope": 1504, - "src": "1102:9:9", + "scope": 3120, + "src": "1106:9:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -810,10 +751,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1499, + "id": 3115, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1102:7:9", + "src": "1106:7:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -823,40 +764,40 @@ "visibility": "internal" } ], - "src": "1081:31:9" + "src": "1085:31:17" }, - "scope": 1505, - "src": "982:912:9", + "scope": 3121, + "src": "984:914:17", "stateMutability": "pure", "superFunction": null, - "visibility": "public" + "visibility": "internal" } ], - "scope": 1506, - "src": "221:1675:9" + "scope": 3122, + "src": "221:1679:17" } ], - "src": "0:1897:9" + "src": "0:1901:17" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SignatureValidator.sol", "exportedSymbols": { "SignatureValidator": [ - 1505 + 3121 ] }, - "id": 1506, + "id": 3122, "nodeType": "SourceUnit", "nodes": [ { - "id": 1451, + "id": 3067, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:9" + "src": "0:23:17" }, { "baseContracts": [], @@ -864,29 +805,29 @@ "contractKind": "contract", "documentation": "@title SignatureValidator - recovers a sender from a signature \n @author Ricardo Guilherme Schmidt (Status Research & Development GmbH) \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1505, + "id": 3121, "linearizedBaseContracts": [ - 1505 + 3121 ], "name": "SignatureValidator", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1488, + "id": 3104, "nodeType": "Block", - "src": "641:164:9", + "src": "643:164:17", "statements": [ { "assignments": [], "declarations": [ { "constant": false, - "id": 1463, + "id": 3079, "name": "v", "nodeType": "VariableDeclaration", - "scope": 1489, - "src": "651:7:9", + "scope": 3105, + "src": "653:7:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -894,10 +835,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1462, + "id": 3078, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "651:5:9", + "src": "653:5:17", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -907,21 +848,21 @@ "visibility": "internal" } ], - "id": 1464, + "id": 3080, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "651:7:9" + "src": "653:7:17" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1466, + "id": 3082, "name": "r", "nodeType": "VariableDeclaration", - "scope": 1489, - "src": "668:9:9", + "scope": 3105, + "src": "670:9:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -929,10 +870,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1465, + "id": 3081, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "668:7:9", + "src": "670:7:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -942,21 +883,21 @@ "visibility": "internal" } ], - "id": 1467, + "id": 3083, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "668:9:9" + "src": "670:9:17" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1469, + "id": 3085, "name": "s", "nodeType": "VariableDeclaration", - "scope": 1489, - "src": "687:9:9", + "scope": 3105, + "src": "689:9:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -964,10 +905,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1468, + "id": 3084, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "687:7:9", + "src": "689:7:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -977,15 +918,15 @@ "visibility": "internal" } ], - "id": 1470, + "id": 3086, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "687:9:9" + "src": "689:9:17" }, { "expression": { "argumentTypes": null, - "id": 1479, + "id": 3095, "isConstant": false, "isLValue": false, "isPure": false, @@ -995,12 +936,12 @@ "components": [ { "argumentTypes": null, - "id": 1471, + "id": 3087, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1463, - "src": "707:1:9", + "referencedDeclaration": 3079, + "src": "709:1:17", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1008,12 +949,12 @@ }, { "argumentTypes": null, - "id": 1472, + "id": 3088, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1466, - "src": "710:1:9", + "referencedDeclaration": 3082, + "src": "712:1:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1021,26 +962,26 @@ }, { "argumentTypes": null, - "id": 1473, + "id": 3089, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "713:1:9", + "referencedDeclaration": 3085, + "src": "715:1:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], - "id": 1474, + "id": 3090, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", - "src": "706:9:9", + "src": "708:9:17", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$", "typeString": "tuple(uint8,bytes32,bytes32)" @@ -1053,12 +994,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1476, + "id": 3092, "name": "messageSignature", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1455, - "src": "733:16:9", + "referencedDeclaration": 3071, + "src": "735:16:17", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1066,12 +1007,12 @@ }, { "argumentTypes": null, - "id": 1477, + "id": 3093, "name": "pos", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1457, - "src": "751:3:9", + "referencedDeclaration": 3073, + "src": "753:3:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1089,18 +1030,18 @@ "typeString": "uint256" } ], - "id": 1475, + "id": 3091, "name": "signatureSplit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1504, - "src": "718:14:9", + "referencedDeclaration": 3120, + "src": "720:14:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$_t_bytes32_$_t_bytes32_$", "typeString": "function (bytes memory,uint256) pure returns (uint8,bytes32,bytes32)" } }, - "id": 1478, + "id": 3094, "isConstant": false, "isLValue": false, "isPure": false, @@ -1108,21 +1049,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "718:37:9", + "src": "720:37:17", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$", "typeString": "tuple(uint8,bytes32,bytes32)" } }, - "src": "706:49:9", + "src": "708:49:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1480, + "id": 3096, "nodeType": "ExpressionStatement", - "src": "706:49:9" + "src": "708:49:17" }, { "expression": { @@ -1130,12 +1071,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1482, + "id": 3098, "name": "txHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1453, - "src": "782:6:9", + "referencedDeclaration": 3069, + "src": "784:6:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1143,12 +1084,12 @@ }, { "argumentTypes": null, - "id": 1483, + "id": 3099, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1463, - "src": "790:1:9", + "referencedDeclaration": 3079, + "src": "792:1:17", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1156,12 +1097,12 @@ }, { "argumentTypes": null, - "id": 1484, + "id": 3100, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1466, - "src": "793:1:9", + "referencedDeclaration": 3082, + "src": "795:1:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1169,12 +1110,12 @@ }, { "argumentTypes": null, - "id": 1485, + "id": 3101, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "796:1:9", + "referencedDeclaration": 3085, + "src": "798:1:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1200,18 +1141,18 @@ "typeString": "bytes32" } ], - "id": 1481, + "id": 3097, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1765, - "src": "772:9:9", + "referencedDeclaration": 4028, + "src": "774:9:17", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, - "id": 1486, + "id": 3102, "isConstant": false, "isLValue": false, "isPure": false, @@ -1219,21 +1160,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "772:26:9", + "src": "774:26:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 1461, - "id": 1487, + "functionReturnParameters": 3077, + "id": 3103, "nodeType": "Return", - "src": "765:33:9" + "src": "767:33:17" } ] }, "documentation": "@dev Recovers address who signed the message \n @param txHash operation ethereum signed message hash\n @param messageSignature message `txHash` signature\n @param pos which signature to read", - "id": 1489, + "id": 3105, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -1241,16 +1182,16 @@ "name": "recoverKey", "nodeType": "FunctionDefinition", "parameters": { - "id": 1458, + "id": 3074, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1453, + "id": 3069, "name": "txHash", "nodeType": "VariableDeclaration", - "scope": 1489, - "src": "507:14:9", + "scope": 3105, + "src": "507:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1258,10 +1199,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1452, + "id": 3068, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "507:7:9", + "src": "507:7:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1272,11 +1213,11 @@ }, { "constant": false, - "id": 1455, + "id": 3071, "name": "messageSignature", "nodeType": "VariableDeclaration", - "scope": 1489, - "src": "532:22:9", + "scope": 3105, + "src": "532:22:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1284,10 +1225,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1454, + "id": 3070, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "532:5:9", + "src": "532:5:17", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1298,11 +1239,11 @@ }, { "constant": false, - "id": 1457, + "id": 3073, "name": "pos", "nodeType": "VariableDeclaration", - "scope": 1489, - "src": "564:11:9", + "scope": 3105, + "src": "564:11:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1310,10 +1251,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1456, + "id": 3072, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "564:7:9", + "src": "564:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1323,20 +1264,20 @@ "visibility": "internal" } ], - "src": "497:84:9" + "src": "497:84:17" }, "payable": false, "returnParameters": { - "id": 1461, + "id": 3077, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1460, + "id": 3076, "name": "", "nodeType": "VariableDeclaration", - "scope": 1489, - "src": "627:7:9", + "scope": 3105, + "src": "629:7:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1344,10 +1285,10 @@ "typeString": "address" }, "typeName": { - "id": 1459, + "id": 3075, "name": "address", "nodeType": "ElementaryTypeName", - "src": "627:7:9", + "src": "629:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1357,95 +1298,95 @@ "visibility": "internal" } ], - "src": "626:9:9" + "src": "628:9:17" }, - "scope": 1505, - "src": "477:328:9", + "scope": 3121, + "src": "477:330:17", "stateMutability": "pure", "superFunction": null, - "visibility": "public" + "visibility": "internal" }, { "body": { - "id": 1503, + "id": 3119, "nodeType": "Block", - "src": "1117:777:9", + "src": "1121:777:17", "statements": [ { "externalReferences": [ { "r": { - "declaration": 1498, + "declaration": 3114, "isOffset": false, "isSlot": false, - "src": "1419:1:9", + "src": "1423:1:17", "valueSize": 1 } }, { "pos": { - "declaration": 1493, + "declaration": 3109, "isOffset": false, "isSlot": false, - "src": "1402:3:9", + "src": "1406:3:17", "valueSize": 1 } }, { "signatures": { - "declaration": 1491, + "declaration": 3107, "isOffset": false, "isSlot": false, - "src": "1434:10:9", + "src": "1438:10:17", "valueSize": 1 } }, { "s": { - "declaration": 1500, + "declaration": 3116, "isOffset": false, "isSlot": false, - "src": "1484:1:9", + "src": "1488:1:17", "valueSize": 1 } }, { "signatures": { - "declaration": 1491, + "declaration": 3107, "isOffset": false, "isSlot": false, - "src": "1499:10:9", + "src": "1503:10:17", "valueSize": 1 } }, { "v": { - "declaration": 1496, + "declaration": 3112, "isOffset": false, "isSlot": false, - "src": "1815:1:9", + "src": "1819:1:17", "valueSize": 1 } }, { "signatures": { - "declaration": 1491, + "declaration": 3107, "isOffset": false, "isSlot": false, - "src": "1834:10:9", + "src": "1838:10:17", "valueSize": 1 } } ], - "id": 1502, + "id": 3118, "nodeType": "InlineAssembly", "operations": "{\n let signaturePos := mul(0x41, pos)\n r := mload(add(signatures, add(signaturePos, 0x20)))\n s := mload(add(signatures, add(signaturePos, 0x40)))\n v := and(mload(add(signatures, add(signaturePos, 0x41))), 0xff)\n}", - "src": "1349:545:9" + "src": "1353:545:17" } ] }, "documentation": "@dev divides bytes signature into `uint8 v, bytes32 r, bytes32 s`\n @param pos which signature to read\n @param signatures concatenated rsv signatures", - "id": 1504, + "id": 3120, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -1453,16 +1394,16 @@ "name": "signatureSplit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1494, + "id": 3110, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1491, + "id": 3107, "name": "signatures", "nodeType": "VariableDeclaration", - "scope": 1504, - "src": "1006:16:9", + "scope": 3120, + "src": "1008:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1470,10 +1411,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1490, + "id": 3106, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1006:5:9", + "src": "1008:5:17", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1484,11 +1425,11 @@ }, { "constant": false, - "id": 1493, + "id": 3109, "name": "pos", "nodeType": "VariableDeclaration", - "scope": 1504, - "src": "1024:11:9", + "scope": 3120, + "src": "1026:11:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1496,10 +1437,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1492, + "id": 3108, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1024:7:9", + "src": "1026:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1509,20 +1450,20 @@ "visibility": "internal" } ], - "src": "1005:31:9" + "src": "1007:31:17" }, "payable": false, "returnParameters": { - "id": 1501, + "id": 3117, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1496, + "id": 3112, "name": "v", "nodeType": "VariableDeclaration", - "scope": 1504, - "src": "1082:7:9", + "scope": 3120, + "src": "1086:7:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1530,10 +1471,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1495, + "id": 3111, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1082:5:9", + "src": "1086:5:17", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1544,11 +1485,11 @@ }, { "constant": false, - "id": 1498, + "id": 3114, "name": "r", "nodeType": "VariableDeclaration", - "scope": 1504, - "src": "1091:9:9", + "scope": 3120, + "src": "1095:9:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1556,10 +1497,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1497, + "id": 3113, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1091:7:9", + "src": "1095:7:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1570,11 +1511,11 @@ }, { "constant": false, - "id": 1500, + "id": 3116, "name": "s", "nodeType": "VariableDeclaration", - "scope": 1504, - "src": "1102:9:9", + "scope": 3120, + "src": "1106:9:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1582,10 +1523,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1499, + "id": 3115, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1102:7:9", + "src": "1106:7:17", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1595,20 +1536,20 @@ "visibility": "internal" } ], - "src": "1081:31:9" + "src": "1085:31:17" }, - "scope": 1505, - "src": "982:912:9", + "scope": 3121, + "src": "984:914:17", "stateMutability": "pure", "superFunction": null, - "visibility": "public" + "visibility": "internal" } ], - "scope": 1506, - "src": "221:1675:9" + "scope": 3122, + "src": "221:1679:17" } ], - "src": "0:1897:9" + "src": "0:1901:17" }, "compiler": { "name": "solc", @@ -1616,5 +1557,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-20T07:57:27.028Z" + "updatedAt": "2018-06-29T09:01:22.084Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SocialRecoveryModule.json b/safe-contracts/build/contracts/SocialRecoveryModule.json index ec04402fd8..57b5c4e1a2 100644 --- a/safe-contracts/build/contracts/SocialRecoveryModule.json +++ b/safe-contracts/build/contracts/SocialRecoveryModule.json @@ -8,7 +8,7 @@ "outputs": [ { "name": "", - "type": "uint8" + "type": "uint256" } ], "payable": false, @@ -160,7 +160,7 @@ }, { "name": "_threshold", - "type": "uint8" + "type": "uint256" } ], "name": "setup", @@ -244,73 +244,73 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506117d0806100206000396000f3006080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633cf5b309146100d557806342cde4e814610148578063481c6a751461017957806368125a1b146101d057806377231eaa1461022b57806379716e43146102ae5780637de7edef146102df5780639ca89d0d14610322578063a3f4df7e1461036b578063ae68b056146103fb578063b79ffaff14610480578063ce146828146104e9578063e52cb36a14610556578063ffa1ad741461059f575b600080fd5b3480156100e157600080fd5b5061014660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff16906020019092919050505061062f565b005b34801561015457600080fd5b5061015d610994565b604051808260ff1660ff16815260200191505060405180910390f35b34801561018557600080fd5b5061018e6109a7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101dc57600080fd5b50610211600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109cd565b604051808215151515815260200191505060405180910390f35b34801561023757600080fd5b506102ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109ed565b005b3480156102ba57600080fd5b506102dd6004803603810190808035600019169060200190929190505050610f9e565b005b3480156102eb57600080fd5b50610320600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611197565b005b34801561032e57600080fd5b50610351600480360381019080803560001916906020019092919050505061137a565b604051808215151515815260200191505060405180910390f35b34801561037757600080fd5b50610380611479565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c05780820151818401526020810190506103a5565b50505050905090810190601f1680156103ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040757600080fd5b50610462600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506114b2565b60405180826000191660001916815260200191505060405180910390f35b34801561048c57600080fd5b506104cf6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061151e565b604051808215151515815260200191505060405180910390f35b3480156104f557600080fd5b506105146004803603810190808035906020019092919050505061154d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056257600080fd5b50610585600480360381019080803560001916906020019092919050505061158b565b604051808215151515815260200191505060405180910390f35b3480156105ab57600080fd5b506105b46115ab565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105f45780820151818401526020810190506105d9565b50505050905090810190601f1680156106215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008083518360ff16111515156106d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f5468726573686f6c642063616e6e6f742065786365656420667269656e64732081526020017f636f756e7400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60028360ff1610151515610750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4174206c65617374203220667269656e6473207265717569726564000000000081525060200191505060405180910390fd5b6107586115e4565b600091505b835182101561095c57838281518110151561077457fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561080f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c696420667269656e6420616464726573732070726f76696465640081525060200191505060405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156108f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4475706c696361746520667269656e6420616464726573732070726f7669646581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818060010192505061075d565b83600290805190602001906109729291906116d7565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60606000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610ad8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642062792061206681526020017f7269656e6400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b848484604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200193505050506040516020818303038152906040527fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509150610c05826114b2565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610ca5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5265636f7665727920616c72656164792065786563757465640000000000000081525060200191505060405180910390fd5b610cae8161137a565b1515610d48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f5265636f7665727920686173206e6f7420656e6f75676820636f6e6669726d6181526020017f74696f6e7300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610e5957fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610e99578082015181840152602081019050610e7e565b50505050905090810190601f168015610ec65780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050506040513d6020811015610f1257600080fd5b81019080805190602001909291905050501515610f97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f742065786563757465207265636f7665727900000000000081525060200191505060405180910390fd5b5050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611085576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642062792061206681526020017f7269656e6400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515611123576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5265636f7665727920616c72656164792065786563757465640000000000000081525060200191505060405180910390fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611282576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515611337576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b60028054905081101561146d5760056000856000191660001916815260200190815260200160002060006002838154811015156113bc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561143d5781806001019250505b600160149054906101000a900460ff1660ff168214156114605760019250611472565b8080600101915050611383565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b6020831015156114ea57805182526020820191506020810190506020830392506114c5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60028181548110151561155c57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b828054828255906000526020600020908101928215611750579160200282015b8281111561174f5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906116f7565b5b50905061175d9190611761565b5090565b6117a191905b8082111561179d57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611767565b5090565b905600a165627a7a72305820f1f6099fda98550b4d5ae1a04d18e83b8da4cebe4bbae1404aa3b05b167841d70029", - "deployedBytecode": "0x6080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633cf5b309146100d557806342cde4e814610148578063481c6a751461017957806368125a1b146101d057806377231eaa1461022b57806379716e43146102ae5780637de7edef146102df5780639ca89d0d14610322578063a3f4df7e1461036b578063ae68b056146103fb578063b79ffaff14610480578063ce146828146104e9578063e52cb36a14610556578063ffa1ad741461059f575b600080fd5b3480156100e157600080fd5b5061014660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff16906020019092919050505061062f565b005b34801561015457600080fd5b5061015d610994565b604051808260ff1660ff16815260200191505060405180910390f35b34801561018557600080fd5b5061018e6109a7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101dc57600080fd5b50610211600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109cd565b604051808215151515815260200191505060405180910390f35b34801561023757600080fd5b506102ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109ed565b005b3480156102ba57600080fd5b506102dd6004803603810190808035600019169060200190929190505050610f9e565b005b3480156102eb57600080fd5b50610320600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611197565b005b34801561032e57600080fd5b50610351600480360381019080803560001916906020019092919050505061137a565b604051808215151515815260200191505060405180910390f35b34801561037757600080fd5b50610380611479565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c05780820151818401526020810190506103a5565b50505050905090810190601f1680156103ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040757600080fd5b50610462600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506114b2565b60405180826000191660001916815260200191505060405180910390f35b34801561048c57600080fd5b506104cf6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061151e565b604051808215151515815260200191505060405180910390f35b3480156104f557600080fd5b506105146004803603810190808035906020019092919050505061154d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056257600080fd5b50610585600480360381019080803560001916906020019092919050505061158b565b604051808215151515815260200191505060405180910390f35b3480156105ab57600080fd5b506105b46115ab565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105f45780820151818401526020810190506105d9565b50505050905090810190601f1680156106215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008083518360ff16111515156106d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f5468726573686f6c642063616e6e6f742065786365656420667269656e64732081526020017f636f756e7400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60028360ff1610151515610750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4174206c65617374203220667269656e6473207265717569726564000000000081525060200191505060405180910390fd5b6107586115e4565b600091505b835182101561095c57838281518110151561077457fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561080f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c696420667269656e6420616464726573732070726f76696465640081525060200191505060405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156108f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4475706c696361746520667269656e6420616464726573732070726f7669646581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818060010192505061075d565b83600290805190602001906109729291906116d7565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60606000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610ad8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642062792061206681526020017f7269656e6400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b848484604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200193505050506040516020818303038152906040527fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509150610c05826114b2565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610ca5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5265636f7665727920616c72656164792065786563757465640000000000000081525060200191505060405180910390fd5b610cae8161137a565b1515610d48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f5265636f7665727920686173206e6f7420656e6f75676820636f6e6669726d6181526020017f74696f6e7300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610e5957fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610e99578082015181840152602081019050610e7e565b50505050905090810190601f168015610ec65780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050506040513d6020811015610f1257600080fd5b81019080805190602001909291905050501515610f97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f742065786563757465207265636f7665727900000000000081525060200191505060405180910390fd5b5050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611085576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642062792061206681526020017f7269656e6400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515611123576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5265636f7665727920616c72656164792065786563757465640000000000000081525060200191505060405180910390fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611282576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515611337576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b60028054905081101561146d5760056000856000191660001916815260200190815260200160002060006002838154811015156113bc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561143d5781806001019250505b600160149054906101000a900460ff1660ff168214156114605760019250611472565b8080600101915050611383565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b6020831015156114ea57805182526020820191506020810190506020830392506114c5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60028181548110151561155c57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b828054828255906000526020600020908101928215611750579160200282015b8281111561174f5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906116f7565b5b50905061175d9190611761565b5090565b6117a191905b8082111561179d57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611767565b5090565b905600a165627a7a72305820f1f6099fda98550b4d5ae1a04d18e83b8da4cebe4bbae1404aa3b05b167841d70029", - "sourceMap": "306:3656:19:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;306:3656:19;;;;;;;", - "deployedSourceMap": "306:3656:19:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1216:638;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1216:638:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;460:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;460:22:19;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;583:41:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;583:41:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2510:625;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2510:625:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1967:210;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1967:210:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;3296:405:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3296:405:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;353:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:54:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;353:54:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3830:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3830:130:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;827:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;827:65:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;488:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;488:24:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;692:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;692:43:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;413:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;413:40:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;413:40:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1216:638;1511:9;1566:14;1320:8;:15;1306:10;:29;;;;1298:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1409:1;1395:10;:15;;;;1387:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1452:12;:10;:12::i;:::-;1523:1;1511:13;;1506:282;1530:8;:15;1526:1;:19;1506:282;;;1583:8;1592:1;1583:11;;;;;;;;;;;;;;;;;;1566:28;;1626:1;1616:6;:11;;;;1608:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1686:8;:16;1695:6;1686:16;;;;;;;;;;;;;;;;;;;;;;;;;1685:17;1677:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1773:4;1754:8;:16;1763:6;1754:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1547:3;;;;;;;1506:282;;;1807:8;1797:7;:18;;;;;;;;;;;;:::i;:::-;;1837:10;1825:9;;:22;;;;;;;;;;;;;;;;;;1216:638;;;;:::o;460:22::-;;;;;;;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;583:41:19:-;;;;;;;;;;;;;;;;;;;;;;:::o;2510:625::-;2636:17;2758:16;939:8;:20;948:10;939:20;;;;;;;;;;;;;;;;;;;;;;;;;931:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2718:9;2729:8;2739;2656:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2656:92:19;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2656:92:19;2636:112;;2777:17;2789:4;2777:11;:17::i;:::-;2758:36;;2813:10;:20;2824:8;2813:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2812:21;2804:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2881:38;2910:8;2881:28;:38::i;:::-;2873:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2994:4;2971:10;:20;2982:8;2971:20;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3016:7;;;;;;;;;;;:33;;;3058:7;;;;;;;;;;;3068:1;3071:4;3077:19;3016:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3016:81:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3016:81:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3016:81:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3016:81:19;;;;;;;;;;;;;;;;3008:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2510:625;;;;;:::o;1967:210::-;939:8;:20;948:10;939:20;;;;;;;;;;;;;;;;;;;;;;;;;931:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:10;:20;2081:8;2070:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2069:21;2061:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2166:4;2130:11;:21;2142:8;2130:21;;;;;;;;;;;;;;;;;:33;2152:10;2130:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1967:210;:::o;626:248:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;3296:405:19:-;3397:4;3417:25;3457:9;3469:1;3457:13;;3452:221;3476:7;:14;;;;3472:1;:18;3452:221;;;3515:11;:21;3527:8;3515:21;;;;;;;;;;;;;;;;;:33;3537:7;3545:1;3537:10;;;;;;;;;;;;;;;;;;;;;;;;;;;3515:33;;;;;;;;;;;;;;;;;;;;;;;;;3511:74;;;3566:19;;;;;;;3511:74;3624:9;;;;;;;;;;;3603:30;;:17;:30;3599:63;;;3658:4;3651:11;;;;3599:63;3492:3;;;;;;;3452:221;;;3689:5;3682:12;;3296:405;;;;;;:::o;353:54::-;;;;;;;;;;;;;;;;;;;;:::o;3830:130::-;3908:7;3948:4;3938:15;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3938:15:19;;;;;;;;;;;;;;;;3931:22;;3830:130;;;:::o;827:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;488:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;692:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;413:40::-;;;;;;;;;;;;;;;;;;;;:::o;434:300:7:-;648:1;636:7;;;;;;;;;;;628:21;;;620:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:10;692:7;;:35;;;;;;;;;;;;;;;;;;434:300::o;306:3656:19:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.24;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n/// @author Stefan George - \ncontract SocialRecoveryModule is Module {\n\n string public constant NAME = \"Social Recovery Module\";\n string public constant VERSION = \"0.0.1\";\n\n uint8 public threshold;\n address[] public friends;\n\n // isFriend mapping maps friend's address to friend status.\n mapping (address => bool) public isFriend;\n // isExecuted mapping maps data hash to execution status.\n mapping (bytes32 => bool) public isExecuted;\n // isConfirmed mapping maps data hash to friend's address to confirmation status.\n mapping (bytes32 => mapping (address => bool)) public isConfirmed;\n\n modifier onlyFriend() {\n require(isFriend[msg.sender], \"Method can only be called by a friend\");\n _;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function setup(address[] _friends, uint8 _threshold)\n public\n {\n require(_threshold <= _friends.length, \"Threshold cannot exceed friends count\");\n require(_threshold >= 2, \"At least 2 friends required\");\n setManager();\n // Set allowed friends.\n for (uint256 i = 0; i < _friends.length; i++) {\n address friend = _friends[i];\n require(friend != 0, \"Invalid friend address provided\");\n require(!isFriend[friend], \"Duplicate friend address provided\");\n isFriend[friend] = true;\n }\n friends = _friends;\n threshold = _threshold;\n }\n\n /// @dev Allows a friend to confirm a Safe transaction.\n /// @param dataHash Safe transaction hash.\n function confirmTransaction(bytes32 dataHash)\n public\n onlyFriend\n {\n require(!isExecuted[dataHash], \"Recovery already executed\");\n isConfirmed[dataHash][msg.sender] = true;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n /// @return Returns if transaction can be executed.\n function recoverAccess(address prevOwner, address oldOwner, address newOwner)\n public\n onlyFriend\n {\n bytes memory data = abi.encodeWithSignature(\"swapOwner(address,address,address)\", prevOwner, oldOwner, newOwner);\n bytes32 dataHash = getDataHash(data);\n require(!isExecuted[dataHash], \"Recovery already executed\");\n require(isConfirmedByRequiredFriends(dataHash), \"Recovery has not enough confirmations\");\n isExecuted[dataHash] = true;\n require(manager.execTransactionFromModule(address(manager), 0, data, Enum.Operation.Call), \"Could not execute recovery\");\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param dataHash Data hash.\n /// @return Confirmation status.\n function isConfirmedByRequiredFriends(bytes32 dataHash)\n public\n view\n returns (bool)\n {\n uint256 confirmationCount;\n for (uint256 i = 0; i < friends.length; i++) {\n if (isConfirmed[dataHash][friends[i]])\n confirmationCount++;\n if (confirmationCount == threshold)\n return true;\n }\n return false;\n }\n\n /// @dev Returns hash of data encoding owner replacement.\n /// @param data Data payload.\n /// @return Data hash.\n function getDataHash(bytes data)\n public\n pure\n returns (bytes32)\n {\n return keccak256(data);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50611790806100206000396000f3006080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806342cde4e8146100d5578063481c6a75146101005780634ab884271461015757806368125a1b146101c757806377231eaa1461022257806379716e43146102a55780637de7edef146102d65780639ca89d0d14610319578063a3f4df7e14610362578063ae68b056146103f2578063b79ffaff14610477578063ce146828146104e0578063e52cb36a1461054d578063ffa1ad7414610596575b600080fd5b3480156100e157600080fd5b506100ea610626565b6040518082815260200191505060405180910390f35b34801561010c57600080fd5b5061011561062c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016357600080fd5b506101c56004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190929190505050610652565b005b3480156101d357600080fd5b50610208600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061099d565b604051808215151515815260200191505060405180910390f35b34801561022e57600080fd5b506102a3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109bd565b005b3480156102b157600080fd5b506102d46004803603810190808035600019169060200190929190505050610f6e565b005b3480156102e257600080fd5b50610317600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611167565b005b34801561032557600080fd5b50610348600480360381019080803560001916906020019092919050505061134a565b604051808215151515815260200191505060405180910390f35b34801561036e57600080fd5b50610377611439565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103b757808201518184015260208101905061039c565b50505050905090810190601f1680156103e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103fe57600080fd5b50610459600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611472565b60405180826000191660001916815260200191505060405180910390f35b34801561048357600080fd5b506104c66004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114de565b604051808215151515815260200191505060405180910390f35b3480156104ec57600080fd5b5061050b6004803603810190808035906020019092919050505061150d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561055957600080fd5b5061057c600480360381019080803560001916906020019092919050505061154b565b604051808215151515815260200191505060405180910390f35b3480156105a257600080fd5b506105ab61156b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105eb5780820151818401526020810190506105d0565b50505050905090810190601f1680156106185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60025481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080835183111515156106f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f5468726573686f6c642063616e6e6f742065786365656420667269656e64732081526020017f636f756e7400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6002831015151561076d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4174206c65617374203220667269656e6473207265717569726564000000000081525060200191505060405180910390fd5b6107756115a4565b600091505b835182101561097957838281518110151561079157fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561082c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c696420667269656e6420616464726573732070726f76696465640081525060200191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610914576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4475706c696361746520667269656e6420616464726573732070726f7669646581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818060010192505061077a565b836003908051906020019061098f929190611697565b508260028190555050505050565b60046020528060005260406000206000915054906101000a900460ff1681565b60606000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610aa8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642062792061206681526020017f7269656e6400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b848484604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200193505050506040516020818303038152906040527fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509150610bd582611472565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610c75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5265636f7665727920616c72656164792065786563757465640000000000000081525060200191505060405180910390fd5b610c7e8161134a565b1515610d18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f5265636f7665727920686173206e6f7420656e6f75676820636f6e6669726d6181526020017f74696f6e7300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610e2957fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610e69578082015181840152602081019050610e4e565b50505050905090810190601f168015610e965780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610eb857600080fd5b505af1158015610ecc573d6000803e3d6000fd5b505050506040513d6020811015610ee257600080fd5b81019080805190602001909291905050501515610f67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f742065786563757465207265636f7665727900000000000081525060200191505060405180910390fd5b5050505050565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611055576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642062792061206681526020017f7269656e6400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60056000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5265636f7665727920616c72656164792065786563757465640000000000000081525060200191505060405180910390fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611252576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515611307576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b60038054905081101561142d57600660008560001916600019168152602001908152602001600020600060038381548110151561138c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561140d5781806001019250505b6002548214156114205760019250611432565b8080600101915050611353565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b6020831015156114aa5780518252602082019150602081019050602083039250611485565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60038181548110151561151c57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b828054828255906000526020600020908101928215611710579160200282015b8281111561170f5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906116b7565b5b50905061171d9190611721565b5090565b61176191905b8082111561175d57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611727565b5090565b905600a165627a7a72305820f0b8225dc8646b27a4eb559b8965458750244631494ed3b01cb42cf8380bff870029", + "deployedBytecode": "0x6080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806342cde4e8146100d5578063481c6a75146101005780634ab884271461015757806368125a1b146101c757806377231eaa1461022257806379716e43146102a55780637de7edef146102d65780639ca89d0d14610319578063a3f4df7e14610362578063ae68b056146103f2578063b79ffaff14610477578063ce146828146104e0578063e52cb36a1461054d578063ffa1ad7414610596575b600080fd5b3480156100e157600080fd5b506100ea610626565b6040518082815260200191505060405180910390f35b34801561010c57600080fd5b5061011561062c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016357600080fd5b506101c56004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190929190505050610652565b005b3480156101d357600080fd5b50610208600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061099d565b604051808215151515815260200191505060405180910390f35b34801561022e57600080fd5b506102a3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109bd565b005b3480156102b157600080fd5b506102d46004803603810190808035600019169060200190929190505050610f6e565b005b3480156102e257600080fd5b50610317600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611167565b005b34801561032557600080fd5b50610348600480360381019080803560001916906020019092919050505061134a565b604051808215151515815260200191505060405180910390f35b34801561036e57600080fd5b50610377611439565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103b757808201518184015260208101905061039c565b50505050905090810190601f1680156103e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103fe57600080fd5b50610459600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611472565b60405180826000191660001916815260200191505060405180910390f35b34801561048357600080fd5b506104c66004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114de565b604051808215151515815260200191505060405180910390f35b3480156104ec57600080fd5b5061050b6004803603810190808035906020019092919050505061150d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561055957600080fd5b5061057c600480360381019080803560001916906020019092919050505061154b565b604051808215151515815260200191505060405180910390f35b3480156105a257600080fd5b506105ab61156b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105eb5780820151818401526020810190506105d0565b50505050905090810190601f1680156106185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60025481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080835183111515156106f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f5468726573686f6c642063616e6e6f742065786365656420667269656e64732081526020017f636f756e7400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6002831015151561076d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4174206c65617374203220667269656e6473207265717569726564000000000081525060200191505060405180910390fd5b6107756115a4565b600091505b835182101561097957838281518110151561079157fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561082c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c696420667269656e6420616464726573732070726f76696465640081525060200191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610914576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4475706c696361746520667269656e6420616464726573732070726f7669646581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818060010192505061077a565b836003908051906020019061098f929190611697565b508260028190555050505050565b60046020528060005260406000206000915054906101000a900460ff1681565b60606000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610aa8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642062792061206681526020017f7269656e6400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b848484604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200193505050506040516020818303038152906040527fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509150610bd582611472565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610c75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5265636f7665727920616c72656164792065786563757465640000000000000081525060200191505060405180910390fd5b610c7e8161134a565b1515610d18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f5265636f7665727920686173206e6f7420656e6f75676820636f6e6669726d6181526020017f74696f6e7300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610e2957fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610e69578082015181840152602081019050610e4e565b50505050905090810190601f168015610e965780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610eb857600080fd5b505af1158015610ecc573d6000803e3d6000fd5b505050506040513d6020811015610ee257600080fd5b81019080805190602001909291905050501515610f67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f742065786563757465207265636f7665727900000000000081525060200191505060405180910390fd5b5050505050565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611055576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642062792061206681526020017f7269656e6400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60056000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5265636f7665727920616c72656164792065786563757465640000000000000081525060200191505060405180910390fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611252576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515611307576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b60038054905081101561142d57600660008560001916600019168152602001908152602001600020600060038381548110151561138c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561140d5781806001019250505b6002548214156114205760019250611432565b8080600101915050611353565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b6020831015156114aa5780518252602082019150602081019050602083039250611485565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60038181548110151561151c57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b828054828255906000526020600020908101928215611710579160200282015b8281111561170f5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906116b7565b5b50905061171d9190611721565b5090565b61176191905b8082111561175d57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611727565b5090565b905600a165627a7a72305820f0b8225dc8646b27a4eb559b8965458750244631494ed3b01cb42cf8380bff870029", + "sourceMap": "306:3660:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;306:3660:21;;;;;;;", + "deployedSourceMap": "306:3660:21:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;460:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;460:24:21;;;;;;;;;;;;;;;;;;;;;;;262:28:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:8;;;;;;;;;;;;;;;;;;;;;;;;;;;1218:640:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1218:640:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;585:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;585:41:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2514:625;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2514:625:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1971:210;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1971:210:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;3300:405:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3300:405:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;353:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:54:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;353:54:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3834:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3834:130:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;829:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;829:65:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;490:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;490:24:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;694:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;694:43:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;413:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;413:40:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;413:40:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;460:24;;;;:::o;262:28:8:-;;;;;;;;;;;;;:::o;1218:640:21:-;1515:9;1570:14;1324:8;:15;1310:10;:29;;1302:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1413:1;1399:10;:15;;1391:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1456:12;:10;:12::i;:::-;1527:1;1515:13;;1510:282;1534:8;:15;1530:1;:19;1510:282;;;1587:8;1596:1;1587:11;;;;;;;;;;;;;;;;;;1570:28;;1630:1;1620:6;:11;;;;1612:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1690:8;:16;1699:6;1690:16;;;;;;;;;;;;;;;;;;;;;;;;;1689:17;1681:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1777:4;1758:8;:16;1767:6;1758:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1551:3;;;;;;;1510:282;;;1811:8;1801:7;:18;;;;;;;;;;;;:::i;:::-;;1841:10;1829:9;:22;;;;1218:640;;;;:::o;585:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;2514:625::-;2640:17;2762:16;941:8;:20;950:10;941:20;;;;;;;;;;;;;;;;;;;;;;;;;933:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2722:9;2733:8;2743;2660:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2660:92:21;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2660:92:21;2640:112;;2781:17;2793:4;2781:11;:17::i;:::-;2762:36;;2817:10;:20;2828:8;2817:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2816:21;2808:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2885:38;2914:8;2885:28;:38::i;:::-;2877:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2998:4;2975:10;:20;2986:8;2975:20;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3020:7;;;;;;;;;;;:33;;;3062:7;;;;;;;;;;;3072:1;3075:4;3081:19;3020:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3020:81:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3020:81:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3020:81:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3020:81:21;;;;;;;;;;;;;;;;3012:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2514:625;;;;;:::o;1971:210::-;941:8;:20;950:10;941:20;;;;;;;;;;;;;;;;;;;;;;;;;933:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2074:10;:20;2085:8;2074:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2073:21;2065:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2170:4;2134:11;:21;2146:8;2134:21;;;;;;;;;;;;;;;;;:33;2156:10;2134:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1971:210;:::o;626:248:5:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;3300:405:21:-;3401:4;3421:25;3461:9;3473:1;3461:13;;3456:221;3480:7;:14;;;;3476:1;:18;3456:221;;;3519:11;:21;3531:8;3519:21;;;;;;;;;;;;;;;;;:33;3541:7;3549:1;3541:10;;;;;;;;;;;;;;;;;;;;;;;;;;;3519:33;;;;;;;;;;;;;;;;;;;;;;;;;3515:74;;;3570:19;;;;;;;3515:74;3628:9;;3607:17;:30;3603:63;;;3662:4;3655:11;;;;3603:63;3496:3;;;;;;;3456:221;;;3693:5;3686:12;;3300:405;;;;;;:::o;353:54::-;;;;;;;;;;;;;;;;;;;;:::o;3834:130::-;3912:7;3952:4;3942:15;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3942:15:21;;;;;;;;;;;;;;;;3935:22;;3834:130;;;:::o;829:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;490:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;694:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;413:40::-;;;;;;;;;;;;;;;;;;;;:::o;434:300:8:-;648:1;636:7;;;;;;;;;;;628:21;;;620:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:10;692:7;;:35;;;;;;;;;;;;;;;;;;434:300::o;306:3660:21:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n/// @author Stefan George - \ncontract SocialRecoveryModule is Module {\n\n string public constant NAME = \"Social Recovery Module\";\n string public constant VERSION = \"0.0.1\";\n\n uint256 public threshold;\n address[] public friends;\n\n // isFriend mapping maps friend's address to friend status.\n mapping (address => bool) public isFriend;\n // isExecuted mapping maps data hash to execution status.\n mapping (bytes32 => bool) public isExecuted;\n // isConfirmed mapping maps data hash to friend's address to confirmation status.\n mapping (bytes32 => mapping (address => bool)) public isConfirmed;\n\n modifier onlyFriend() {\n require(isFriend[msg.sender], \"Method can only be called by a friend\");\n _;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function setup(address[] _friends, uint256 _threshold)\n public\n {\n require(_threshold <= _friends.length, \"Threshold cannot exceed friends count\");\n require(_threshold >= 2, \"At least 2 friends required\");\n setManager();\n // Set allowed friends.\n for (uint256 i = 0; i < _friends.length; i++) {\n address friend = _friends[i];\n require(friend != 0, \"Invalid friend address provided\");\n require(!isFriend[friend], \"Duplicate friend address provided\");\n isFriend[friend] = true;\n }\n friends = _friends;\n threshold = _threshold;\n }\n\n /// @dev Allows a friend to confirm a Safe transaction.\n /// @param dataHash Safe transaction hash.\n function confirmTransaction(bytes32 dataHash)\n public\n onlyFriend\n {\n require(!isExecuted[dataHash], \"Recovery already executed\");\n isConfirmed[dataHash][msg.sender] = true;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n /// @return Returns if transaction can be executed.\n function recoverAccess(address prevOwner, address oldOwner, address newOwner)\n public\n onlyFriend\n {\n bytes memory data = abi.encodeWithSignature(\"swapOwner(address,address,address)\", prevOwner, oldOwner, newOwner);\n bytes32 dataHash = getDataHash(data);\n require(!isExecuted[dataHash], \"Recovery already executed\");\n require(isConfirmedByRequiredFriends(dataHash), \"Recovery has not enough confirmations\");\n isExecuted[dataHash] = true;\n require(manager.execTransactionFromModule(address(manager), 0, data, Enum.Operation.Call), \"Could not execute recovery\");\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param dataHash Data hash.\n /// @return Confirmation status.\n function isConfirmedByRequiredFriends(bytes32 dataHash)\n public\n view\n returns (bool)\n {\n uint256 confirmationCount;\n for (uint256 i = 0; i < friends.length; i++) {\n if (isConfirmed[dataHash][friends[i]])\n confirmationCount++;\n if (confirmationCount == threshold)\n return true;\n }\n return false;\n }\n\n /// @dev Returns hash of data encoding owner replacement.\n /// @param data Data payload.\n /// @return Data hash.\n function getDataHash(bytes data)\n public\n pure\n returns (bytes32)\n {\n return keccak256(data);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", "exportedSymbols": { "SocialRecoveryModule": [ - 2344 + 3680 ] }, - "id": 2345, + "id": 3681, "nodeType": "SourceUnit", "nodes": [ { - "id": 2081, + "id": 3417, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:19" + "src": "0:23:21" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 2082, + "id": 3418, "nodeType": "ImportDirective", - "scope": 2345, + "scope": 3681, "sourceUnit": 31, - "src": "24:21:19", + "src": "24:21:21", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2083, + "id": 3419, "nodeType": "ImportDirective", - "scope": 2345, - "sourceUnit": 733, - "src": "46:23:19", + "scope": 3681, + "sourceUnit": 1862, + "src": "46:23:21", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 2084, + "id": 3420, "nodeType": "ImportDirective", - "scope": 2345, - "sourceUnit": 1104, - "src": "70:30:19", + "scope": 3681, + "sourceUnit": 2233, + "src": "70:30:21", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2085, + "id": 3421, "nodeType": "ImportDirective", - "scope": 2345, - "sourceUnit": 1514, - "src": "101:29:19", + "scope": 3681, + "sourceUnit": 2889, + "src": "101:29:21", "symbolAliases": [], "unitAlias": "" }, @@ -320,46 +320,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2086, + "id": 3422, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 732, - "src": "339:6:19", + "referencedDeclaration": 1861, + "src": "339:6:21", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$732", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, - "id": 2087, + "id": 3423, "nodeType": "InheritanceSpecifier", - "src": "339:6:19" + "src": "339:6:21" } ], "contractDependencies": [ 632, - 732, - 1663 + 1861, + 3065 ], "contractKind": "contract", "documentation": "@title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2344, + "id": 3680, "linearizedBaseContracts": [ - 2344, - 732, + 3680, + 1861, 632, - 1663 + 3065 ], "name": "SocialRecoveryModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2090, + "id": 3426, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2344, - "src": "353:54:19", + "scope": 3680, + "src": "353:54:21", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -367,10 +367,10 @@ "typeString": "string" }, "typeName": { - "id": 2088, + "id": 3424, "name": "string", "nodeType": "ElementaryTypeName", - "src": "353:6:19", + "src": "353:6:21", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -379,14 +379,14 @@ "value": { "argumentTypes": null, "hexValue": "536f6369616c205265636f76657279204d6f64756c65", - "id": 2089, + "id": 3425, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "383:24:19", + "src": "383:24:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8f499aea563eae5544b16c9123d6c7c8537a7d9dd86296aa60c65de194207230", @@ -398,11 +398,11 @@ }, { "constant": true, - "id": 2093, + "id": 3429, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2344, - "src": "413:40:19", + "scope": 3680, + "src": "413:40:21", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -410,10 +410,10 @@ "typeString": "string" }, "typeName": { - "id": 2091, + "id": 3427, "name": "string", "nodeType": "ElementaryTypeName", - "src": "413:6:19", + "src": "413:6:21", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -422,14 +422,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2092, + "id": 3428, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "446:7:19", + "src": "446:7:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -441,25 +441,25 @@ }, { "constant": false, - "id": 2095, + "id": 3431, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2344, - "src": "460:22:19", + "scope": 3680, + "src": "460:24:21", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 2094, - "name": "uint8", + "id": 3430, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "460:5:19", + "src": "460:7:21", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, @@ -467,11 +467,11 @@ }, { "constant": false, - "id": 2098, + "id": 3434, "name": "friends", "nodeType": "VariableDeclaration", - "scope": 2344, - "src": "488:24:19", + "scope": 3680, + "src": "490:24:21", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -480,19 +480,19 @@ }, "typeName": { "baseType": { - "id": 2096, + "id": 3432, "name": "address", "nodeType": "ElementaryTypeName", - "src": "488:7:19", + "src": "490:7:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2097, + "id": 3433, "length": null, "nodeType": "ArrayTypeName", - "src": "488:9:19", + "src": "490:9:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -503,11 +503,11 @@ }, { "constant": false, - "id": 2102, + "id": 3438, "name": "isFriend", "nodeType": "VariableDeclaration", - "scope": 2344, - "src": "583:41:19", + "scope": 3680, + "src": "585:41:21", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -515,28 +515,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 2101, + "id": 3437, "keyType": { - "id": 2099, + "id": 3435, "name": "address", "nodeType": "ElementaryTypeName", - "src": "592:7:19", + "src": "594:7:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "583:25:19", + "src": "585:25:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2100, + "id": 3436, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "603:4:19", + "src": "605:4:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -548,11 +548,11 @@ }, { "constant": false, - "id": 2106, + "id": 3442, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2344, - "src": "692:43:19", + "scope": 3680, + "src": "694:43:21", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -560,28 +560,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 2105, + "id": 3441, "keyType": { - "id": 2103, + "id": 3439, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "701:7:19", + "src": "703:7:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "692:25:19", + "src": "694:25:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 2104, + "id": 3440, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "712:4:19", + "src": "714:4:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -593,11 +593,11 @@ }, { "constant": false, - "id": 2112, + "id": 3448, "name": "isConfirmed", "nodeType": "VariableDeclaration", - "scope": 2344, - "src": "827:65:19", + "scope": 3680, + "src": "829:65:21", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -605,46 +605,46 @@ "typeString": "mapping(bytes32 => mapping(address => bool))" }, "typeName": { - "id": 2111, + "id": 3447, "keyType": { - "id": 2107, + "id": 3443, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "836:7:19", + "src": "838:7:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "827:46:19", + "src": "829:46:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" }, "valueType": { - "id": 2110, + "id": 3446, "keyType": { - "id": 2108, + "id": 3444, "name": "address", "nodeType": "ElementaryTypeName", - "src": "856:7:19", + "src": "858:7:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "847:25:19", + "src": "849:25:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2109, + "id": 3445, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "867:4:19", + "src": "869:4:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -657,9 +657,9 @@ }, { "body": { - "id": 2123, + "id": 3459, "nodeType": "Block", - "src": "921:98:19", + "src": "923:98:21", "statements": [ { "expression": { @@ -669,34 +669,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2115, + "id": 3451, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2102, - "src": "939:8:19", + "referencedDeclaration": 3438, + "src": "941:8:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2118, + "id": 3454, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2116, + "id": 3452, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2700, - "src": "948:3:19", + "referencedDeclaration": 4036, + "src": "950:3:21", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2117, + "id": 3453, "isConstant": false, "isLValue": false, "isPure": false, @@ -704,7 +704,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "948:10:19", + "src": "950:10:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -715,7 +715,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "939:20:19", + "src": "941:20:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -724,14 +724,14 @@ { "argumentTypes": null, "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c6564206279206120667269656e64", - "id": 2119, + "id": 3455, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "961:39:19", + "src": "963:39:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b1b9fb59ab33eb5ed22c2a9ea6a84e946973f30df026a85494e13c73883cce0a", @@ -751,21 +751,21 @@ "typeString": "literal_string \"Method can only be called by a friend\"" } ], - "id": 2114, + "id": 3450, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "931:7:19", + "referencedDeclaration": 4040, + "src": "933:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2120, + "id": 3456, "isConstant": false, "isLValue": false, "isPure": false, @@ -773,41 +773,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "931:70:19", + "src": "933:70:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2121, + "id": 3457, "nodeType": "ExpressionStatement", - "src": "931:70:19" + "src": "933:70:21" }, { - "id": 2122, + "id": 3458, "nodeType": "PlaceholderStatement", - "src": "1011:1:19" + "src": "1013:1:21" } ] }, "documentation": null, - "id": 2124, + "id": 3460, "name": "onlyFriend", "nodeType": "ModifierDefinition", "parameters": { - "id": 2113, + "id": 3449, "nodeType": "ParameterList", "parameters": [], - "src": "918:2:19" + "src": "920:2:21" }, - "src": "899:120:19", + "src": "901:120:21", "visibility": "internal" }, { "body": { - "id": 2198, + "id": 3534, "nodeType": "Block", - "src": "1288:566:19", + "src": "1292:566:21", "statements": [ { "expression": { @@ -819,22 +819,22 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2136, + "id": 3472, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2133, + "id": 3469, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2129, - "src": "1306:10:19", + "referencedDeclaration": 3465, + "src": "1310:10:21", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "BinaryOperation", @@ -843,18 +843,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2134, + "id": 3470, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2127, - "src": "1320:8:19", + "referencedDeclaration": 3463, + "src": "1324:8:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2135, + "id": 3471, "isConstant": false, "isLValue": false, "isPure": false, @@ -862,13 +862,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1320:15:19", + "src": "1324:15:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1306:29:19", + "src": "1310:29:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -877,14 +877,14 @@ { "argumentTypes": null, "hexValue": "5468726573686f6c642063616e6e6f742065786365656420667269656e647320636f756e74", - "id": 2137, + "id": 3473, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1337:39:19", + "src": "1341:39:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8268a65eab991df6bae5d0e671467a9ef945396e4d495dc52153cedea41ef257", @@ -904,21 +904,21 @@ "typeString": "literal_string \"Threshold cannot exceed friends count\"" } ], - "id": 2132, + "id": 3468, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "1298:7:19", + "referencedDeclaration": 4040, + "src": "1302:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2138, + "id": 3474, "isConstant": false, "isLValue": false, "isPure": false, @@ -926,15 +926,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1298:79:19", + "src": "1302:79:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2139, + "id": 3475, "nodeType": "ExpressionStatement", - "src": "1298:79:19" + "src": "1302:79:21" }, { "expression": { @@ -943,25 +943,25 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 2143, + "id": 3479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2141, + "id": 3477, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2129, - "src": "1395:10:19", + "referencedDeclaration": 3465, + "src": "1399:10:21", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "BinaryOperation", @@ -969,14 +969,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 2142, + "id": 3478, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1409:1:19", + "src": "1413:1:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -984,7 +984,7 @@ }, "value": "2" }, - "src": "1395:15:19", + "src": "1399:15:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -993,14 +993,14 @@ { "argumentTypes": null, "hexValue": "4174206c65617374203220667269656e6473207265717569726564", - "id": 2144, + "id": 3480, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1412:29:19", + "src": "1416:29:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_2dca24eb5124987015b2480219c9ac2baf747f0e8ae6537e9852d3e3b2773773", @@ -1020,21 +1020,21 @@ "typeString": "literal_string \"At least 2 friends required\"" } ], - "id": 2140, + "id": 3476, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "1387:7:19", + "referencedDeclaration": 4040, + "src": "1391:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2145, + "id": 3481, "isConstant": false, "isLValue": false, "isPure": false, @@ -1042,15 +1042,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1387:55:19", + "src": "1391:55:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2146, + "id": 3482, "nodeType": "ExpressionStatement", - "src": "1387:55:19" + "src": "1391:55:21" }, { "expression": { @@ -1058,18 +1058,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2147, + "id": 3483, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 731, - "src": "1452:10:19", + "referencedDeclaration": 1860, + "src": "1456:10:21", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2148, + "id": 3484, "isConstant": false, "isLValue": false, "isPure": false, @@ -1077,34 +1077,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1452:12:19", + "src": "1456:12:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2149, + "id": 3485, "nodeType": "ExpressionStatement", - "src": "1452:12:19" + "src": "1456:12:21" }, { "body": { - "id": 2188, + "id": 3524, "nodeType": "Block", - "src": "1552:236:19", + "src": "1556:236:21", "statements": [ { "assignments": [ - 2162 + 3498 ], "declarations": [ { "constant": false, - "id": 2162, + "id": 3498, "name": "friend", "nodeType": "VariableDeclaration", - "scope": 2199, - "src": "1566:14:19", + "scope": 3535, + "src": "1570:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1112,10 +1112,10 @@ "typeString": "address" }, "typeName": { - "id": 2161, + "id": 3497, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1566:7:19", + "src": "1570:7:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1125,31 +1125,31 @@ "visibility": "internal" } ], - "id": 2166, + "id": 3502, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2163, + "id": 3499, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2127, - "src": "1583:8:19", + "referencedDeclaration": 3463, + "src": "1587:8:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2165, + "id": 3501, "indexExpression": { "argumentTypes": null, - "id": 2164, + "id": 3500, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2151, - "src": "1592:1:19", + "referencedDeclaration": 3487, + "src": "1596:1:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1160,14 +1160,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1583:11:19", + "src": "1587:11:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1566:28:19" + "src": "1570:28:21" }, { "expression": { @@ -1179,19 +1179,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2170, + "id": 3506, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2168, + "id": 3504, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2162, - "src": "1616:6:19", + "referencedDeclaration": 3498, + "src": "1620:6:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1202,14 +1202,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2169, + "id": 3505, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1626:1:19", + "src": "1630:1:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1217,7 +1217,7 @@ }, "value": "0" }, - "src": "1616:11:19", + "src": "1620:11:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1226,14 +1226,14 @@ { "argumentTypes": null, "hexValue": "496e76616c696420667269656e6420616464726573732070726f7669646564", - "id": 2171, + "id": 3507, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1629:33:19", + "src": "1633:33:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_5d50911068dfec2dd53f3e08d7dec23b50affd69b91cf3e5d1e699c56bca7a55", @@ -1253,21 +1253,21 @@ "typeString": "literal_string \"Invalid friend address provided\"" } ], - "id": 2167, + "id": 3503, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "1608:7:19", + "referencedDeclaration": 4040, + "src": "1612:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2172, + "id": 3508, "isConstant": false, "isLValue": false, "isPure": false, @@ -1275,15 +1275,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1608:55:19", + "src": "1612:55:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2173, + "id": 3509, "nodeType": "ExpressionStatement", - "src": "1608:55:19" + "src": "1612:55:21" }, { "expression": { @@ -1291,7 +1291,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2178, + "id": 3514, "isConstant": false, "isLValue": false, "isPure": false, @@ -1299,31 +1299,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1685:17:19", + "src": "1689:17:21", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2175, + "id": 3511, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2102, - "src": "1686:8:19", + "referencedDeclaration": 3438, + "src": "1690:8:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2177, + "id": 3513, "indexExpression": { "argumentTypes": null, - "id": 2176, + "id": 3512, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2162, - "src": "1695:6:19", + "referencedDeclaration": 3498, + "src": "1699:6:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1334,7 +1334,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1686:16:19", + "src": "1690:16:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1348,14 +1348,14 @@ { "argumentTypes": null, "hexValue": "4475706c696361746520667269656e6420616464726573732070726f7669646564", - "id": 2179, + "id": 3515, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1704:35:19", + "src": "1708:35:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_78a0468a6f4bfa8018f886880a93f836f50f407cd02c2e42c43779f87d3af4d3", @@ -1375,21 +1375,21 @@ "typeString": "literal_string \"Duplicate friend address provided\"" } ], - "id": 2174, + "id": 3510, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "1677:7:19", + "referencedDeclaration": 4040, + "src": "1681:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2180, + "id": 3516, "isConstant": false, "isLValue": false, "isPure": false, @@ -1397,20 +1397,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1677:63:19", + "src": "1681:63:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2181, + "id": 3517, "nodeType": "ExpressionStatement", - "src": "1677:63:19" + "src": "1681:63:21" }, { "expression": { "argumentTypes": null, - "id": 2186, + "id": 3522, "isConstant": false, "isLValue": false, "isPure": false, @@ -1419,26 +1419,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2182, + "id": 3518, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2102, - "src": "1754:8:19", + "referencedDeclaration": 3438, + "src": "1758:8:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2184, + "id": 3520, "indexExpression": { "argumentTypes": null, - "id": 2183, + "id": 3519, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2162, - "src": "1763:6:19", + "referencedDeclaration": 3498, + "src": "1767:6:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1449,7 +1449,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1754:16:19", + "src": "1758:16:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1460,14 +1460,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2185, + "id": 3521, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1773:4:19", + "src": "1777:4:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1475,15 +1475,15 @@ }, "value": "true" }, - "src": "1754:23:19", + "src": "1758:23:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2187, + "id": 3523, "nodeType": "ExpressionStatement", - "src": "1754:23:19" + "src": "1758:23:21" } ] }, @@ -1493,19 +1493,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2157, + "id": 3493, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2154, + "id": 3490, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2151, - "src": "1526:1:19", + "referencedDeclaration": 3487, + "src": "1530:1:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1517,18 +1517,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2155, + "id": 3491, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2127, - "src": "1530:8:19", + "referencedDeclaration": 3463, + "src": "1534:8:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2156, + "id": 3492, "isConstant": false, "isLValue": false, "isPure": false, @@ -1536,31 +1536,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1530:15:19", + "src": "1534:15:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1526:19:19", + "src": "1530:19:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2189, + "id": 3525, "initializationExpression": { "assignments": [ - 2151 + 3487 ], "declarations": [ { "constant": false, - "id": 2151, + "id": 3487, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2199, - "src": "1511:9:19", + "scope": 3535, + "src": "1515:9:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1568,10 +1568,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2150, + "id": 3486, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1511:7:19", + "src": "1515:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1581,18 +1581,18 @@ "visibility": "internal" } ], - "id": 2153, + "id": 3489, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2152, + "id": 3488, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1523:1:19", + "src": "1527:1:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1601,12 +1601,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1511:13:19" + "src": "1515:13:21" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2159, + "id": 3495, "isConstant": false, "isLValue": false, "isPure": false, @@ -1614,15 +1614,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1547:3:19", + "src": "1551:3:21", "subExpression": { "argumentTypes": null, - "id": 2158, + "id": 3494, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2151, - "src": "1547:1:19", + "referencedDeclaration": 3487, + "src": "1551:1:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1633,29 +1633,29 @@ "typeString": "uint256" } }, - "id": 2160, + "id": 3496, "nodeType": "ExpressionStatement", - "src": "1547:3:19" + "src": "1551:3:21" }, "nodeType": "ForStatement", - "src": "1506:282:19" + "src": "1510:282:21" }, { "expression": { "argumentTypes": null, - "id": 2192, + "id": 3528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2190, + "id": 3526, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2098, - "src": "1797:7:19", + "referencedDeclaration": 3434, + "src": "1801:7:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -1665,77 +1665,77 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2191, + "id": 3527, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2127, - "src": "1807:8:19", + "referencedDeclaration": 3463, + "src": "1811:8:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "src": "1797:18:19", + "src": "1801:18:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2193, + "id": 3529, "nodeType": "ExpressionStatement", - "src": "1797:18:19" + "src": "1801:18:21" }, { "expression": { "argumentTypes": null, - "id": 2196, + "id": 3532, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2194, + "id": 3530, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1825:9:19", + "referencedDeclaration": 3431, + "src": "1829:9:21", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2195, + "id": 3531, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2129, - "src": "1837:10:19", + "referencedDeclaration": 3465, + "src": "1841:10:21", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "1825:22:19", + "src": "1829:22:21", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 2197, + "id": 3533, "nodeType": "ExpressionStatement", - "src": "1825:22:19" + "src": "1829:22:21" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _friends List of friends' addresses.\n @param _threshold Required number of friends to confirm replacement.", - "id": 2199, + "id": 3535, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1743,16 +1743,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2130, + "id": 3466, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2127, + "id": 3463, "name": "_friends", "nodeType": "VariableDeclaration", - "scope": 2199, - "src": "1231:18:19", + "scope": 3535, + "src": "1233:18:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1761,19 +1761,19 @@ }, "typeName": { "baseType": { - "id": 2125, + "id": 3461, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1231:7:19", + "src": "1233:7:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2126, + "id": 3462, "length": null, "nodeType": "ArrayTypeName", - "src": "1231:9:19", + "src": "1233:9:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -1784,51 +1784,51 @@ }, { "constant": false, - "id": 2129, + "id": 3465, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 2199, - "src": "1251:16:19", + "scope": 3535, + "src": "1253:18:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 2128, - "name": "uint8", + "id": 3464, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1251:5:19", + "src": "1253:7:21", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "1230:38:19" + "src": "1232:40:21" }, "payable": false, "returnParameters": { - "id": 2131, + "id": 3467, "nodeType": "ParameterList", "parameters": [], - "src": "1288:0:19" + "src": "1292:0:21" }, - "scope": 2344, - "src": "1216:638:19", + "scope": 3680, + "src": "1218:640:21", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2223, + "id": 3559, "nodeType": "Block", - "src": "2051:126:19", + "src": "2055:126:21", "statements": [ { "expression": { @@ -1836,7 +1836,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2210, + "id": 3546, "isConstant": false, "isLValue": false, "isPure": false, @@ -1844,31 +1844,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2069:21:19", + "src": "2073:21:21", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2207, + "id": 3543, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2106, - "src": "2070:10:19", + "referencedDeclaration": 3442, + "src": "2074:10:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2209, + "id": 3545, "indexExpression": { "argumentTypes": null, - "id": 2208, + "id": 3544, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2201, - "src": "2081:8:19", + "referencedDeclaration": 3537, + "src": "2085:8:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1879,7 +1879,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2070:20:19", + "src": "2074:20:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1893,14 +1893,14 @@ { "argumentTypes": null, "hexValue": "5265636f7665727920616c7265616479206578656375746564", - "id": 2211, + "id": 3547, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2092:27:19", + "src": "2096:27:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", @@ -1920,21 +1920,21 @@ "typeString": "literal_string \"Recovery already executed\"" } ], - "id": 2206, + "id": 3542, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2061:7:19", + "referencedDeclaration": 4040, + "src": "2065:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2212, + "id": 3548, "isConstant": false, "isLValue": false, "isPure": false, @@ -1942,20 +1942,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2061:59:19", + "src": "2065:59:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2213, + "id": 3549, "nodeType": "ExpressionStatement", - "src": "2061:59:19" + "src": "2065:59:21" }, { "expression": { "argumentTypes": null, - "id": 2221, + "id": 3557, "isConstant": false, "isLValue": false, "isPure": false, @@ -1966,26 +1966,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2214, + "id": 3550, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2112, - "src": "2130:11:19", + "referencedDeclaration": 3448, + "src": "2134:11:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2218, + "id": 3554, "indexExpression": { "argumentTypes": null, - "id": 2215, + "id": 3551, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2201, - "src": "2142:8:19", + "referencedDeclaration": 3537, + "src": "2146:8:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1996,29 +1996,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2130:21:19", + "src": "2134:21:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2219, + "id": 3555, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2216, + "id": 3552, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2700, - "src": "2152:3:19", + "referencedDeclaration": 4036, + "src": "2156:3:21", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2217, + "id": 3553, "isConstant": false, "isLValue": false, "isPure": false, @@ -2026,7 +2026,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2152:10:19", + "src": "2156:10:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2037,7 +2037,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2130:33:19", + "src": "2134:33:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2048,14 +2048,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2220, + "id": 3556, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2166:4:19", + "src": "2170:4:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2063,57 +2063,57 @@ }, "value": "true" }, - "src": "2130:40:19", + "src": "2134:40:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2222, + "id": 3558, "nodeType": "ExpressionStatement", - "src": "2130:40:19" + "src": "2134:40:21" } ] }, "documentation": "@dev Allows a friend to confirm a Safe transaction.\n @param dataHash Safe transaction hash.", - "id": 2224, + "id": 3560, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2204, + "id": 3540, "modifierName": { "argumentTypes": null, - "id": 2203, + "id": 3539, "name": "onlyFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2124, - "src": "2036:10:19", + "referencedDeclaration": 3460, + "src": "2040:10:21", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2036:10:19" + "src": "2040:10:21" } ], "name": "confirmTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 2202, + "id": 3538, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2201, + "id": 3537, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2224, - "src": "1995:16:19", + "scope": 3560, + "src": "1999:16:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2121,10 +2121,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2200, + "id": 3536, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1995:7:19", + "src": "1999:7:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2134,39 +2134,39 @@ "visibility": "internal" } ], - "src": "1994:18:19" + "src": "1998:18:21" }, "payable": false, "returnParameters": { - "id": 2205, + "id": 3541, "nodeType": "ParameterList", "parameters": [], - "src": "2051:0:19" + "src": "2055:0:21" }, - "scope": 2344, - "src": "1967:210:19", + "scope": 3680, + "src": "1971:210:21", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2287, + "id": 3623, "nodeType": "Block", - "src": "2626:509:19", + "src": "2630:509:21", "statements": [ { "assignments": [ - 2236 + 3572 ], "declarations": [ { "constant": false, - "id": 2236, + "id": 3572, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2288, - "src": "2636:17:19", + "scope": 3624, + "src": "2640:17:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2174,10 +2174,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2235, + "id": 3571, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2636:5:19", + "src": "2640:5:21", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2187,21 +2187,21 @@ "visibility": "internal" } ], - "id": 2244, + "id": 3580, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "737761704f776e657228616464726573732c616464726573732c6164647265737329", - "id": 2239, + "id": 3575, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2680:36:19", + "src": "2684:36:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e318b52b9bee2870ac7ee0af86866eb2e8f9569b34de6028eb487e7983ba6df8", @@ -2211,12 +2211,12 @@ }, { "argumentTypes": null, - "id": 2240, + "id": 3576, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2226, - "src": "2718:9:19", + "referencedDeclaration": 3562, + "src": "2722:9:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2224,12 +2224,12 @@ }, { "argumentTypes": null, - "id": 2241, + "id": 3577, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2228, - "src": "2729:8:19", + "referencedDeclaration": 3564, + "src": "2733:8:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2237,12 +2237,12 @@ }, { "argumentTypes": null, - "id": 2242, + "id": 3578, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2230, - "src": "2739:8:19", + "referencedDeclaration": 3566, + "src": "2743:8:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2270,18 +2270,18 @@ ], "expression": { "argumentTypes": null, - "id": 2237, + "id": 3573, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2687, - "src": "2656:3:19", + "referencedDeclaration": 4023, + "src": "2660:3:21", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 2238, + "id": 3574, "isConstant": false, "isLValue": false, "isPure": true, @@ -2289,13 +2289,13 @@ "memberName": "encodeWithSignature", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2656:23:19", + "src": "2660:23:21", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (string memory) pure returns (bytes memory)" } }, - "id": 2243, + "id": 3579, "isConstant": false, "isLValue": false, "isPure": false, @@ -2303,27 +2303,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2656:92:19", + "src": "2660:92:21", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2636:112:19" + "src": "2640:112:21" }, { "assignments": [ - 2246 + 3582 ], "declarations": [ { "constant": false, - "id": 2246, + "id": 3582, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2288, - "src": "2758:16:19", + "scope": 3624, + "src": "2762:16:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2331,10 +2331,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2245, + "id": 3581, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2758:7:19", + "src": "2762:7:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2344,18 +2344,18 @@ "visibility": "internal" } ], - "id": 2250, + "id": 3586, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2248, + "id": 3584, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2236, - "src": "2789:4:19", + "referencedDeclaration": 3572, + "src": "2793:4:21", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2369,18 +2369,18 @@ "typeString": "bytes memory" } ], - "id": 2247, + "id": 3583, "name": "getDataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2343, - "src": "2777:11:19", + "referencedDeclaration": 3679, + "src": "2781:11:21", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 2249, + "id": 3585, "isConstant": false, "isLValue": false, "isPure": false, @@ -2388,14 +2388,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2777:17:19", + "src": "2781:17:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2758:36:19" + "src": "2762:36:21" }, { "expression": { @@ -2403,7 +2403,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2255, + "id": 3591, "isConstant": false, "isLValue": false, "isPure": false, @@ -2411,31 +2411,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2812:21:19", + "src": "2816:21:21", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2252, + "id": 3588, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2106, - "src": "2813:10:19", + "referencedDeclaration": 3442, + "src": "2817:10:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2254, + "id": 3590, "indexExpression": { "argumentTypes": null, - "id": 2253, + "id": 3589, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2246, - "src": "2824:8:19", + "referencedDeclaration": 3582, + "src": "2828:8:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2446,7 +2446,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2813:20:19", + "src": "2817:20:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2460,14 +2460,14 @@ { "argumentTypes": null, "hexValue": "5265636f7665727920616c7265616479206578656375746564", - "id": 2256, + "id": 3592, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2835:27:19", + "src": "2839:27:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", @@ -2487,21 +2487,21 @@ "typeString": "literal_string \"Recovery already executed\"" } ], - "id": 2251, + "id": 3587, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2804:7:19", + "referencedDeclaration": 4040, + "src": "2808:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2257, + "id": 3593, "isConstant": false, "isLValue": false, "isPure": false, @@ -2509,15 +2509,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2804:59:19", + "src": "2808:59:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2258, + "id": 3594, "nodeType": "ExpressionStatement", - "src": "2804:59:19" + "src": "2808:59:21" }, { "expression": { @@ -2528,12 +2528,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2261, + "id": 3597, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2246, - "src": "2910:8:19", + "referencedDeclaration": 3582, + "src": "2914:8:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2547,18 +2547,18 @@ "typeString": "bytes32" } ], - "id": 2260, + "id": 3596, "name": "isConfirmedByRequiredFriends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2331, - "src": "2881:28:19", + "referencedDeclaration": 3667, + "src": "2885:28:21", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, - "id": 2262, + "id": 3598, "isConstant": false, "isLValue": false, "isPure": false, @@ -2566,7 +2566,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2881:38:19", + "src": "2885:38:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2575,14 +2575,14 @@ { "argumentTypes": null, "hexValue": "5265636f7665727920686173206e6f7420656e6f75676820636f6e6669726d6174696f6e73", - "id": 2263, + "id": 3599, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2921:39:19", + "src": "2925:39:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_cb12b81371f920ba15a762526f9a95cbe925aecb372a64dbeac8ce5c02e0c0e8", @@ -2602,21 +2602,21 @@ "typeString": "literal_string \"Recovery has not enough confirmations\"" } ], - "id": 2259, + "id": 3595, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2873:7:19", + "referencedDeclaration": 4040, + "src": "2877:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2264, + "id": 3600, "isConstant": false, "isLValue": false, "isPure": false, @@ -2624,20 +2624,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2873:88:19", + "src": "2877:88:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2265, + "id": 3601, "nodeType": "ExpressionStatement", - "src": "2873:88:19" + "src": "2877:88:21" }, { "expression": { "argumentTypes": null, - "id": 2270, + "id": 3606, "isConstant": false, "isLValue": false, "isPure": false, @@ -2646,26 +2646,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2266, + "id": 3602, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2106, - "src": "2971:10:19", + "referencedDeclaration": 3442, + "src": "2975:10:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2268, + "id": 3604, "indexExpression": { "argumentTypes": null, - "id": 2267, + "id": 3603, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2246, - "src": "2982:8:19", + "referencedDeclaration": 3582, + "src": "2986:8:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2676,7 +2676,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2971:20:19", + "src": "2975:20:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2687,14 +2687,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2269, + "id": 3605, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2994:4:19", + "src": "2998:4:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2702,15 +2702,15 @@ }, "value": "true" }, - "src": "2971:27:19", + "src": "2975:27:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2271, + "id": 3607, "nodeType": "ExpressionStatement", - "src": "2971:27:19" + "src": "2975:27:21" }, { "expression": { @@ -2724,14 +2724,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2276, + "id": 3612, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 697, - "src": "3058:7:19", + "referencedDeclaration": 1826, + "src": "3062:7:21", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } } @@ -2739,24 +2739,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } ], - "id": 2275, + "id": 3611, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3050:7:19", + "src": "3054:7:21", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 2277, + "id": 3613, "isConstant": false, "isLValue": false, "isPure": false, @@ -2764,7 +2764,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3050:16:19", + "src": "3054:16:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2773,14 +2773,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 2278, + "id": 3614, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3068:1:19", + "src": "3072:1:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2790,12 +2790,12 @@ }, { "argumentTypes": null, - "id": 2279, + "id": 3615, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2236, - "src": "3071:4:19", + "referencedDeclaration": 3572, + "src": "3075:4:21", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2807,18 +2807,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2280, + "id": 3616, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "3077:4:19", + "src": "3081:4:21", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 2281, + "id": 3617, "isConstant": false, "isLValue": false, "isPure": false, @@ -2826,13 +2826,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "3077:14:19", + "src": "3081:14:21", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 2282, + "id": 3618, "isConstant": false, "isLValue": false, "isPure": true, @@ -2840,7 +2840,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3077:19:19", + "src": "3081:19:21", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2868,32 +2868,32 @@ ], "expression": { "argumentTypes": null, - "id": 2273, + "id": 3609, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 697, - "src": "3016:7:19", + "referencedDeclaration": 1826, + "src": "3020:7:21", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, - "id": 2274, + "id": 3610, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 930, - "src": "3016:33:19", + "referencedDeclaration": 2059, + "src": "3020:33:21", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2283, + "id": 3619, "isConstant": false, "isLValue": false, "isPure": false, @@ -2901,7 +2901,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3016:81:19", + "src": "3020:81:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2910,14 +2910,14 @@ { "argumentTypes": null, "hexValue": "436f756c64206e6f742065786563757465207265636f76657279", - "id": 2284, + "id": 3620, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3099:28:19", + "src": "3103:28:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_3515587d60c3ee9920dfa4bee22a25e99aacbb3cec35d7cbe6c839f5b9ffdff1", @@ -2937,21 +2937,21 @@ "typeString": "literal_string \"Could not execute recovery\"" } ], - "id": 2272, + "id": 3608, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "3008:7:19", + "referencedDeclaration": 4040, + "src": "3012:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2285, + "id": 3621, "isConstant": false, "isLValue": false, "isPure": false, @@ -2959,57 +2959,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3008:120:19", + "src": "3012:120:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2286, + "id": 3622, "nodeType": "ExpressionStatement", - "src": "3008:120:19" + "src": "3012:120:21" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.\n @return Returns if transaction can be executed.", - "id": 2288, + "id": 3624, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2233, + "id": 3569, "modifierName": { "argumentTypes": null, - "id": 2232, + "id": 3568, "name": "onlyFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2124, - "src": "2611:10:19", + "referencedDeclaration": 3460, + "src": "2615:10:21", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2611:10:19" + "src": "2615:10:21" } ], "name": "recoverAccess", "nodeType": "FunctionDefinition", "parameters": { - "id": 2231, + "id": 3567, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2226, + "id": 3562, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 2288, - "src": "2533:17:19", + "scope": 3624, + "src": "2537:17:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3017,10 +3017,10 @@ "typeString": "address" }, "typeName": { - "id": 2225, + "id": 3561, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2533:7:19", + "src": "2537:7:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3031,11 +3031,11 @@ }, { "constant": false, - "id": 2228, + "id": 3564, "name": "oldOwner", "nodeType": "VariableDeclaration", - "scope": 2288, - "src": "2552:16:19", + "scope": 3624, + "src": "2556:16:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3043,10 +3043,10 @@ "typeString": "address" }, "typeName": { - "id": 2227, + "id": 3563, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2552:7:19", + "src": "2556:7:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3057,11 +3057,11 @@ }, { "constant": false, - "id": 2230, + "id": 3566, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 2288, - "src": "2570:16:19", + "scope": 3624, + "src": "2574:16:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3069,10 +3069,10 @@ "typeString": "address" }, "typeName": { - "id": 2229, + "id": 3565, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2570:7:19", + "src": "2574:7:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3082,37 +3082,37 @@ "visibility": "internal" } ], - "src": "2532:55:19" + "src": "2536:55:21" }, "payable": false, "returnParameters": { - "id": 2234, + "id": 3570, "nodeType": "ParameterList", "parameters": [], - "src": "2626:0:19" + "src": "2630:0:21" }, - "scope": 2344, - "src": "2510:625:19", + "scope": 3680, + "src": "2514:625:21", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2330, + "id": 3666, "nodeType": "Block", - "src": "3407:294:19", + "src": "3411:294:21", "statements": [ { "assignments": [], "declarations": [ { "constant": false, - "id": 2296, + "id": 3632, "name": "confirmationCount", "nodeType": "VariableDeclaration", - "scope": 2331, - "src": "3417:25:19", + "scope": 3667, + "src": "3421:25:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3120,10 +3120,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2295, + "id": 3631, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3417:7:19", + "src": "3421:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3133,16 +3133,16 @@ "visibility": "internal" } ], - "id": 2297, + "id": 3633, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "3417:25:19" + "src": "3421:25:21" }, { "body": { - "id": 2326, + "id": 3662, "nodeType": "Block", - "src": "3497:176:19", + "src": "3501:176:21", "statements": [ { "condition": { @@ -3151,26 +3151,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2309, + "id": 3645, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2112, - "src": "3515:11:19", + "referencedDeclaration": 3448, + "src": "3519:11:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2311, + "id": 3647, "indexExpression": { "argumentTypes": null, - "id": 2310, + "id": 3646, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2290, - "src": "3527:8:19", + "referencedDeclaration": 3626, + "src": "3531:8:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3181,37 +3181,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3515:21:19", + "src": "3519:21:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2315, + "id": 3651, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2312, + "id": 3648, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2098, - "src": "3537:7:19", + "referencedDeclaration": 3434, + "src": "3541:7:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2314, + "id": 3650, "indexExpression": { "argumentTypes": null, - "id": 2313, + "id": 3649, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2299, - "src": "3545:1:19", + "referencedDeclaration": 3635, + "src": "3549:1:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3222,7 +3222,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3537:10:19", + "src": "3541:10:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3233,20 +3233,20 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3515:33:19", + "src": "3519:33:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2319, + "id": 3655, "nodeType": "IfStatement", - "src": "3511:74:19", + "src": "3515:74:21", "trueBody": { "expression": { "argumentTypes": null, - "id": 2317, + "id": 3653, "isConstant": false, "isLValue": false, "isPure": false, @@ -3254,15 +3254,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3566:19:19", + "src": "3570:19:21", "subExpression": { "argumentTypes": null, - "id": 2316, + "id": 3652, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2296, - "src": "3566:17:19", + "referencedDeclaration": 3632, + "src": "3570:17:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3273,9 +3273,9 @@ "typeString": "uint256" } }, - "id": 2318, + "id": 3654, "nodeType": "ExpressionStatement", - "src": "3566:19:19" + "src": "3570:19:21" } }, { @@ -3285,19 +3285,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2322, + "id": 3658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2320, + "id": 3656, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2296, - "src": "3603:17:19", + "referencedDeclaration": 3632, + "src": "3607:17:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3307,39 +3307,39 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 2321, + "id": 3657, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "3624:9:19", + "referencedDeclaration": 3431, + "src": "3628:9:21", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "3603:30:19", + "src": "3607:30:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2325, + "id": 3661, "nodeType": "IfStatement", - "src": "3599:63:19", + "src": "3603:63:21", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 2323, + "id": 3659, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3658:4:19", + "src": "3662:4:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3347,10 +3347,10 @@ }, "value": "true" }, - "functionReturnParameters": 2294, - "id": 2324, + "functionReturnParameters": 3630, + "id": 3660, "nodeType": "Return", - "src": "3651:11:19" + "src": "3655:11:21" } } ] @@ -3361,19 +3361,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2305, + "id": 3641, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2302, + "id": 3638, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2299, - "src": "3472:1:19", + "referencedDeclaration": 3635, + "src": "3476:1:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3385,18 +3385,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2303, + "id": 3639, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2098, - "src": "3476:7:19", + "referencedDeclaration": 3434, + "src": "3480:7:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2304, + "id": 3640, "isConstant": false, "isLValue": true, "isPure": false, @@ -3404,31 +3404,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3476:14:19", + "src": "3480:14:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3472:18:19", + "src": "3476:18:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2327, + "id": 3663, "initializationExpression": { "assignments": [ - 2299 + 3635 ], "declarations": [ { "constant": false, - "id": 2299, + "id": 3635, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2331, - "src": "3457:9:19", + "scope": 3667, + "src": "3461:9:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3436,10 +3436,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2298, + "id": 3634, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3457:7:19", + "src": "3461:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3449,18 +3449,18 @@ "visibility": "internal" } ], - "id": 2301, + "id": 3637, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2300, + "id": 3636, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3469:1:19", + "src": "3473:1:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3469,12 +3469,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3457:13:19" + "src": "3461:13:21" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2307, + "id": 3643, "isConstant": false, "isLValue": false, "isPure": false, @@ -3482,15 +3482,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3492:3:19", + "src": "3496:3:21", "subExpression": { "argumentTypes": null, - "id": 2306, + "id": 3642, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2299, - "src": "3492:1:19", + "referencedDeclaration": 3635, + "src": "3496:1:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3501,25 +3501,25 @@ "typeString": "uint256" } }, - "id": 2308, + "id": 3644, "nodeType": "ExpressionStatement", - "src": "3492:3:19" + "src": "3496:3:21" }, "nodeType": "ForStatement", - "src": "3452:221:19" + "src": "3456:221:21" }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2328, + "id": 3664, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3689:5:19", + "src": "3693:5:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3527,15 +3527,15 @@ }, "value": "false" }, - "functionReturnParameters": 2294, - "id": 2329, + "functionReturnParameters": 3630, + "id": 3665, "nodeType": "Return", - "src": "3682:12:19" + "src": "3686:12:21" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param dataHash Data hash.\n @return Confirmation status.", - "id": 2331, + "id": 3667, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3543,16 +3543,16 @@ "name": "isConfirmedByRequiredFriends", "nodeType": "FunctionDefinition", "parameters": { - "id": 2291, + "id": 3627, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2290, + "id": 3626, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2331, - "src": "3334:16:19", + "scope": 3667, + "src": "3338:16:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3560,10 +3560,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2289, + "id": 3625, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3334:7:19", + "src": "3338:7:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3573,20 +3573,20 @@ "visibility": "internal" } ], - "src": "3333:18:19" + "src": "3337:18:21" }, "payable": false, "returnParameters": { - "id": 2294, + "id": 3630, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2293, + "id": 3629, "name": "", "nodeType": "VariableDeclaration", - "scope": 2331, - "src": "3397:4:19", + "scope": 3667, + "src": "3401:4:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3594,10 +3594,10 @@ "typeString": "bool" }, "typeName": { - "id": 2292, + "id": 3628, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3397:4:19", + "src": "3401:4:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3607,19 +3607,19 @@ "visibility": "internal" } ], - "src": "3396:6:19" + "src": "3400:6:21" }, - "scope": 2344, - "src": "3296:405:19", + "scope": 3680, + "src": "3300:405:21", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2342, + "id": 3678, "nodeType": "Block", - "src": "3921:39:19", + "src": "3925:39:21", "statements": [ { "expression": { @@ -3627,12 +3627,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2339, + "id": 3675, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2333, - "src": "3948:4:19", + "referencedDeclaration": 3669, + "src": "3952:4:21", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3646,18 +3646,18 @@ "typeString": "bytes memory" } ], - "id": 2338, + "id": 3674, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2694, - "src": "3938:9:19", + "referencedDeclaration": 4030, + "src": "3942:9:21", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2340, + "id": 3676, "isConstant": false, "isLValue": false, "isPure": false, @@ -3665,21 +3665,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3938:15:19", + "src": "3942:15:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2337, - "id": 2341, + "functionReturnParameters": 3673, + "id": 3677, "nodeType": "Return", - "src": "3931:22:19" + "src": "3935:22:21" } ] }, "documentation": "@dev Returns hash of data encoding owner replacement.\n @param data Data payload.\n @return Data hash.", - "id": 2343, + "id": 3679, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3687,16 +3687,16 @@ "name": "getDataHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2334, + "id": 3670, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2333, + "id": 3669, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2343, - "src": "3851:10:19", + "scope": 3679, + "src": "3855:10:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3704,10 +3704,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2332, + "id": 3668, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3851:5:19", + "src": "3855:5:21", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3717,20 +3717,20 @@ "visibility": "internal" } ], - "src": "3850:12:19" + "src": "3854:12:21" }, "payable": false, "returnParameters": { - "id": 2337, + "id": 3673, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2336, + "id": 3672, "name": "", "nodeType": "VariableDeclaration", - "scope": 2343, - "src": "3908:7:19", + "scope": 3679, + "src": "3912:7:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3738,10 +3738,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2335, + "id": 3671, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3908:7:19", + "src": "3912:7:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3751,82 +3751,82 @@ "visibility": "internal" } ], - "src": "3907:9:19" + "src": "3911:9:21" }, - "scope": 2344, - "src": "3830:130:19", + "scope": 3680, + "src": "3834:130:21", "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 2345, - "src": "306:3656:19" + "scope": 3681, + "src": "306:3660:21" } ], - "src": "0:3963:19" + "src": "0:3967:21" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", "exportedSymbols": { "SocialRecoveryModule": [ - 2344 + 3680 ] }, - "id": 2345, + "id": 3681, "nodeType": "SourceUnit", "nodes": [ { - "id": 2081, + "id": 3417, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:19" + "src": "0:23:21" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 2082, + "id": 3418, "nodeType": "ImportDirective", - "scope": 2345, + "scope": 3681, "sourceUnit": 31, - "src": "24:21:19", + "src": "24:21:21", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2083, + "id": 3419, "nodeType": "ImportDirective", - "scope": 2345, - "sourceUnit": 733, - "src": "46:23:19", + "scope": 3681, + "sourceUnit": 1862, + "src": "46:23:21", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 2084, + "id": 3420, "nodeType": "ImportDirective", - "scope": 2345, - "sourceUnit": 1104, - "src": "70:30:19", + "scope": 3681, + "sourceUnit": 2233, + "src": "70:30:21", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2085, + "id": 3421, "nodeType": "ImportDirective", - "scope": 2345, - "sourceUnit": 1514, - "src": "101:29:19", + "scope": 3681, + "sourceUnit": 2889, + "src": "101:29:21", "symbolAliases": [], "unitAlias": "" }, @@ -3836,46 +3836,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2086, + "id": 3422, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 732, - "src": "339:6:19", + "referencedDeclaration": 1861, + "src": "339:6:21", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$732", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, - "id": 2087, + "id": 3423, "nodeType": "InheritanceSpecifier", - "src": "339:6:19" + "src": "339:6:21" } ], "contractDependencies": [ 632, - 732, - 1663 + 1861, + 3065 ], "contractKind": "contract", "documentation": "@title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2344, + "id": 3680, "linearizedBaseContracts": [ - 2344, - 732, + 3680, + 1861, 632, - 1663 + 3065 ], "name": "SocialRecoveryModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2090, + "id": 3426, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2344, - "src": "353:54:19", + "scope": 3680, + "src": "353:54:21", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3883,10 +3883,10 @@ "typeString": "string" }, "typeName": { - "id": 2088, + "id": 3424, "name": "string", "nodeType": "ElementaryTypeName", - "src": "353:6:19", + "src": "353:6:21", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3895,14 +3895,14 @@ "value": { "argumentTypes": null, "hexValue": "536f6369616c205265636f76657279204d6f64756c65", - "id": 2089, + "id": 3425, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "383:24:19", + "src": "383:24:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8f499aea563eae5544b16c9123d6c7c8537a7d9dd86296aa60c65de194207230", @@ -3914,11 +3914,11 @@ }, { "constant": true, - "id": 2093, + "id": 3429, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2344, - "src": "413:40:19", + "scope": 3680, + "src": "413:40:21", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3926,10 +3926,10 @@ "typeString": "string" }, "typeName": { - "id": 2091, + "id": 3427, "name": "string", "nodeType": "ElementaryTypeName", - "src": "413:6:19", + "src": "413:6:21", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3938,14 +3938,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2092, + "id": 3428, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "446:7:19", + "src": "446:7:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -3957,25 +3957,25 @@ }, { "constant": false, - "id": 2095, + "id": 3431, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2344, - "src": "460:22:19", + "scope": 3680, + "src": "460:24:21", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 2094, - "name": "uint8", + "id": 3430, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "460:5:19", + "src": "460:7:21", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, @@ -3983,11 +3983,11 @@ }, { "constant": false, - "id": 2098, + "id": 3434, "name": "friends", "nodeType": "VariableDeclaration", - "scope": 2344, - "src": "488:24:19", + "scope": 3680, + "src": "490:24:21", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3996,19 +3996,19 @@ }, "typeName": { "baseType": { - "id": 2096, + "id": 3432, "name": "address", "nodeType": "ElementaryTypeName", - "src": "488:7:19", + "src": "490:7:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2097, + "id": 3433, "length": null, "nodeType": "ArrayTypeName", - "src": "488:9:19", + "src": "490:9:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4019,11 +4019,11 @@ }, { "constant": false, - "id": 2102, + "id": 3438, "name": "isFriend", "nodeType": "VariableDeclaration", - "scope": 2344, - "src": "583:41:19", + "scope": 3680, + "src": "585:41:21", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4031,28 +4031,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 2101, + "id": 3437, "keyType": { - "id": 2099, + "id": 3435, "name": "address", "nodeType": "ElementaryTypeName", - "src": "592:7:19", + "src": "594:7:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "583:25:19", + "src": "585:25:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2100, + "id": 3436, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "603:4:19", + "src": "605:4:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4064,11 +4064,11 @@ }, { "constant": false, - "id": 2106, + "id": 3442, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2344, - "src": "692:43:19", + "scope": 3680, + "src": "694:43:21", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4076,28 +4076,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 2105, + "id": 3441, "keyType": { - "id": 2103, + "id": 3439, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "701:7:19", + "src": "703:7:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "692:25:19", + "src": "694:25:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 2104, + "id": 3440, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "712:4:19", + "src": "714:4:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4109,11 +4109,11 @@ }, { "constant": false, - "id": 2112, + "id": 3448, "name": "isConfirmed", "nodeType": "VariableDeclaration", - "scope": 2344, - "src": "827:65:19", + "scope": 3680, + "src": "829:65:21", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4121,46 +4121,46 @@ "typeString": "mapping(bytes32 => mapping(address => bool))" }, "typeName": { - "id": 2111, + "id": 3447, "keyType": { - "id": 2107, + "id": 3443, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "836:7:19", + "src": "838:7:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "827:46:19", + "src": "829:46:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" }, "valueType": { - "id": 2110, + "id": 3446, "keyType": { - "id": 2108, + "id": 3444, "name": "address", "nodeType": "ElementaryTypeName", - "src": "856:7:19", + "src": "858:7:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "847:25:19", + "src": "849:25:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2109, + "id": 3445, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "867:4:19", + "src": "869:4:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4173,9 +4173,9 @@ }, { "body": { - "id": 2123, + "id": 3459, "nodeType": "Block", - "src": "921:98:19", + "src": "923:98:21", "statements": [ { "expression": { @@ -4185,34 +4185,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2115, + "id": 3451, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2102, - "src": "939:8:19", + "referencedDeclaration": 3438, + "src": "941:8:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2118, + "id": 3454, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2116, + "id": 3452, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2700, - "src": "948:3:19", + "referencedDeclaration": 4036, + "src": "950:3:21", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2117, + "id": 3453, "isConstant": false, "isLValue": false, "isPure": false, @@ -4220,7 +4220,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "948:10:19", + "src": "950:10:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4231,7 +4231,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "939:20:19", + "src": "941:20:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4240,14 +4240,14 @@ { "argumentTypes": null, "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c6564206279206120667269656e64", - "id": 2119, + "id": 3455, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "961:39:19", + "src": "963:39:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b1b9fb59ab33eb5ed22c2a9ea6a84e946973f30df026a85494e13c73883cce0a", @@ -4267,21 +4267,21 @@ "typeString": "literal_string \"Method can only be called by a friend\"" } ], - "id": 2114, + "id": 3450, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "931:7:19", + "referencedDeclaration": 4040, + "src": "933:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2120, + "id": 3456, "isConstant": false, "isLValue": false, "isPure": false, @@ -4289,41 +4289,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "931:70:19", + "src": "933:70:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2121, + "id": 3457, "nodeType": "ExpressionStatement", - "src": "931:70:19" + "src": "933:70:21" }, { - "id": 2122, + "id": 3458, "nodeType": "PlaceholderStatement", - "src": "1011:1:19" + "src": "1013:1:21" } ] }, "documentation": null, - "id": 2124, + "id": 3460, "name": "onlyFriend", "nodeType": "ModifierDefinition", "parameters": { - "id": 2113, + "id": 3449, "nodeType": "ParameterList", "parameters": [], - "src": "918:2:19" + "src": "920:2:21" }, - "src": "899:120:19", + "src": "901:120:21", "visibility": "internal" }, { "body": { - "id": 2198, + "id": 3534, "nodeType": "Block", - "src": "1288:566:19", + "src": "1292:566:21", "statements": [ { "expression": { @@ -4335,22 +4335,22 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2136, + "id": 3472, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2133, + "id": 3469, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2129, - "src": "1306:10:19", + "referencedDeclaration": 3465, + "src": "1310:10:21", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "BinaryOperation", @@ -4359,18 +4359,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2134, + "id": 3470, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2127, - "src": "1320:8:19", + "referencedDeclaration": 3463, + "src": "1324:8:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2135, + "id": 3471, "isConstant": false, "isLValue": false, "isPure": false, @@ -4378,13 +4378,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1320:15:19", + "src": "1324:15:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1306:29:19", + "src": "1310:29:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4393,14 +4393,14 @@ { "argumentTypes": null, "hexValue": "5468726573686f6c642063616e6e6f742065786365656420667269656e647320636f756e74", - "id": 2137, + "id": 3473, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1337:39:19", + "src": "1341:39:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8268a65eab991df6bae5d0e671467a9ef945396e4d495dc52153cedea41ef257", @@ -4420,21 +4420,21 @@ "typeString": "literal_string \"Threshold cannot exceed friends count\"" } ], - "id": 2132, + "id": 3468, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "1298:7:19", + "referencedDeclaration": 4040, + "src": "1302:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2138, + "id": 3474, "isConstant": false, "isLValue": false, "isPure": false, @@ -4442,15 +4442,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1298:79:19", + "src": "1302:79:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2139, + "id": 3475, "nodeType": "ExpressionStatement", - "src": "1298:79:19" + "src": "1302:79:21" }, { "expression": { @@ -4459,25 +4459,25 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 2143, + "id": 3479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2141, + "id": 3477, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2129, - "src": "1395:10:19", + "referencedDeclaration": 3465, + "src": "1399:10:21", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "BinaryOperation", @@ -4485,14 +4485,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 2142, + "id": 3478, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1409:1:19", + "src": "1413:1:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -4500,7 +4500,7 @@ }, "value": "2" }, - "src": "1395:15:19", + "src": "1399:15:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4509,14 +4509,14 @@ { "argumentTypes": null, "hexValue": "4174206c65617374203220667269656e6473207265717569726564", - "id": 2144, + "id": 3480, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1412:29:19", + "src": "1416:29:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_2dca24eb5124987015b2480219c9ac2baf747f0e8ae6537e9852d3e3b2773773", @@ -4536,21 +4536,21 @@ "typeString": "literal_string \"At least 2 friends required\"" } ], - "id": 2140, + "id": 3476, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "1387:7:19", + "referencedDeclaration": 4040, + "src": "1391:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2145, + "id": 3481, "isConstant": false, "isLValue": false, "isPure": false, @@ -4558,15 +4558,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1387:55:19", + "src": "1391:55:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2146, + "id": 3482, "nodeType": "ExpressionStatement", - "src": "1387:55:19" + "src": "1391:55:21" }, { "expression": { @@ -4574,18 +4574,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2147, + "id": 3483, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 731, - "src": "1452:10:19", + "referencedDeclaration": 1860, + "src": "1456:10:21", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2148, + "id": 3484, "isConstant": false, "isLValue": false, "isPure": false, @@ -4593,34 +4593,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1452:12:19", + "src": "1456:12:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2149, + "id": 3485, "nodeType": "ExpressionStatement", - "src": "1452:12:19" + "src": "1456:12:21" }, { "body": { - "id": 2188, + "id": 3524, "nodeType": "Block", - "src": "1552:236:19", + "src": "1556:236:21", "statements": [ { "assignments": [ - 2162 + 3498 ], "declarations": [ { "constant": false, - "id": 2162, + "id": 3498, "name": "friend", "nodeType": "VariableDeclaration", - "scope": 2199, - "src": "1566:14:19", + "scope": 3535, + "src": "1570:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4628,10 +4628,10 @@ "typeString": "address" }, "typeName": { - "id": 2161, + "id": 3497, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1566:7:19", + "src": "1570:7:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4641,31 +4641,31 @@ "visibility": "internal" } ], - "id": 2166, + "id": 3502, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2163, + "id": 3499, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2127, - "src": "1583:8:19", + "referencedDeclaration": 3463, + "src": "1587:8:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2165, + "id": 3501, "indexExpression": { "argumentTypes": null, - "id": 2164, + "id": 3500, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2151, - "src": "1592:1:19", + "referencedDeclaration": 3487, + "src": "1596:1:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4676,14 +4676,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1583:11:19", + "src": "1587:11:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1566:28:19" + "src": "1570:28:21" }, { "expression": { @@ -4695,19 +4695,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2170, + "id": 3506, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2168, + "id": 3504, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2162, - "src": "1616:6:19", + "referencedDeclaration": 3498, + "src": "1620:6:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4718,14 +4718,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2169, + "id": 3505, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1626:1:19", + "src": "1630:1:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4733,7 +4733,7 @@ }, "value": "0" }, - "src": "1616:11:19", + "src": "1620:11:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4742,14 +4742,14 @@ { "argumentTypes": null, "hexValue": "496e76616c696420667269656e6420616464726573732070726f7669646564", - "id": 2171, + "id": 3507, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1629:33:19", + "src": "1633:33:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_5d50911068dfec2dd53f3e08d7dec23b50affd69b91cf3e5d1e699c56bca7a55", @@ -4769,21 +4769,21 @@ "typeString": "literal_string \"Invalid friend address provided\"" } ], - "id": 2167, + "id": 3503, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "1608:7:19", + "referencedDeclaration": 4040, + "src": "1612:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2172, + "id": 3508, "isConstant": false, "isLValue": false, "isPure": false, @@ -4791,15 +4791,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1608:55:19", + "src": "1612:55:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2173, + "id": 3509, "nodeType": "ExpressionStatement", - "src": "1608:55:19" + "src": "1612:55:21" }, { "expression": { @@ -4807,7 +4807,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2178, + "id": 3514, "isConstant": false, "isLValue": false, "isPure": false, @@ -4815,31 +4815,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1685:17:19", + "src": "1689:17:21", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2175, + "id": 3511, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2102, - "src": "1686:8:19", + "referencedDeclaration": 3438, + "src": "1690:8:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2177, + "id": 3513, "indexExpression": { "argumentTypes": null, - "id": 2176, + "id": 3512, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2162, - "src": "1695:6:19", + "referencedDeclaration": 3498, + "src": "1699:6:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4850,7 +4850,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1686:16:19", + "src": "1690:16:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4864,14 +4864,14 @@ { "argumentTypes": null, "hexValue": "4475706c696361746520667269656e6420616464726573732070726f7669646564", - "id": 2179, + "id": 3515, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1704:35:19", + "src": "1708:35:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_78a0468a6f4bfa8018f886880a93f836f50f407cd02c2e42c43779f87d3af4d3", @@ -4891,21 +4891,21 @@ "typeString": "literal_string \"Duplicate friend address provided\"" } ], - "id": 2174, + "id": 3510, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "1677:7:19", + "referencedDeclaration": 4040, + "src": "1681:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2180, + "id": 3516, "isConstant": false, "isLValue": false, "isPure": false, @@ -4913,20 +4913,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1677:63:19", + "src": "1681:63:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2181, + "id": 3517, "nodeType": "ExpressionStatement", - "src": "1677:63:19" + "src": "1681:63:21" }, { "expression": { "argumentTypes": null, - "id": 2186, + "id": 3522, "isConstant": false, "isLValue": false, "isPure": false, @@ -4935,26 +4935,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2182, + "id": 3518, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2102, - "src": "1754:8:19", + "referencedDeclaration": 3438, + "src": "1758:8:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2184, + "id": 3520, "indexExpression": { "argumentTypes": null, - "id": 2183, + "id": 3519, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2162, - "src": "1763:6:19", + "referencedDeclaration": 3498, + "src": "1767:6:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4965,7 +4965,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1754:16:19", + "src": "1758:16:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4976,14 +4976,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2185, + "id": 3521, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1773:4:19", + "src": "1777:4:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4991,15 +4991,15 @@ }, "value": "true" }, - "src": "1754:23:19", + "src": "1758:23:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2187, + "id": 3523, "nodeType": "ExpressionStatement", - "src": "1754:23:19" + "src": "1758:23:21" } ] }, @@ -5009,19 +5009,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2157, + "id": 3493, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2154, + "id": 3490, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2151, - "src": "1526:1:19", + "referencedDeclaration": 3487, + "src": "1530:1:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5033,18 +5033,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2155, + "id": 3491, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2127, - "src": "1530:8:19", + "referencedDeclaration": 3463, + "src": "1534:8:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2156, + "id": 3492, "isConstant": false, "isLValue": false, "isPure": false, @@ -5052,31 +5052,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1530:15:19", + "src": "1534:15:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1526:19:19", + "src": "1530:19:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2189, + "id": 3525, "initializationExpression": { "assignments": [ - 2151 + 3487 ], "declarations": [ { "constant": false, - "id": 2151, + "id": 3487, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2199, - "src": "1511:9:19", + "scope": 3535, + "src": "1515:9:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5084,10 +5084,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2150, + "id": 3486, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1511:7:19", + "src": "1515:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5097,18 +5097,18 @@ "visibility": "internal" } ], - "id": 2153, + "id": 3489, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2152, + "id": 3488, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1523:1:19", + "src": "1527:1:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5117,12 +5117,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1511:13:19" + "src": "1515:13:21" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2159, + "id": 3495, "isConstant": false, "isLValue": false, "isPure": false, @@ -5130,15 +5130,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1547:3:19", + "src": "1551:3:21", "subExpression": { "argumentTypes": null, - "id": 2158, + "id": 3494, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2151, - "src": "1547:1:19", + "referencedDeclaration": 3487, + "src": "1551:1:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5149,29 +5149,29 @@ "typeString": "uint256" } }, - "id": 2160, + "id": 3496, "nodeType": "ExpressionStatement", - "src": "1547:3:19" + "src": "1551:3:21" }, "nodeType": "ForStatement", - "src": "1506:282:19" + "src": "1510:282:21" }, { "expression": { "argumentTypes": null, - "id": 2192, + "id": 3528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2190, + "id": 3526, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2098, - "src": "1797:7:19", + "referencedDeclaration": 3434, + "src": "1801:7:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -5181,77 +5181,77 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2191, + "id": 3527, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2127, - "src": "1807:8:19", + "referencedDeclaration": 3463, + "src": "1811:8:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "src": "1797:18:19", + "src": "1801:18:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2193, + "id": 3529, "nodeType": "ExpressionStatement", - "src": "1797:18:19" + "src": "1801:18:21" }, { "expression": { "argumentTypes": null, - "id": 2196, + "id": 3532, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2194, + "id": 3530, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1825:9:19", + "referencedDeclaration": 3431, + "src": "1829:9:21", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2195, + "id": 3531, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2129, - "src": "1837:10:19", + "referencedDeclaration": 3465, + "src": "1841:10:21", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "1825:22:19", + "src": "1829:22:21", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 2197, + "id": 3533, "nodeType": "ExpressionStatement", - "src": "1825:22:19" + "src": "1829:22:21" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _friends List of friends' addresses.\n @param _threshold Required number of friends to confirm replacement.", - "id": 2199, + "id": 3535, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5259,16 +5259,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2130, + "id": 3466, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2127, + "id": 3463, "name": "_friends", "nodeType": "VariableDeclaration", - "scope": 2199, - "src": "1231:18:19", + "scope": 3535, + "src": "1233:18:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5277,19 +5277,19 @@ }, "typeName": { "baseType": { - "id": 2125, + "id": 3461, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1231:7:19", + "src": "1233:7:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2126, + "id": 3462, "length": null, "nodeType": "ArrayTypeName", - "src": "1231:9:19", + "src": "1233:9:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -5300,51 +5300,51 @@ }, { "constant": false, - "id": 2129, + "id": 3465, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 2199, - "src": "1251:16:19", + "scope": 3535, + "src": "1253:18:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 2128, - "name": "uint8", + "id": 3464, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1251:5:19", + "src": "1253:7:21", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "1230:38:19" + "src": "1232:40:21" }, "payable": false, "returnParameters": { - "id": 2131, + "id": 3467, "nodeType": "ParameterList", "parameters": [], - "src": "1288:0:19" + "src": "1292:0:21" }, - "scope": 2344, - "src": "1216:638:19", + "scope": 3680, + "src": "1218:640:21", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2223, + "id": 3559, "nodeType": "Block", - "src": "2051:126:19", + "src": "2055:126:21", "statements": [ { "expression": { @@ -5352,7 +5352,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2210, + "id": 3546, "isConstant": false, "isLValue": false, "isPure": false, @@ -5360,31 +5360,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2069:21:19", + "src": "2073:21:21", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2207, + "id": 3543, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2106, - "src": "2070:10:19", + "referencedDeclaration": 3442, + "src": "2074:10:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2209, + "id": 3545, "indexExpression": { "argumentTypes": null, - "id": 2208, + "id": 3544, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2201, - "src": "2081:8:19", + "referencedDeclaration": 3537, + "src": "2085:8:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5395,7 +5395,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2070:20:19", + "src": "2074:20:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5409,14 +5409,14 @@ { "argumentTypes": null, "hexValue": "5265636f7665727920616c7265616479206578656375746564", - "id": 2211, + "id": 3547, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2092:27:19", + "src": "2096:27:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", @@ -5436,21 +5436,21 @@ "typeString": "literal_string \"Recovery already executed\"" } ], - "id": 2206, + "id": 3542, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2061:7:19", + "referencedDeclaration": 4040, + "src": "2065:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2212, + "id": 3548, "isConstant": false, "isLValue": false, "isPure": false, @@ -5458,20 +5458,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2061:59:19", + "src": "2065:59:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2213, + "id": 3549, "nodeType": "ExpressionStatement", - "src": "2061:59:19" + "src": "2065:59:21" }, { "expression": { "argumentTypes": null, - "id": 2221, + "id": 3557, "isConstant": false, "isLValue": false, "isPure": false, @@ -5482,26 +5482,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2214, + "id": 3550, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2112, - "src": "2130:11:19", + "referencedDeclaration": 3448, + "src": "2134:11:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2218, + "id": 3554, "indexExpression": { "argumentTypes": null, - "id": 2215, + "id": 3551, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2201, - "src": "2142:8:19", + "referencedDeclaration": 3537, + "src": "2146:8:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5512,29 +5512,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2130:21:19", + "src": "2134:21:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2219, + "id": 3555, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2216, + "id": 3552, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2700, - "src": "2152:3:19", + "referencedDeclaration": 4036, + "src": "2156:3:21", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2217, + "id": 3553, "isConstant": false, "isLValue": false, "isPure": false, @@ -5542,7 +5542,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2152:10:19", + "src": "2156:10:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5553,7 +5553,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2130:33:19", + "src": "2134:33:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5564,14 +5564,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2220, + "id": 3556, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2166:4:19", + "src": "2170:4:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5579,57 +5579,57 @@ }, "value": "true" }, - "src": "2130:40:19", + "src": "2134:40:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2222, + "id": 3558, "nodeType": "ExpressionStatement", - "src": "2130:40:19" + "src": "2134:40:21" } ] }, "documentation": "@dev Allows a friend to confirm a Safe transaction.\n @param dataHash Safe transaction hash.", - "id": 2224, + "id": 3560, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2204, + "id": 3540, "modifierName": { "argumentTypes": null, - "id": 2203, + "id": 3539, "name": "onlyFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2124, - "src": "2036:10:19", + "referencedDeclaration": 3460, + "src": "2040:10:21", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2036:10:19" + "src": "2040:10:21" } ], "name": "confirmTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 2202, + "id": 3538, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2201, + "id": 3537, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2224, - "src": "1995:16:19", + "scope": 3560, + "src": "1999:16:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5637,10 +5637,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2200, + "id": 3536, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1995:7:19", + "src": "1999:7:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5650,39 +5650,39 @@ "visibility": "internal" } ], - "src": "1994:18:19" + "src": "1998:18:21" }, "payable": false, "returnParameters": { - "id": 2205, + "id": 3541, "nodeType": "ParameterList", "parameters": [], - "src": "2051:0:19" + "src": "2055:0:21" }, - "scope": 2344, - "src": "1967:210:19", + "scope": 3680, + "src": "1971:210:21", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2287, + "id": 3623, "nodeType": "Block", - "src": "2626:509:19", + "src": "2630:509:21", "statements": [ { "assignments": [ - 2236 + 3572 ], "declarations": [ { "constant": false, - "id": 2236, + "id": 3572, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2288, - "src": "2636:17:19", + "scope": 3624, + "src": "2640:17:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -5690,10 +5690,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2235, + "id": 3571, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2636:5:19", + "src": "2640:5:21", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5703,21 +5703,21 @@ "visibility": "internal" } ], - "id": 2244, + "id": 3580, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "737761704f776e657228616464726573732c616464726573732c6164647265737329", - "id": 2239, + "id": 3575, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2680:36:19", + "src": "2684:36:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e318b52b9bee2870ac7ee0af86866eb2e8f9569b34de6028eb487e7983ba6df8", @@ -5727,12 +5727,12 @@ }, { "argumentTypes": null, - "id": 2240, + "id": 3576, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2226, - "src": "2718:9:19", + "referencedDeclaration": 3562, + "src": "2722:9:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5740,12 +5740,12 @@ }, { "argumentTypes": null, - "id": 2241, + "id": 3577, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2228, - "src": "2729:8:19", + "referencedDeclaration": 3564, + "src": "2733:8:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5753,12 +5753,12 @@ }, { "argumentTypes": null, - "id": 2242, + "id": 3578, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2230, - "src": "2739:8:19", + "referencedDeclaration": 3566, + "src": "2743:8:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5786,18 +5786,18 @@ ], "expression": { "argumentTypes": null, - "id": 2237, + "id": 3573, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2687, - "src": "2656:3:19", + "referencedDeclaration": 4023, + "src": "2660:3:21", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 2238, + "id": 3574, "isConstant": false, "isLValue": false, "isPure": true, @@ -5805,13 +5805,13 @@ "memberName": "encodeWithSignature", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2656:23:19", + "src": "2660:23:21", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (string memory) pure returns (bytes memory)" } }, - "id": 2243, + "id": 3579, "isConstant": false, "isLValue": false, "isPure": false, @@ -5819,27 +5819,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2656:92:19", + "src": "2660:92:21", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2636:112:19" + "src": "2640:112:21" }, { "assignments": [ - 2246 + 3582 ], "declarations": [ { "constant": false, - "id": 2246, + "id": 3582, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2288, - "src": "2758:16:19", + "scope": 3624, + "src": "2762:16:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5847,10 +5847,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2245, + "id": 3581, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2758:7:19", + "src": "2762:7:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5860,18 +5860,18 @@ "visibility": "internal" } ], - "id": 2250, + "id": 3586, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2248, + "id": 3584, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2236, - "src": "2789:4:19", + "referencedDeclaration": 3572, + "src": "2793:4:21", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5885,18 +5885,18 @@ "typeString": "bytes memory" } ], - "id": 2247, + "id": 3583, "name": "getDataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2343, - "src": "2777:11:19", + "referencedDeclaration": 3679, + "src": "2781:11:21", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 2249, + "id": 3585, "isConstant": false, "isLValue": false, "isPure": false, @@ -5904,14 +5904,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2777:17:19", + "src": "2781:17:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2758:36:19" + "src": "2762:36:21" }, { "expression": { @@ -5919,7 +5919,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2255, + "id": 3591, "isConstant": false, "isLValue": false, "isPure": false, @@ -5927,31 +5927,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2812:21:19", + "src": "2816:21:21", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2252, + "id": 3588, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2106, - "src": "2813:10:19", + "referencedDeclaration": 3442, + "src": "2817:10:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2254, + "id": 3590, "indexExpression": { "argumentTypes": null, - "id": 2253, + "id": 3589, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2246, - "src": "2824:8:19", + "referencedDeclaration": 3582, + "src": "2828:8:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5962,7 +5962,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2813:20:19", + "src": "2817:20:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5976,14 +5976,14 @@ { "argumentTypes": null, "hexValue": "5265636f7665727920616c7265616479206578656375746564", - "id": 2256, + "id": 3592, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2835:27:19", + "src": "2839:27:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", @@ -6003,21 +6003,21 @@ "typeString": "literal_string \"Recovery already executed\"" } ], - "id": 2251, + "id": 3587, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2804:7:19", + "referencedDeclaration": 4040, + "src": "2808:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2257, + "id": 3593, "isConstant": false, "isLValue": false, "isPure": false, @@ -6025,15 +6025,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2804:59:19", + "src": "2808:59:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2258, + "id": 3594, "nodeType": "ExpressionStatement", - "src": "2804:59:19" + "src": "2808:59:21" }, { "expression": { @@ -6044,12 +6044,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2261, + "id": 3597, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2246, - "src": "2910:8:19", + "referencedDeclaration": 3582, + "src": "2914:8:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6063,18 +6063,18 @@ "typeString": "bytes32" } ], - "id": 2260, + "id": 3596, "name": "isConfirmedByRequiredFriends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2331, - "src": "2881:28:19", + "referencedDeclaration": 3667, + "src": "2885:28:21", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, - "id": 2262, + "id": 3598, "isConstant": false, "isLValue": false, "isPure": false, @@ -6082,7 +6082,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2881:38:19", + "src": "2885:38:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6091,14 +6091,14 @@ { "argumentTypes": null, "hexValue": "5265636f7665727920686173206e6f7420656e6f75676820636f6e6669726d6174696f6e73", - "id": 2263, + "id": 3599, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2921:39:19", + "src": "2925:39:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_cb12b81371f920ba15a762526f9a95cbe925aecb372a64dbeac8ce5c02e0c0e8", @@ -6118,21 +6118,21 @@ "typeString": "literal_string \"Recovery has not enough confirmations\"" } ], - "id": 2259, + "id": 3595, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2873:7:19", + "referencedDeclaration": 4040, + "src": "2877:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2264, + "id": 3600, "isConstant": false, "isLValue": false, "isPure": false, @@ -6140,20 +6140,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2873:88:19", + "src": "2877:88:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2265, + "id": 3601, "nodeType": "ExpressionStatement", - "src": "2873:88:19" + "src": "2877:88:21" }, { "expression": { "argumentTypes": null, - "id": 2270, + "id": 3606, "isConstant": false, "isLValue": false, "isPure": false, @@ -6162,26 +6162,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2266, + "id": 3602, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2106, - "src": "2971:10:19", + "referencedDeclaration": 3442, + "src": "2975:10:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2268, + "id": 3604, "indexExpression": { "argumentTypes": null, - "id": 2267, + "id": 3603, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2246, - "src": "2982:8:19", + "referencedDeclaration": 3582, + "src": "2986:8:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6192,7 +6192,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2971:20:19", + "src": "2975:20:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6203,14 +6203,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2269, + "id": 3605, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2994:4:19", + "src": "2998:4:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6218,15 +6218,15 @@ }, "value": "true" }, - "src": "2971:27:19", + "src": "2975:27:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2271, + "id": 3607, "nodeType": "ExpressionStatement", - "src": "2971:27:19" + "src": "2975:27:21" }, { "expression": { @@ -6240,14 +6240,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2276, + "id": 3612, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 697, - "src": "3058:7:19", + "referencedDeclaration": 1826, + "src": "3062:7:21", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } } @@ -6255,24 +6255,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } ], - "id": 2275, + "id": 3611, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3050:7:19", + "src": "3054:7:21", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 2277, + "id": 3613, "isConstant": false, "isLValue": false, "isPure": false, @@ -6280,7 +6280,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3050:16:19", + "src": "3054:16:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6289,14 +6289,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 2278, + "id": 3614, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3068:1:19", + "src": "3072:1:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6306,12 +6306,12 @@ }, { "argumentTypes": null, - "id": 2279, + "id": 3615, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2236, - "src": "3071:4:19", + "referencedDeclaration": 3572, + "src": "3075:4:21", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6323,18 +6323,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2280, + "id": 3616, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "3077:4:19", + "src": "3081:4:21", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 2281, + "id": 3617, "isConstant": false, "isLValue": false, "isPure": false, @@ -6342,13 +6342,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "3077:14:19", + "src": "3081:14:21", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 2282, + "id": 3618, "isConstant": false, "isLValue": false, "isPure": true, @@ -6356,7 +6356,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3077:19:19", + "src": "3081:19:21", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -6384,32 +6384,32 @@ ], "expression": { "argumentTypes": null, - "id": 2273, + "id": 3609, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 697, - "src": "3016:7:19", + "referencedDeclaration": 1826, + "src": "3020:7:21", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, - "id": 2274, + "id": 3610, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 930, - "src": "3016:33:19", + "referencedDeclaration": 2059, + "src": "3020:33:21", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2283, + "id": 3619, "isConstant": false, "isLValue": false, "isPure": false, @@ -6417,7 +6417,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3016:81:19", + "src": "3020:81:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6426,14 +6426,14 @@ { "argumentTypes": null, "hexValue": "436f756c64206e6f742065786563757465207265636f76657279", - "id": 2284, + "id": 3620, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3099:28:19", + "src": "3103:28:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_3515587d60c3ee9920dfa4bee22a25e99aacbb3cec35d7cbe6c839f5b9ffdff1", @@ -6453,21 +6453,21 @@ "typeString": "literal_string \"Could not execute recovery\"" } ], - "id": 2272, + "id": 3608, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "3008:7:19", + "referencedDeclaration": 4040, + "src": "3012:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2285, + "id": 3621, "isConstant": false, "isLValue": false, "isPure": false, @@ -6475,57 +6475,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3008:120:19", + "src": "3012:120:21", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2286, + "id": 3622, "nodeType": "ExpressionStatement", - "src": "3008:120:19" + "src": "3012:120:21" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.\n @return Returns if transaction can be executed.", - "id": 2288, + "id": 3624, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2233, + "id": 3569, "modifierName": { "argumentTypes": null, - "id": 2232, + "id": 3568, "name": "onlyFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2124, - "src": "2611:10:19", + "referencedDeclaration": 3460, + "src": "2615:10:21", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2611:10:19" + "src": "2615:10:21" } ], "name": "recoverAccess", "nodeType": "FunctionDefinition", "parameters": { - "id": 2231, + "id": 3567, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2226, + "id": 3562, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 2288, - "src": "2533:17:19", + "scope": 3624, + "src": "2537:17:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6533,10 +6533,10 @@ "typeString": "address" }, "typeName": { - "id": 2225, + "id": 3561, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2533:7:19", + "src": "2537:7:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6547,11 +6547,11 @@ }, { "constant": false, - "id": 2228, + "id": 3564, "name": "oldOwner", "nodeType": "VariableDeclaration", - "scope": 2288, - "src": "2552:16:19", + "scope": 3624, + "src": "2556:16:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6559,10 +6559,10 @@ "typeString": "address" }, "typeName": { - "id": 2227, + "id": 3563, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2552:7:19", + "src": "2556:7:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6573,11 +6573,11 @@ }, { "constant": false, - "id": 2230, + "id": 3566, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 2288, - "src": "2570:16:19", + "scope": 3624, + "src": "2574:16:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6585,10 +6585,10 @@ "typeString": "address" }, "typeName": { - "id": 2229, + "id": 3565, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2570:7:19", + "src": "2574:7:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6598,37 +6598,37 @@ "visibility": "internal" } ], - "src": "2532:55:19" + "src": "2536:55:21" }, "payable": false, "returnParameters": { - "id": 2234, + "id": 3570, "nodeType": "ParameterList", "parameters": [], - "src": "2626:0:19" + "src": "2630:0:21" }, - "scope": 2344, - "src": "2510:625:19", + "scope": 3680, + "src": "2514:625:21", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2330, + "id": 3666, "nodeType": "Block", - "src": "3407:294:19", + "src": "3411:294:21", "statements": [ { "assignments": [], "declarations": [ { "constant": false, - "id": 2296, + "id": 3632, "name": "confirmationCount", "nodeType": "VariableDeclaration", - "scope": 2331, - "src": "3417:25:19", + "scope": 3667, + "src": "3421:25:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6636,10 +6636,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2295, + "id": 3631, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3417:7:19", + "src": "3421:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6649,16 +6649,16 @@ "visibility": "internal" } ], - "id": 2297, + "id": 3633, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "3417:25:19" + "src": "3421:25:21" }, { "body": { - "id": 2326, + "id": 3662, "nodeType": "Block", - "src": "3497:176:19", + "src": "3501:176:21", "statements": [ { "condition": { @@ -6667,26 +6667,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2309, + "id": 3645, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2112, - "src": "3515:11:19", + "referencedDeclaration": 3448, + "src": "3519:11:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2311, + "id": 3647, "indexExpression": { "argumentTypes": null, - "id": 2310, + "id": 3646, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2290, - "src": "3527:8:19", + "referencedDeclaration": 3626, + "src": "3531:8:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6697,37 +6697,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3515:21:19", + "src": "3519:21:21", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2315, + "id": 3651, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2312, + "id": 3648, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2098, - "src": "3537:7:19", + "referencedDeclaration": 3434, + "src": "3541:7:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2314, + "id": 3650, "indexExpression": { "argumentTypes": null, - "id": 2313, + "id": 3649, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2299, - "src": "3545:1:19", + "referencedDeclaration": 3635, + "src": "3549:1:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6738,7 +6738,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3537:10:19", + "src": "3541:10:21", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6749,20 +6749,20 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3515:33:19", + "src": "3519:33:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2319, + "id": 3655, "nodeType": "IfStatement", - "src": "3511:74:19", + "src": "3515:74:21", "trueBody": { "expression": { "argumentTypes": null, - "id": 2317, + "id": 3653, "isConstant": false, "isLValue": false, "isPure": false, @@ -6770,15 +6770,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3566:19:19", + "src": "3570:19:21", "subExpression": { "argumentTypes": null, - "id": 2316, + "id": 3652, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2296, - "src": "3566:17:19", + "referencedDeclaration": 3632, + "src": "3570:17:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6789,9 +6789,9 @@ "typeString": "uint256" } }, - "id": 2318, + "id": 3654, "nodeType": "ExpressionStatement", - "src": "3566:19:19" + "src": "3570:19:21" } }, { @@ -6801,19 +6801,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2322, + "id": 3658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2320, + "id": 3656, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2296, - "src": "3603:17:19", + "referencedDeclaration": 3632, + "src": "3607:17:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6823,39 +6823,39 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 2321, + "id": 3657, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "3624:9:19", + "referencedDeclaration": 3431, + "src": "3628:9:21", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "3603:30:19", + "src": "3607:30:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2325, + "id": 3661, "nodeType": "IfStatement", - "src": "3599:63:19", + "src": "3603:63:21", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 2323, + "id": 3659, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3658:4:19", + "src": "3662:4:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6863,10 +6863,10 @@ }, "value": "true" }, - "functionReturnParameters": 2294, - "id": 2324, + "functionReturnParameters": 3630, + "id": 3660, "nodeType": "Return", - "src": "3651:11:19" + "src": "3655:11:21" } } ] @@ -6877,19 +6877,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2305, + "id": 3641, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2302, + "id": 3638, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2299, - "src": "3472:1:19", + "referencedDeclaration": 3635, + "src": "3476:1:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6901,18 +6901,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2303, + "id": 3639, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2098, - "src": "3476:7:19", + "referencedDeclaration": 3434, + "src": "3480:7:21", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2304, + "id": 3640, "isConstant": false, "isLValue": true, "isPure": false, @@ -6920,31 +6920,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3476:14:19", + "src": "3480:14:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3472:18:19", + "src": "3476:18:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2327, + "id": 3663, "initializationExpression": { "assignments": [ - 2299 + 3635 ], "declarations": [ { "constant": false, - "id": 2299, + "id": 3635, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2331, - "src": "3457:9:19", + "scope": 3667, + "src": "3461:9:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6952,10 +6952,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2298, + "id": 3634, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3457:7:19", + "src": "3461:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6965,18 +6965,18 @@ "visibility": "internal" } ], - "id": 2301, + "id": 3637, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2300, + "id": 3636, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3469:1:19", + "src": "3473:1:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6985,12 +6985,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3457:13:19" + "src": "3461:13:21" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2307, + "id": 3643, "isConstant": false, "isLValue": false, "isPure": false, @@ -6998,15 +6998,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3492:3:19", + "src": "3496:3:21", "subExpression": { "argumentTypes": null, - "id": 2306, + "id": 3642, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2299, - "src": "3492:1:19", + "referencedDeclaration": 3635, + "src": "3496:1:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7017,25 +7017,25 @@ "typeString": "uint256" } }, - "id": 2308, + "id": 3644, "nodeType": "ExpressionStatement", - "src": "3492:3:19" + "src": "3496:3:21" }, "nodeType": "ForStatement", - "src": "3452:221:19" + "src": "3456:221:21" }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2328, + "id": 3664, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3689:5:19", + "src": "3693:5:21", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7043,15 +7043,15 @@ }, "value": "false" }, - "functionReturnParameters": 2294, - "id": 2329, + "functionReturnParameters": 3630, + "id": 3665, "nodeType": "Return", - "src": "3682:12:19" + "src": "3686:12:21" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param dataHash Data hash.\n @return Confirmation status.", - "id": 2331, + "id": 3667, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7059,16 +7059,16 @@ "name": "isConfirmedByRequiredFriends", "nodeType": "FunctionDefinition", "parameters": { - "id": 2291, + "id": 3627, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2290, + "id": 3626, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2331, - "src": "3334:16:19", + "scope": 3667, + "src": "3338:16:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7076,10 +7076,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2289, + "id": 3625, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3334:7:19", + "src": "3338:7:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -7089,20 +7089,20 @@ "visibility": "internal" } ], - "src": "3333:18:19" + "src": "3337:18:21" }, "payable": false, "returnParameters": { - "id": 2294, + "id": 3630, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2293, + "id": 3629, "name": "", "nodeType": "VariableDeclaration", - "scope": 2331, - "src": "3397:4:19", + "scope": 3667, + "src": "3401:4:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7110,10 +7110,10 @@ "typeString": "bool" }, "typeName": { - "id": 2292, + "id": 3628, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3397:4:19", + "src": "3401:4:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7123,19 +7123,19 @@ "visibility": "internal" } ], - "src": "3396:6:19" + "src": "3400:6:21" }, - "scope": 2344, - "src": "3296:405:19", + "scope": 3680, + "src": "3300:405:21", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2342, + "id": 3678, "nodeType": "Block", - "src": "3921:39:19", + "src": "3925:39:21", "statements": [ { "expression": { @@ -7143,12 +7143,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2339, + "id": 3675, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2333, - "src": "3948:4:19", + "referencedDeclaration": 3669, + "src": "3952:4:21", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7162,18 +7162,18 @@ "typeString": "bytes memory" } ], - "id": 2338, + "id": 3674, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2694, - "src": "3938:9:19", + "referencedDeclaration": 4030, + "src": "3942:9:21", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2340, + "id": 3676, "isConstant": false, "isLValue": false, "isPure": false, @@ -7181,21 +7181,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3938:15:19", + "src": "3942:15:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2337, - "id": 2341, + "functionReturnParameters": 3673, + "id": 3677, "nodeType": "Return", - "src": "3931:22:19" + "src": "3935:22:21" } ] }, "documentation": "@dev Returns hash of data encoding owner replacement.\n @param data Data payload.\n @return Data hash.", - "id": 2343, + "id": 3679, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7203,16 +7203,16 @@ "name": "getDataHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2334, + "id": 3670, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2333, + "id": 3669, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2343, - "src": "3851:10:19", + "scope": 3679, + "src": "3855:10:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7220,10 +7220,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2332, + "id": 3668, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3851:5:19", + "src": "3855:5:21", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -7233,20 +7233,20 @@ "visibility": "internal" } ], - "src": "3850:12:19" + "src": "3854:12:21" }, "payable": false, "returnParameters": { - "id": 2337, + "id": 3673, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2336, + "id": 3672, "name": "", "nodeType": "VariableDeclaration", - "scope": 2343, - "src": "3908:7:19", + "scope": 3679, + "src": "3912:7:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7254,10 +7254,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2335, + "id": 3671, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3908:7:19", + "src": "3912:7:21", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -7267,20 +7267,20 @@ "visibility": "internal" } ], - "src": "3907:9:19" + "src": "3911:9:21" }, - "scope": 2344, - "src": "3830:130:19", + "scope": 3680, + "src": "3834:130:21", "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 2345, - "src": "306:3656:19" + "scope": 3681, + "src": "306:3660:21" } ], - "src": "0:3963:19" + "src": "0:3967:21" }, "compiler": { "name": "solc", @@ -7290,28 +7290,28 @@ "4": { "events": {}, "links": {}, - "address": "0xf6dc186ef518dfecabd521bf747b36954b07e623", - "transactionHash": "0x9ced12659bf1ee6ea54926b65432e20ce5170a5b2ba2f5a803f082683225169b" + "address": "0x9b7aa0f7a7b44616d0a9d7b955ebd5d93ed281ed", + "transactionHash": "0x5c01f255739a7f684c226c579c4cae34da68bfacb0b7b4e7e39b5f7288dcace6" }, - "1529327661534": { + "1530013596495": { "events": {}, "links": {}, - "address": "0x2678fd36b9e8cda27b473a3ff6f79749644ffd0a", - "transactionHash": "0x03a01cb2c328fbcab8f5d76e3553275e442885ade5c41dff35fea15e6647c72c" + "address": "0xeaf2060e0be99ce5d5c25cf5122f09dac5ab24a1", + "transactionHash": "0xbda6edd30fdaa35267fc715f4db20e738b911db0e7ab3a857c39f48e5091f722" }, - "1529333415702": { + "1530525742205": { "events": {}, "links": {}, - "address": "0x9d6575ea466550e050f4c08eff7075ab099db8f6", - "transactionHash": "0x8c0dc99f8f345ac15f129ef0e98e60a7fde3975cf8b77fbb9f0b1e75eae34c30" + "address": "0x49753b0c280e394d9e949ce790d8f2552c4752cc", + "transactionHash": "0xa16f1a61604288a7e29ef1a2ec02c9a4e978585340acca518d37bfb75201d1f9" }, - "1529652204341": { + "1530611935189": { "events": {}, "links": {}, - "address": "0xdfcdce812f5f001cdd35506bfb01cc02e31ae5a2", - "transactionHash": "0x6c40a3712932d0e03f4a6f0ad0f39be479bac35533935534577070e087245a52" + "address": "0x54bd49e1cff1a60da063499da80e131aa5408e7d", + "transactionHash": "0xa16f1a61604288a7e29ef1a2ec02c9a4e978585340acca518d37bfb75201d1f9" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-22T07:24:16.270Z" + "updatedAt": "2018-07-03T09:59:18.536Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/StateChannelModule.json b/safe-contracts/build/contracts/StateChannelModule.json index 91d38e65ae..f8ad1634c9 100644 --- a/safe-contracts/build/contracts/StateChannelModule.json +++ b/safe-contracts/build/contracts/StateChannelModule.json @@ -15,33 +15,6 @@ "stateMutability": "view", "type": "function" }, - { - "constant": true, - "inputs": [ - { - "name": "txHash", - "type": "bytes32" - }, - { - "name": "messageSignature", - "type": "bytes" - }, - { - "name": "pos", - "type": "uint256" - } - ], - "name": "recoverKey", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, { "constant": false, "inputs": [ @@ -70,37 +43,6 @@ "stateMutability": "view", "type": "function" }, - { - "constant": true, - "inputs": [ - { - "name": "signatures", - "type": "bytes" - }, - { - "name": "pos", - "type": "uint256" - } - ], - "name": "signatureSplit", - "outputs": [ - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, { "constant": true, "inputs": [ @@ -213,62 +155,62 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50611303806100206000396000f3006080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632b500041146100a9578063481c6a751461016f57806363f44b59146101c65780637de7edef14610287578063a3f4df7e146102ca578063b817dcc21461035a578063ba0bba4014610405578063e52cb36a1461041c578063f6cc15d014610461578063ffa1ad7414610551575b600080fd5b3480156100b557600080fd5b50610151600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291905050506105e1565b60405180826000191660001916815260200191505060405180910390f35b34801561017b57600080fd5b50610184610869565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101d257600080fd5b506102456004803603810190808035600019169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192908035906020019092919050505061088f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561029357600080fd5b506102c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610938565b005b3480156102d657600080fd5b506102df610b1b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561031f578082015181840152602081019050610304565b50505050905090810190601f16801561034c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036657600080fd5b506103cb600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610b54565b604051808460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001935050505060405180910390f35b34801561041157600080fd5b5061041a610b83565b005b34801561042857600080fd5b5061044b6004803603810190808035600019169060200190929190505050610b8d565b6040518082815260200191505060405180910390f35b34801561046d57600080fd5b5061054f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610ba5565b005b34801561055d57600080fd5b50610566610e74565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105a657808201518184015260208101905061058b565b50505050905090810190601f1680156105d35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156107855780518252602082019150602081019050602083039250610760565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156107b357fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515610831578051825260208201915060208101905060208303925061080c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008061089f8686610b54565b809350819450829550505050600187848484604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610922573d6000803e3d6000fd5b5050506020604051035193505050509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ad8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b60008060008360410260208101860151925060408101860151915060ff60418201870151169350509250925092565b610b8b610ead565b565b60026020528060005260406000206000915090505481565b6000610bb487878787876105e1565b9050600060026000836000191660001916815260200190815260200160002054141515610c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f5472616e73616374696f6e20616c72656164792065786563757465640000000081525060200191505060405180910390fd5b610c538183610fa0565b600160026000836000191660001916815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7888888886040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610d2d57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610d6d578082015181840152602081019050610d52565b50505050905090810190601f168015610d9a5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610dbc57600080fd5b505af1158015610dd0573d6000803e3d6000fd5b505050506040513d6020811015610de657600080fd5b81019080805190602001909291905050501515610e6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f756c64206e6f742065786563757465207472616e73616374696f6e00000081525060200191505060405180910390fd5b50505050505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610f5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561103057600080fd5b505af1158015611044573d6000803e3d6000fd5b505050506040513d602081101561105a57600080fd5b81019080805190602001909291905050509050600091505b8060ff168210156112cf5761108886868461088f565b9250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561114757600080fd5b505af115801561115b573d6000803e3d6000fd5b505050506040513d602081101561117157600080fd5b810190808051906020019092919050505015156111f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5369676e6174757265206e6f742070726f7669646564206279206f776e65720081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161115156112bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f5369676e61747572657320617265206e6f74206f726465726564206279206f7781526020017f6e6572206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b8293508180600101925050611072565b5050505050505600a165627a7a7230582058005d7099f142b8a994a658f0fe2532539e3411fb7a3e6f71c5082fc24376d30029", - "deployedBytecode": "0x6080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632b500041146100a9578063481c6a751461016f57806363f44b59146101c65780637de7edef14610287578063a3f4df7e146102ca578063b817dcc21461035a578063ba0bba4014610405578063e52cb36a1461041c578063f6cc15d014610461578063ffa1ad7414610551575b600080fd5b3480156100b557600080fd5b50610151600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291905050506105e1565b60405180826000191660001916815260200191505060405180910390f35b34801561017b57600080fd5b50610184610869565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101d257600080fd5b506102456004803603810190808035600019169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192908035906020019092919050505061088f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561029357600080fd5b506102c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610938565b005b3480156102d657600080fd5b506102df610b1b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561031f578082015181840152602081019050610304565b50505050905090810190601f16801561034c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036657600080fd5b506103cb600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610b54565b604051808460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001935050505060405180910390f35b34801561041157600080fd5b5061041a610b83565b005b34801561042857600080fd5b5061044b6004803603810190808035600019169060200190929190505050610b8d565b6040518082815260200191505060405180910390f35b34801561046d57600080fd5b5061054f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610ba5565b005b34801561055d57600080fd5b50610566610e74565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105a657808201518184015260208101905061058b565b50505050905090810190601f1680156105d35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156107855780518252602082019150602081019050602083039250610760565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156107b357fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515610831578051825260208201915060208101905060208303925061080c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008061089f8686610b54565b809350819450829550505050600187848484604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610922573d6000803e3d6000fd5b5050506020604051035193505050509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ad8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b60008060008360410260208101860151925060408101860151915060ff60418201870151169350509250925092565b610b8b610ead565b565b60026020528060005260406000206000915090505481565b6000610bb487878787876105e1565b9050600060026000836000191660001916815260200190815260200160002054141515610c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f5472616e73616374696f6e20616c72656164792065786563757465640000000081525060200191505060405180910390fd5b610c538183610fa0565b600160026000836000191660001916815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7888888886040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610d2d57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610d6d578082015181840152602081019050610d52565b50505050905090810190601f168015610d9a5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610dbc57600080fd5b505af1158015610dd0573d6000803e3d6000fd5b505050506040513d6020811015610de657600080fd5b81019080805190602001909291905050501515610e6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f756c64206e6f742065786563757465207472616e73616374696f6e00000081525060200191505060405180910390fd5b50505050505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610f5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561103057600080fd5b505af1158015611044573d6000803e3d6000fd5b505050506040513d602081101561105a57600080fd5b81019080805190602001909291905050509050600091505b8060ff168210156112cf5761108886868461088f565b9250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561114757600080fd5b505af115801561115b573d6000803e3d6000fd5b505050506040513d602081101561117157600080fd5b810190808051906020019092919050505015156111f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5369676e6174757265206e6f742070726f7669646564206279206f776e65720081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161115156112bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f5369676e61747572657320617265206e6f74206f726465726564206279206f7781526020017f6e6572206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b8293508180600101925050611072565b5050505050505600a165627a7a7230582058005d7099f142b8a994a658f0fe2532539e3411fb7a3e6f71c5082fc24376d30029", - "sourceMap": "305:2840:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;305:2840:11;;;;;;;", - "deployedSourceMap": "305:2840:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2814:329;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2814:329:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;477:328:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;477:328:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;370:52:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;370:52:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;370:52:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;982:912:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;982:912:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;660:65:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;660:65:11;;;;;;566:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;566:46:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1190:634;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1190:634:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;428:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;428:40:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;428:40:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2814:329;3017:7;3079:4;3074:10;;3091:1;3086:7;;3095:4;3101:2;3105:5;3112:4;3118:9;3129:5;3057:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3057:78:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3057:78:11;;;3047:89;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3047:89:11;;;;;;;;;;;;;;;;3040:96;;2814:329;;;;;;;:::o;262:28:5:-;;;;;;;;;;;;;:::o;477:328:9:-;627:7;651;668:9;687;718:37;733:16;751:3;718:14;:37::i;:::-;706:49;;;;;;;;;;;;772:26;782:6;790:1;793;796;772:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;772:26:9;;;;;;;;765:33;;477:328;;;;;;;;:::o;626:248:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:4;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;370:52:11:-;;;;;;;;;;;;;;;;;;;;:::o;982:912:9:-;1082:7;1091:9;1102;1402:3;1396:4;1392:14;1464:4;1450:12;1446:23;1434:10;1430:40;1424:47;1419:52;;1529:4;1515:12;1511:23;1499:10;1495:40;1489:47;1484:52;;1873:4;1864;1850:12;1846:23;1834:10;1830:40;1824:47;1820:58;1815:63;;1358:530;;;;;;:::o;660:65:11:-;706:12;:10;:12::i;:::-;660:65::o;566:46::-;;;;;;;;;;;;;;;;;:::o;1190:634::-;1400:23;1426:53;1445:2;1449:5;1456:4;1462:9;1473:5;1426:18;:53::i;:::-;1400:79;;1528:1;1497:10;:27;1508:15;1497:27;;;;;;;;;;;;;;;;;;:32;1489:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1572:38;1582:15;1599:10;1572:9;:38::i;:::-;1703:1;1673:10;:27;1684:15;1673:27;;;;;;;;;;;;;;;;;:31;;;;1722:7;;;;;;;;;;;:33;;;1756:2;1760:5;1767:4;1773:9;1722:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1722:61:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1722:61:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1722:61:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1722:61:11;;;;;;;;;;;;;;;;1714:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1190:634;;;;;;;:::o;428:40::-;;;;;;;;;;;;;;;;;;;;:::o;434:300:5:-;648:1;636:7;;;;;;;;;;;628:21;;;620:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:10;692:7;;:35;;;;;;;;;;;;;;;;;;434:300::o;1830:706:11:-;1988:17;2028:20;2058:9;2077:15;2016:1;1988:30;;2108:7;;;;;;;;;;;2095:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2095:36:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2095:36:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2095:36:11;;;;;;;;;;;;;;;;2077:54;;2192:1;2188:5;;2183:347;2199:9;2195:13;;:1;:13;2183:347;;;2244:42;2255:15;2272:10;2284:1;2244:10;:42::i;:::-;2229:57;;2321:7;;;;;;;;;;;2308:29;;;2338:12;2308:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2308:43:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2308:43:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2308:43:11;;;;;;;;;;;;;;;;2300:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2424:9;2409:24;;:12;:24;;;2401:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2507:12;2495:24;;2210:3;;;;;;;2183:347;;;1830:706;;;;;;:::o", - "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\nimport \"../OwnerManager.sol\";\nimport \"../SignatureValidator.sol\";\n\n\n/// @title Gnosis Safe State Module - A module that allows interaction with statechannels.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract StateChannelModule is Module, SignatureValidator {\n\n string public constant NAME = \"State Channel Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => uint256) public isExecuted;\n\n /// @dev Setup function sets manager\n function setup()\n public\n {\n setManager();\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n /// @param signatures Packed signature data ({bytes32 r}{bytes32 s}{uint8 v})\n function execTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce,\n bytes signatures\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(isExecuted[transactionHash] == 0, \"Transaction already executed\");\n checkHash(transactionHash, signatures);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = 1;\n require(manager.execTransactionFromModule(to, value, data, operation), \"Could not execute transaction\");\n }\n\n function checkHash(bytes32 transactionHash, bytes signatures)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n uint8 threshold = OwnerManager(manager).getThreshold();\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = recoverKey(transactionHash, signatures, i);\n require(OwnerManager(manager).isOwner(currentOwner), \"Signature not provided by owner\");\n require(currentOwner > lastOwner, \"Signatures are not ordered by owner address\");\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, nonce));\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b5061117e806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632b50004114610093578063481c6a75146101595780637de7edef146101b0578063a3f4df7e146101f3578063ba0bba4014610283578063e52cb36a1461029a578063f6cc15d0146102df578063ffa1ad74146103cf575b600080fd5b34801561009f57600080fd5b5061013b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291908035906020019092919050505061045f565b60405180826000191660001916815260200191505060405180910390f35b34801561016557600080fd5b5061016e6106e7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101bc57600080fd5b506101f1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061070d565b005b3480156101ff57600080fd5b506102086108f0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561024857808201518184015260208101905061022d565b50505050905090810190601f1680156102755780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028f57600080fd5b50610298610929565b005b3480156102a657600080fd5b506102c96004803603810190808035600019169060200190929190505050610933565b6040518082815260200191505060405180910390f35b3480156102eb57600080fd5b506103cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061094b565b005b3480156103db57600080fd5b506103e4610c1a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610424578082015181840152602081019050610409565b50505050905090810190601f1680156104515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b60208310151561060357805182526020820191506020810190506020830392506105de565b6001836020036101000a03801982511681845116808217855250505050505090500183600281111561063157fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156106af578051825260208201915060208101905060208303925061068a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610931610c53565b565b60026020528060005260406000206000915090505481565b600061095a878787878761045f565b90506000600260008360001916600019168152602001908152602001600020541415156109ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f5472616e73616374696f6e20616c72656164792065786563757465640000000081525060200191505060405180910390fd5b6109f98183610d46565b600160026000836000191660001916815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7888888886040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610ad357fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610b13578082015181840152602081019050610af8565b50505050905090810190601f168015610b405780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610b6257600080fd5b505af1158015610b76573d6000803e3d6000fd5b505050506040513d6020811015610b8c57600080fd5b81019080805190602001909291905050501515610c11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f756c64206e6f742065786563757465207472616e73616374696f6e00000081525060200191505060405180910390fd5b50505050505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610dd657600080fd5b505af1158015610dea573d6000803e3d6000fd5b505050506040513d6020811015610e0057600080fd5b81019080805190602001909291905050509050600091505b8082101561107257610e2b86868461107a565b9250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610eea57600080fd5b505af1158015610efe573d6000803e3d6000fd5b505050506040513d6020811015610f1457600080fd5b81019080805190602001909291905050501515610f99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5369676e6174757265206e6f742070726f7669646564206279206f776e65720081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16111515611062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f5369676e61747572657320617265206e6f74206f726465726564206279206f7781526020017f6e6572206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b8293508180600101925050610e18565b505050505050565b60008060008061108a8686611123565b809350819450829550505050600187848484604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af115801561110d573d6000803e3d6000fd5b5050506020604051035193505050509392505050565b60008060008360410260208101860151925060408101860151915060ff604182018701511693505092509250925600a165627a7a72305820d2834484d40c8ee60c472d27914d0e4d5029520c243a789fc3184ddb6e4ae9410029", + "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632b50004114610093578063481c6a75146101595780637de7edef146101b0578063a3f4df7e146101f3578063ba0bba4014610283578063e52cb36a1461029a578063f6cc15d0146102df578063ffa1ad74146103cf575b600080fd5b34801561009f57600080fd5b5061013b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291908035906020019092919050505061045f565b60405180826000191660001916815260200191505060405180910390f35b34801561016557600080fd5b5061016e6106e7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101bc57600080fd5b506101f1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061070d565b005b3480156101ff57600080fd5b506102086108f0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561024857808201518184015260208101905061022d565b50505050905090810190601f1680156102755780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028f57600080fd5b50610298610929565b005b3480156102a657600080fd5b506102c96004803603810190808035600019169060200190929190505050610933565b6040518082815260200191505060405180910390f35b3480156102eb57600080fd5b506103cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061094b565b005b3480156103db57600080fd5b506103e4610c1a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610424578082015181840152602081019050610409565b50505050905090810190601f1680156104515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b60208310151561060357805182526020820191506020810190506020830392506105de565b6001836020036101000a03801982511681845116808217855250505050505090500183600281111561063157fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156106af578051825260208201915060208101905060208303925061068a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610931610c53565b565b60026020528060005260406000206000915090505481565b600061095a878787878761045f565b90506000600260008360001916600019168152602001908152602001600020541415156109ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f5472616e73616374696f6e20616c72656164792065786563757465640000000081525060200191505060405180910390fd5b6109f98183610d46565b600160026000836000191660001916815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7888888886040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610ad357fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610b13578082015181840152602081019050610af8565b50505050905090810190601f168015610b405780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610b6257600080fd5b505af1158015610b76573d6000803e3d6000fd5b505050506040513d6020811015610b8c57600080fd5b81019080805190602001909291905050501515610c11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f756c64206e6f742065786563757465207472616e73616374696f6e00000081525060200191505060405180910390fd5b50505050505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610dd657600080fd5b505af1158015610dea573d6000803e3d6000fd5b505050506040513d6020811015610e0057600080fd5b81019080805190602001909291905050509050600091505b8082101561107257610e2b86868461107a565b9250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610eea57600080fd5b505af1158015610efe573d6000803e3d6000fd5b505050506040513d6020811015610f1457600080fd5b81019080805190602001909291905050501515610f99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5369676e6174757265206e6f742070726f7669646564206279206f776e65720081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16111515611062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f5369676e61747572657320617265206e6f74206f726465726564206279206f7781526020017f6e6572206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b8293508180600101925050610e18565b505050505050565b60008060008061108a8686611123565b809350819450829550505050600187848484604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af115801561110d573d6000803e3d6000fd5b5050506020604051035193505050509392505050565b60008060008360410260208101860151925060408101860151915060ff604182018701511693505092509250925600a165627a7a72305820d2834484d40c8ee60c472d27914d0e4d5029520c243a789fc3184ddb6e4ae9410029", + "sourceMap": "305:2842:22:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;305:2842:22;;;;;;;", + "deployedSourceMap": "305:2842:22:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2816:329;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2816:329:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:8;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;370:52:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;370:52:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;370:52:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;660:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;660:65:22;;;;;;566:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;566:46:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1190:634;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1190:634:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;428:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;428:40:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;428:40:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2816:329;3019:7;3081:4;3076:10;;3093:1;3088:7;;3097:4;3103:2;3107:5;3114:4;3120:9;3131:5;3059:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3059:78:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3059:78:22;;;3049:89;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3049:89:22;;;;;;;;;;;;;;;;3042:96;;2816:329;;;;;;;:::o;262:28:8:-;;;;;;;;;;;;;:::o;626:248:5:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;370:52:22:-;;;;;;;;;;;;;;;;;;;;:::o;660:65::-;706:12;:10;:12::i;:::-;660:65::o;566:46::-;;;;;;;;;;;;;;;;;:::o;1190:634::-;1400:23;1426:53;1445:2;1449:5;1456:4;1462:9;1473:5;1426:18;:53::i;:::-;1400:79;;1528:1;1497:10;:27;1508:15;1497:27;;;;;;;;;;;;;;;;;;:32;1489:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1572:38;1582:15;1599:10;1572:9;:38::i;:::-;1703:1;1673:10;:27;1684:15;1673:27;;;;;;;;;;;;;;;;;:31;;;;1722:7;;;;;;;;;;;:33;;;1756:2;1760:5;1767:4;1773:9;1722:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1722:61:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1722:61:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1722:61:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1722:61:22;;;;;;;;;;;;;;;;1714:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1190:634;;;;;;;:::o;428:40::-;;;;;;;;;;;;;;;;;;;;:::o;434:300:8:-;648:1;636:7;;;;;;;;;;;628:21;;;620:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:10;692:7;;:35;;;;;;;;;;;;;;;;;;434:300::o;1830:708:22:-;1988:17;2028:20;2058:9;2077:17;2016:1;1988:30;;2110:7;;;;;;;;;;;2097:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2097:36:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2097:36:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2097:36:22;;;;;;;;;;;;;;;;2077:56;;2194:1;2190:5;;2185:347;2201:9;2197:1;:13;2185:347;;;2246:42;2257:15;2274:10;2286:1;2246:10;:42::i;:::-;2231:57;;2323:7;;;;;;;;;;;2310:29;;;2340:12;2310:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2310:43:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2310:43:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2310:43:22;;;;;;;;;;;;;;;;2302:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2426:9;2411:24;;:12;:24;;;2403:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2509:12;2497:24;;2212:3;;;;;;;2185:347;;;1830:708;;;;;;:::o;477:330:17:-;629:7;653;670:9;689;720:37;735:16;753:3;720:14;:37::i;:::-;708:49;;;;;;;;;;;;774:26;784:6;792:1;795;798;774:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;774:26:17;;;;;;;;767:33;;477:330;;;;;;;;:::o;984:914::-;1086:7;1095:9;1106;1406:3;1400:4;1396:14;1468:4;1454:12;1450:23;1438:10;1434:40;1428:47;1423:52;;1533:4;1519:12;1515:23;1503:10;1499:40;1493:47;1488:52;;1877:4;1868;1854:12;1850:23;1838:10;1834:40;1828:47;1824:58;1819:63;;1362:530;;;;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\nimport \"../OwnerManager.sol\";\nimport \"../SignatureValidator.sol\";\n\n\n/// @title Gnosis Safe State Module - A module that allows interaction with statechannels.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract StateChannelModule is Module, SignatureValidator {\n\n string public constant NAME = \"State Channel Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => uint256) public isExecuted;\n\n /// @dev Setup function sets manager\n function setup()\n public\n {\n setManager();\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n /// @param signatures Packed signature data ({bytes32 r}{bytes32 s}{uint8 v})\n function execTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce,\n bytes signatures\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(isExecuted[transactionHash] == 0, \"Transaction already executed\");\n checkHash(transactionHash, signatures);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = 1;\n require(manager.execTransactionFromModule(to, value, data, operation), \"Could not execute transaction\");\n }\n\n function checkHash(bytes32 transactionHash, bytes signatures)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n uint256 threshold = OwnerManager(manager).getThreshold();\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = recoverKey(transactionHash, signatures, i);\n require(OwnerManager(manager).isOwner(currentOwner), \"Signature not provided by owner\");\n require(currentOwner > lastOwner, \"Signatures are not ordered by owner address\");\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, nonce));\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/StateChannelModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/StateChannelModule.sol", "exportedSymbols": { "StateChannelModule": [ - 1758 + 3867 ] }, - "id": 1759, + "id": 3868, "nodeType": "SourceUnit", "nodes": [ { - "id": 1573, + "id": 3682, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:11" + "src": "0:23:22" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1574, + "id": 3683, "nodeType": "ImportDirective", - "scope": 1759, - "sourceUnit": 652, - "src": "24:23:11", + "scope": 3868, + "sourceUnit": 1862, + "src": "24:23:22", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1575, + "id": 3684, "nodeType": "ImportDirective", - "scope": 1759, - "sourceUnit": 1433, - "src": "48:29:11", + "scope": 3868, + "sourceUnit": 2889, + "src": "48:29:22", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SignatureValidator.sol", "file": "../SignatureValidator.sol", - "id": 1576, + "id": 3685, "nodeType": "ImportDirective", - "scope": 1759, - "sourceUnit": 1506, - "src": "78:35:11", + "scope": 3868, + "sourceUnit": 3122, + "src": "78:35:22", "symbolAliases": [], "unitAlias": "" }, @@ -278,66 +220,66 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1577, + "id": 3686, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 651, - "src": "336:6:11", + "referencedDeclaration": 1861, + "src": "336:6:22", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, - "id": 1578, + "id": 3687, "nodeType": "InheritanceSpecifier", - "src": "336:6:11" + "src": "336:6:22" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 1579, + "id": 3688, "name": "SignatureValidator", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1505, - "src": "344:18:11", + "referencedDeclaration": 3121, + "src": "344:18:22", "typeDescriptions": { - "typeIdentifier": "t_contract$_SignatureValidator_$1505", + "typeIdentifier": "t_contract$_SignatureValidator_$3121", "typeString": "contract SignatureValidator" } }, - "id": 1580, + "id": 3689, "nodeType": "InheritanceSpecifier", - "src": "344:18:11" + "src": "344:18:22" } ], "contractDependencies": [ - 608, - 651, - 1449, - 1505 + 632, + 1861, + 3065, + 3121 ], "contractKind": "contract", "documentation": "@title Gnosis Safe State Module - A module that allows interaction with statechannels.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1758, + "id": 3867, "linearizedBaseContracts": [ - 1758, - 1505, - 651, - 608, - 1449 + 3867, + 3121, + 1861, + 632, + 3065 ], "name": "StateChannelModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1583, + "id": 3692, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1758, - "src": "370:52:11", + "scope": 3867, + "src": "370:52:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -345,10 +287,10 @@ "typeString": "string" }, "typeName": { - "id": 1581, + "id": 3690, "name": "string", "nodeType": "ElementaryTypeName", - "src": "370:6:11", + "src": "370:6:22", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -357,14 +299,14 @@ "value": { "argumentTypes": null, "hexValue": "5374617465204368616e6e656c204d6f64756c65", - "id": 1582, + "id": 3691, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "400:22:11", + "src": "400:22:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e66fa361bdba11103aaf2321b03707a79b393abf1f410f3f609398777fd3a713", @@ -376,11 +318,11 @@ }, { "constant": true, - "id": 1586, + "id": 3695, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1758, - "src": "428:40:11", + "scope": 3867, + "src": "428:40:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -388,10 +330,10 @@ "typeString": "string" }, "typeName": { - "id": 1584, + "id": 3693, "name": "string", "nodeType": "ElementaryTypeName", - "src": "428:6:11", + "src": "428:6:22", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -400,14 +342,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1585, + "id": 3694, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "461:7:11", + "src": "461:7:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -419,11 +361,11 @@ }, { "constant": false, - "id": 1590, + "id": 3699, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 1758, - "src": "566:46:11", + "scope": 3867, + "src": "566:46:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -431,28 +373,28 @@ "typeString": "mapping(bytes32 => uint256)" }, "typeName": { - "id": 1589, + "id": 3698, "keyType": { - "id": 1587, + "id": 3696, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "575:7:11", + "src": "575:7:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "566:28:11", + "src": "566:28:22", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" }, "valueType": { - "id": 1588, + "id": 3697, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "586:7:11", + "src": "586:7:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -464,9 +406,9 @@ }, { "body": { - "id": 1596, + "id": 3705, "nodeType": "Block", - "src": "696:29:11", + "src": "696:29:22", "statements": [ { "expression": { @@ -474,18 +416,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1593, + "id": 3702, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 650, - "src": "706:10:11", + "referencedDeclaration": 1860, + "src": "706:10:22", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 1594, + "id": 3703, "isConstant": false, "isLValue": false, "isPure": false, @@ -493,20 +435,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "706:12:11", + "src": "706:12:22", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1595, + "id": 3704, "nodeType": "ExpressionStatement", - "src": "706:12:11" + "src": "706:12:22" } ] }, "documentation": "@dev Setup function sets manager", - "id": 1597, + "id": 3706, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -514,42 +456,42 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 1591, + "id": 3700, "nodeType": "ParameterList", "parameters": [], - "src": "674:2:11" + "src": "674:2:22" }, "payable": false, "returnParameters": { - "id": 1592, + "id": 3701, "nodeType": "ParameterList", "parameters": [], - "src": "696:0:11" + "src": "696:0:22" }, - "scope": 1758, - "src": "660:65:11", + "scope": 3867, + "src": "660:65:22", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1653, + "id": 3762, "nodeType": "Block", - "src": "1390:434:11", + "src": "1390:434:22", "statements": [ { "assignments": [ - 1613 + 3722 ], "declarations": [ { "constant": false, - "id": 1613, + "id": 3722, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 1654, - "src": "1400:23:11", + "scope": 3763, + "src": "1400:23:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -557,10 +499,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1612, + "id": 3721, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1400:7:11", + "src": "1400:7:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -570,18 +512,18 @@ "visibility": "internal" } ], - "id": 1621, + "id": 3730, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1615, + "id": 3724, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1599, - "src": "1445:2:11", + "referencedDeclaration": 3708, + "src": "1445:2:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -589,12 +531,12 @@ }, { "argumentTypes": null, - "id": 1616, + "id": 3725, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1601, - "src": "1449:5:11", + "referencedDeclaration": 3710, + "src": "1449:5:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -602,12 +544,12 @@ }, { "argumentTypes": null, - "id": 1617, + "id": 3726, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1603, - "src": "1456:4:11", + "referencedDeclaration": 3712, + "src": "1456:4:22", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -615,25 +557,25 @@ }, { "argumentTypes": null, - "id": 1618, + "id": 3727, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1605, - "src": "1462:9:11", + "referencedDeclaration": 3714, + "src": "1462:9:22", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 1619, + "id": 3728, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1607, - "src": "1473:5:11", + "referencedDeclaration": 3716, + "src": "1473:5:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -655,7 +597,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -663,18 +605,18 @@ "typeString": "uint256" } ], - "id": 1614, + "id": 3723, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1757, - "src": "1426:18:11", + "referencedDeclaration": 3866, + "src": "1426:18:22", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 1620, + "id": 3729, "isConstant": false, "isLValue": false, "isPure": false, @@ -682,14 +624,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1426:53:11", + "src": "1426:53:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "1400:79:11" + "src": "1400:79:22" }, { "expression": { @@ -701,7 +643,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1627, + "id": 3736, "isConstant": false, "isLValue": false, "isPure": false, @@ -710,26 +652,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1623, + "id": 3732, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1590, - "src": "1497:10:11", + "referencedDeclaration": 3699, + "src": "1497:10:22", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" } }, - "id": 1625, + "id": 3734, "indexExpression": { "argumentTypes": null, - "id": 1624, + "id": 3733, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1613, - "src": "1508:15:11", + "referencedDeclaration": 3722, + "src": "1508:15:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -740,7 +682,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1497:27:11", + "src": "1497:27:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -751,14 +693,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1626, + "id": 3735, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1528:1:11", + "src": "1528:1:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -766,7 +708,7 @@ }, "value": "0" }, - "src": "1497:32:11", + "src": "1497:32:22", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -775,14 +717,14 @@ { "argumentTypes": null, "hexValue": "5472616e73616374696f6e20616c7265616479206578656375746564", - "id": 1628, + "id": 3737, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1531:30:11", + "src": "1531:30:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_3c3f7cf602281cf7a98efd78d98ba46309975dadee18bcb57e640145699bd800", @@ -802,21 +744,21 @@ "typeString": "literal_string \"Transaction already executed\"" } ], - "id": 1622, + "id": 3731, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1489:7:11", + "referencedDeclaration": 4040, + "src": "1489:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1629, + "id": 3738, "isConstant": false, "isLValue": false, "isPure": false, @@ -824,15 +766,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1489:73:11", + "src": "1489:73:22", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1630, + "id": 3739, "nodeType": "ExpressionStatement", - "src": "1489:73:11" + "src": "1489:73:22" }, { "expression": { @@ -840,12 +782,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1632, + "id": 3741, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1613, - "src": "1582:15:11", + "referencedDeclaration": 3722, + "src": "1582:15:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -853,12 +795,12 @@ }, { "argumentTypes": null, - "id": 1633, + "id": 3742, "name": "signatures", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1609, - "src": "1599:10:11", + "referencedDeclaration": 3718, + "src": "1599:10:22", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -876,18 +818,18 @@ "typeString": "bytes memory" } ], - "id": 1631, + "id": 3740, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1723, - "src": "1572:9:11", + "referencedDeclaration": 3832, + "src": "1572:9:22", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes32,bytes memory) view" } }, - "id": 1634, + "id": 3743, "isConstant": false, "isLValue": false, "isPure": false, @@ -895,20 +837,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1572:38:11", + "src": "1572:38:22", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1635, + "id": 3744, "nodeType": "ExpressionStatement", - "src": "1572:38:11" + "src": "1572:38:22" }, { "expression": { "argumentTypes": null, - "id": 1640, + "id": 3749, "isConstant": false, "isLValue": false, "isPure": false, @@ -917,26 +859,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1636, + "id": 3745, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1590, - "src": "1673:10:11", + "referencedDeclaration": 3699, + "src": "1673:10:22", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" } }, - "id": 1638, + "id": 3747, "indexExpression": { "argumentTypes": null, - "id": 1637, + "id": 3746, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1613, - "src": "1684:15:11", + "referencedDeclaration": 3722, + "src": "1684:15:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -947,7 +889,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1673:27:11", + "src": "1673:27:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -958,14 +900,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 1639, + "id": 3748, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1703:1:11", + "src": "1703:1:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -973,15 +915,15 @@ }, "value": "1" }, - "src": "1673:31:11", + "src": "1673:31:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1641, + "id": 3750, "nodeType": "ExpressionStatement", - "src": "1673:31:11" + "src": "1673:31:22" }, { "expression": { @@ -992,12 +934,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1645, + "id": 3754, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1599, - "src": "1756:2:11", + "referencedDeclaration": 3708, + "src": "1756:2:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1005,12 +947,12 @@ }, { "argumentTypes": null, - "id": 1646, + "id": 3755, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1601, - "src": "1760:5:11", + "referencedDeclaration": 3710, + "src": "1760:5:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1018,12 +960,12 @@ }, { "argumentTypes": null, - "id": 1647, + "id": 3756, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1603, - "src": "1767:4:11", + "referencedDeclaration": 3712, + "src": "1767:4:22", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1031,14 +973,14 @@ }, { "argumentTypes": null, - "id": 1648, + "id": 3757, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1605, - "src": "1773:9:11", + "referencedDeclaration": 3714, + "src": "1773:9:22", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } } @@ -1058,38 +1000,38 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } ], "expression": { "argumentTypes": null, - "id": 1643, + "id": 3752, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 616, - "src": "1722:7:11", + "referencedDeclaration": 1826, + "src": "1722:7:22", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, - "id": 1644, + "id": 3753, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 849, - "src": "1722:33:11", + "referencedDeclaration": 2059, + "src": "1722:33:22", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1649, + "id": 3758, "isConstant": false, "isLValue": false, "isPure": false, @@ -1097,7 +1039,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1722:61:11", + "src": "1722:61:22", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1106,14 +1048,14 @@ { "argumentTypes": null, "hexValue": "436f756c64206e6f742065786563757465207472616e73616374696f6e", - "id": 1650, + "id": 3759, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1785:31:11", + "src": "1785:31:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", @@ -1133,21 +1075,21 @@ "typeString": "literal_string \"Could not execute transaction\"" } ], - "id": 1642, + "id": 3751, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1714:7:11", + "referencedDeclaration": 4040, + "src": "1714:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1651, + "id": 3760, "isConstant": false, "isLValue": false, "isPure": false, @@ -1155,20 +1097,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1714:103:11", + "src": "1714:103:22", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1652, + "id": 3761, "nodeType": "ExpressionStatement", - "src": "1714:103:11" + "src": "1714:103:22" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.\n @param signatures Packed signature data ({bytes32 r}{bytes32 s}{uint8 v})", - "id": 1654, + "id": 3763, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1176,16 +1118,16 @@ "name": "execTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 1610, + "id": 3719, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1599, + "id": 3708, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1654, - "src": "1224:10:11", + "scope": 3763, + "src": "1224:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1193,10 +1135,10 @@ "typeString": "address" }, "typeName": { - "id": 1598, + "id": 3707, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1224:7:11", + "src": "1224:7:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1207,11 +1149,11 @@ }, { "constant": false, - "id": 1601, + "id": 3710, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1654, - "src": "1245:13:11", + "scope": 3763, + "src": "1245:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1219,10 +1161,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1600, + "id": 3709, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1245:7:11", + "src": "1245:7:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1233,11 +1175,11 @@ }, { "constant": false, - "id": 1603, + "id": 3712, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1654, - "src": "1269:10:11", + "scope": 3763, + "src": "1269:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1245,10 +1187,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1602, + "id": 3711, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1269:5:11", + "src": "1269:5:22", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1259,26 +1201,26 @@ }, { "constant": false, - "id": 1605, + "id": 3714, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 1654, - "src": "1290:24:11", + "scope": 3763, + "src": "1290:24:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 1604, + "id": 3713, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "1290:14:11", + "referencedDeclaration": 29, + "src": "1290:14:22", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -1287,11 +1229,11 @@ }, { "constant": false, - "id": 1607, + "id": 3716, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 1654, - "src": "1325:13:11", + "scope": 3763, + "src": "1325:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1299,10 +1241,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1606, + "id": 3715, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1325:7:11", + "src": "1325:7:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1313,11 +1255,11 @@ }, { "constant": false, - "id": 1609, + "id": 3718, "name": "signatures", "nodeType": "VariableDeclaration", - "scope": 1654, - "src": "1348:16:11", + "scope": 3763, + "src": "1348:16:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1325,10 +1267,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1608, + "id": 3717, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1348:5:11", + "src": "1348:5:22", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1338,39 +1280,39 @@ "visibility": "internal" } ], - "src": "1214:156:11" + "src": "1214:156:22" }, "payable": false, "returnParameters": { - "id": 1611, + "id": 3720, "nodeType": "ParameterList", "parameters": [], - "src": "1390:0:11" + "src": "1390:0:22" }, - "scope": 1758, - "src": "1190:634:11", + "scope": 3867, + "src": "1190:634:22", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1722, + "id": 3831, "nodeType": "Block", - "src": "1926:610:11", + "src": "1926:612:22", "statements": [ { "assignments": [ - 1662 + 3771 ], "declarations": [ { "constant": false, - "id": 1662, + "id": 3771, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 1723, - "src": "1988:17:11", + "scope": 3832, + "src": "1988:17:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1378,10 +1320,10 @@ "typeString": "address" }, "typeName": { - "id": 1661, + "id": 3770, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1988:7:11", + "src": "1988:7:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1391,21 +1333,21 @@ "visibility": "internal" } ], - "id": 1666, + "id": 3775, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 1664, + "id": 3773, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2016:1:11", + "src": "2016:1:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1421,20 +1363,20 @@ "typeString": "int_const 0" } ], - "id": 1663, + "id": 3772, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2008:7:11", + "src": "2008:7:22", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1665, + "id": 3774, "isConstant": false, "isLValue": false, "isPure": true, @@ -1442,25 +1384,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2008:10:11", + "src": "2008:10:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1988:30:11" + "src": "1988:30:22" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1668, + "id": 3777, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1723, - "src": "2028:20:11", + "scope": 3832, + "src": "2028:20:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1468,10 +1410,10 @@ "typeString": "address" }, "typeName": { - "id": 1667, + "id": 3776, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2028:7:11", + "src": "2028:7:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1481,21 +1423,21 @@ "visibility": "internal" } ], - "id": 1669, + "id": 3778, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2028:20:11" + "src": "2028:20:22" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1671, + "id": 3780, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1723, - "src": "2058:9:11", + "scope": 3832, + "src": "2058:9:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1503,10 +1445,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1670, + "id": 3779, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2058:7:11", + "src": "2058:7:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1516,44 +1458,44 @@ "visibility": "internal" } ], - "id": 1672, + "id": 3781, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2058:9:11" + "src": "2058:9:22" }, { "assignments": [ - 1674 + 3783 ], "declarations": [ { "constant": false, - "id": 1674, + "id": 3783, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 1723, - "src": "2077:15:11", + "scope": 3832, + "src": "2077:17:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 1673, - "name": "uint8", + "id": 3782, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2077:5:11", + "src": "2077:7:22", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "id": 1680, + "id": 3789, "initialValue": { "argumentTypes": null, "arguments": [], @@ -1564,14 +1506,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1676, + "id": 3785, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 616, - "src": "2108:7:11", + "referencedDeclaration": 1826, + "src": "2110:7:22", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } } @@ -1579,22 +1521,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } ], - "id": 1675, + "id": 3784, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1432, - "src": "2095:12:11", + "referencedDeclaration": 2888, + "src": "2097:12:22", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1432_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$2888_$", "typeString": "type(contract OwnerManager)" } }, - "id": 1677, + "id": 3786, "isConstant": false, "isLValue": false, "isPure": false, @@ -1602,27 +1544,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2095:21:11", + "src": "2097:21:22", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1432", + "typeIdentifier": "t_contract$_OwnerManager_$2888", "typeString": "contract OwnerManager" } }, - "id": 1678, + "id": 3787, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getThreshold", "nodeType": "MemberAccess", - "referencedDeclaration": 1368, - "src": "2095:34:11", + "referencedDeclaration": 2824, + "src": "2097:34:22", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", - "typeString": "function () view external returns (uint8)" + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" } }, - "id": 1679, + "id": 3788, "isConstant": false, "isLValue": false, "isPure": false, @@ -1630,37 +1572,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2095:36:11", + "src": "2097:36:22", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2077:54:11" + "src": "2077:56:22" }, { "body": { - "id": 1720, + "id": 3829, "nodeType": "Block", - "src": "2215:315:11", + "src": "2217:315:22", "statements": [ { "expression": { "argumentTypes": null, - "id": 1697, + "id": 3806, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1691, + "id": 3800, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1668, - "src": "2229:12:11", + "referencedDeclaration": 3777, + "src": "2231:12:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1673,12 +1615,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1693, + "id": 3802, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1656, - "src": "2255:15:11", + "referencedDeclaration": 3765, + "src": "2257:15:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1686,12 +1628,12 @@ }, { "argumentTypes": null, - "id": 1694, + "id": 3803, "name": "signatures", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1658, - "src": "2272:10:11", + "referencedDeclaration": 3767, + "src": "2274:10:22", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1699,12 +1641,12 @@ }, { "argumentTypes": null, - "id": 1695, + "id": 3804, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1671, - "src": "2284:1:11", + "referencedDeclaration": 3780, + "src": "2286:1:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1726,18 +1668,18 @@ "typeString": "uint256" } ], - "id": 1692, + "id": 3801, "name": "recoverKey", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "2244:10:11", + "referencedDeclaration": 3105, + "src": "2246:10:22", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$", "typeString": "function (bytes32,bytes memory,uint256) pure returns (address)" } }, - "id": 1696, + "id": 3805, "isConstant": false, "isLValue": false, "isPure": false, @@ -1745,21 +1687,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2244:42:11", + "src": "2246:42:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2229:57:11", + "src": "2231:57:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1698, + "id": 3807, "nodeType": "ExpressionStatement", - "src": "2229:57:11" + "src": "2231:57:22" }, { "expression": { @@ -1770,12 +1712,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1704, + "id": 3813, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1668, - "src": "2338:12:11", + "referencedDeclaration": 3777, + "src": "2340:12:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1794,14 +1736,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1701, + "id": 3810, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 616, - "src": "2321:7:11", + "referencedDeclaration": 1826, + "src": "2323:7:22", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } } @@ -1809,22 +1751,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } ], - "id": 1700, + "id": 3809, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1432, - "src": "2308:12:11", + "referencedDeclaration": 2888, + "src": "2310:12:22", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1432_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$2888_$", "typeString": "type(contract OwnerManager)" } }, - "id": 1702, + "id": 3811, "isConstant": false, "isLValue": false, "isPure": false, @@ -1832,27 +1774,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2308:21:11", + "src": "2310:21:22", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1432", + "typeIdentifier": "t_contract$_OwnerManager_$2888", "typeString": "contract OwnerManager" } }, - "id": 1703, + "id": 3812, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1382, - "src": "2308:29:11", + "referencedDeclaration": 2838, + "src": "2310:29:22", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 1705, + "id": 3814, "isConstant": false, "isLValue": false, "isPure": false, @@ -1860,7 +1802,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2308:43:11", + "src": "2310:43:22", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1869,14 +1811,14 @@ { "argumentTypes": null, "hexValue": "5369676e6174757265206e6f742070726f7669646564206279206f776e6572", - "id": 1706, + "id": 3815, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2353:33:11", + "src": "2355:33:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", @@ -1896,21 +1838,21 @@ "typeString": "literal_string \"Signature not provided by owner\"" } ], - "id": 1699, + "id": 3808, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2300:7:11", + "referencedDeclaration": 4040, + "src": "2302:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1707, + "id": 3816, "isConstant": false, "isLValue": false, "isPure": false, @@ -1918,15 +1860,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2300:87:11", + "src": "2302:87:22", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1708, + "id": 3817, "nodeType": "ExpressionStatement", - "src": "2300:87:11" + "src": "2302:87:22" }, { "expression": { @@ -1938,19 +1880,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1712, + "id": 3821, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1710, + "id": 3819, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1668, - "src": "2409:12:11", + "referencedDeclaration": 3777, + "src": "2411:12:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1960,18 +1902,18 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 1711, + "id": 3820, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1662, - "src": "2424:9:11", + "referencedDeclaration": 3771, + "src": "2426:9:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2409:24:11", + "src": "2411:24:22", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1980,14 +1922,14 @@ { "argumentTypes": null, "hexValue": "5369676e61747572657320617265206e6f74206f726465726564206279206f776e65722061646472657373", - "id": 1713, + "id": 3822, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2435:45:11", + "src": "2437:45:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", @@ -2007,21 +1949,21 @@ "typeString": "literal_string \"Signatures are not ordered by owner address\"" } ], - "id": 1709, + "id": 3818, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2401:7:11", + "referencedDeclaration": 4040, + "src": "2403:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1714, + "id": 3823, "isConstant": false, "isLValue": false, "isPure": false, @@ -2029,32 +1971,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2401:80:11", + "src": "2403:80:22", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1715, + "id": 3824, "nodeType": "ExpressionStatement", - "src": "2401:80:11" + "src": "2403:80:22" }, { "expression": { "argumentTypes": null, - "id": 1718, + "id": 3827, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1716, + "id": 3825, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1662, - "src": "2495:9:11", + "referencedDeclaration": 3771, + "src": "2497:9:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2064,26 +2006,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1717, + "id": 3826, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1668, - "src": "2507:12:11", + "referencedDeclaration": 3777, + "src": "2509:12:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2495:24:11", + "src": "2497:24:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1719, + "id": 3828, "nodeType": "ExpressionStatement", - "src": "2495:24:11" + "src": "2497:24:22" } ] }, @@ -2093,19 +2035,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1687, + "id": 3796, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1685, + "id": 3794, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1671, - "src": "2195:1:11", + "referencedDeclaration": 3780, + "src": "2197:1:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2115,40 +2057,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 1686, + "id": 3795, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1674, - "src": "2199:9:11", + "referencedDeclaration": 3783, + "src": "2201:9:22", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "2195:13:11", + "src": "2197:13:22", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1721, + "id": 3830, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 1683, + "id": 3792, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1681, + "id": 3790, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1671, - "src": "2188:1:11", + "referencedDeclaration": 3780, + "src": "2190:1:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2159,14 +2101,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1682, + "id": 3791, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2192:1:11", + "src": "2194:1:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2174,20 +2116,20 @@ }, "value": "0" }, - "src": "2188:5:11", + "src": "2190:5:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1684, + "id": 3793, "nodeType": "ExpressionStatement", - "src": "2188:5:11" + "src": "2190:5:22" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1689, + "id": 3798, "isConstant": false, "isLValue": false, "isPure": false, @@ -2195,15 +2137,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2210:3:11", + "src": "2212:3:22", "subExpression": { "argumentTypes": null, - "id": 1688, + "id": 3797, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1671, - "src": "2210:1:11", + "referencedDeclaration": 3780, + "src": "2212:1:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2214,17 +2156,17 @@ "typeString": "uint256" } }, - "id": 1690, + "id": 3799, "nodeType": "ExpressionStatement", - "src": "2210:3:11" + "src": "2212:3:22" }, "nodeType": "ForStatement", - "src": "2183:347:11" + "src": "2185:347:22" } ] }, "documentation": null, - "id": 1723, + "id": 3832, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -2232,16 +2174,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 1659, + "id": 3768, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1656, + "id": 3765, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 1723, - "src": "1849:23:11", + "scope": 3832, + "src": "1849:23:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2249,10 +2191,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1655, + "id": 3764, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1849:7:11", + "src": "1849:7:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2263,11 +2205,11 @@ }, { "constant": false, - "id": 1658, + "id": 3767, "name": "signatures", "nodeType": "VariableDeclaration", - "scope": 1723, - "src": "1874:16:11", + "scope": 3832, + "src": "1874:16:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2275,10 +2217,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1657, + "id": 3766, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1874:5:11", + "src": "1874:5:22", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2288,26 +2230,26 @@ "visibility": "internal" } ], - "src": "1848:43:11" + "src": "1848:43:22" }, "payable": false, "returnParameters": { - "id": 1660, + "id": 3769, "nodeType": "ParameterList", "parameters": [], - "src": "1926:0:11" + "src": "1926:0:22" }, - "scope": 1758, - "src": "1830:706:11", + "scope": 3867, + "src": "1830:708:22", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1756, + "id": 3865, "nodeType": "Block", - "src": "3030:113:11", + "src": "3032:113:22", "statements": [ { "expression": { @@ -2322,14 +2264,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 1742, + "id": 3851, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3079:4:11", + "src": "3081:4:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -2345,20 +2287,20 @@ "typeString": "int_const 25" } ], - "id": 1741, + "id": 3850, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3074:4:11", + "src": "3076:4:22", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 1743, + "id": 3852, "isConstant": false, "isLValue": false, "isPure": true, @@ -2366,7 +2308,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3074:10:11", + "src": "3076:10:22", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -2378,14 +2320,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1745, + "id": 3854, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3091:1:11", + "src": "3093:1:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2401,20 +2343,20 @@ "typeString": "int_const 0" } ], - "id": 1744, + "id": 3853, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3086:4:11", + "src": "3088:4:22", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 1746, + "id": 3855, "isConstant": false, "isLValue": false, "isPure": true, @@ -2422,7 +2364,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3086:7:11", + "src": "3088:7:22", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -2430,25 +2372,25 @@ }, { "argumentTypes": null, - "id": 1747, + "id": 3856, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1808, - "src": "3095:4:11", + "referencedDeclaration": 4093, + "src": "3097:4:22", "typeDescriptions": { - "typeIdentifier": "t_contract$_StateChannelModule_$1758", + "typeIdentifier": "t_contract$_StateChannelModule_$3867", "typeString": "contract StateChannelModule" } }, { "argumentTypes": null, - "id": 1748, + "id": 3857, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1725, - "src": "3101:2:11", + "referencedDeclaration": 3834, + "src": "3103:2:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2456,12 +2398,12 @@ }, { "argumentTypes": null, - "id": 1749, + "id": 3858, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1727, - "src": "3105:5:11", + "referencedDeclaration": 3836, + "src": "3107:5:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2469,12 +2411,12 @@ }, { "argumentTypes": null, - "id": 1750, + "id": 3859, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1729, - "src": "3112:4:11", + "referencedDeclaration": 3838, + "src": "3114:4:22", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2482,25 +2424,25 @@ }, { "argumentTypes": null, - "id": 1751, + "id": 3860, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1731, - "src": "3118:9:11", + "referencedDeclaration": 3840, + "src": "3120:9:22", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 1752, + "id": 3861, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1733, - "src": "3129:5:11", + "referencedDeclaration": 3842, + "src": "3131:5:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2518,7 +2460,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_StateChannelModule_$1758", + "typeIdentifier": "t_contract$_StateChannelModule_$3867", "typeString": "contract StateChannelModule" }, { @@ -2534,7 +2476,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -2544,18 +2486,18 @@ ], "expression": { "argumentTypes": null, - "id": 1739, + "id": 3848, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1760, - "src": "3057:3:11", + "referencedDeclaration": 4023, + "src": "3059:3:22", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 1740, + "id": 3849, "isConstant": false, "isLValue": false, "isPure": true, @@ -2563,13 +2505,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3057:16:11", + "src": "3059:16:22", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 1753, + "id": 3862, "isConstant": false, "isLValue": false, "isPure": false, @@ -2577,7 +2519,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3057:78:11", + "src": "3059:78:22", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2591,18 +2533,18 @@ "typeString": "bytes memory" } ], - "id": 1738, + "id": 3847, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1767, - "src": "3047:9:11", + "referencedDeclaration": 4030, + "src": "3049:9:22", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 1754, + "id": 3863, "isConstant": false, "isLValue": false, "isPure": false, @@ -2610,21 +2552,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3047:89:11", + "src": "3049:89:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 1737, - "id": 1755, + "functionReturnParameters": 3846, + "id": 3864, "nodeType": "Return", - "src": "3040:96:11" + "src": "3042:96:22" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 1757, + "id": 3866, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -2632,16 +2574,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 1734, + "id": 3843, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1725, + "id": 3834, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1757, - "src": "2851:10:11", + "scope": 3866, + "src": "2853:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2649,10 +2591,10 @@ "typeString": "address" }, "typeName": { - "id": 1724, + "id": 3833, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2851:7:11", + "src": "2853:7:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2663,11 +2605,11 @@ }, { "constant": false, - "id": 1727, + "id": 3836, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1757, - "src": "2872:13:11", + "scope": 3866, + "src": "2874:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2675,10 +2617,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1726, + "id": 3835, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2872:7:11", + "src": "2874:7:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2689,11 +2631,11 @@ }, { "constant": false, - "id": 1729, + "id": 3838, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1757, - "src": "2896:10:11", + "scope": 3866, + "src": "2898:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2701,10 +2643,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1728, + "id": 3837, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2896:5:11", + "src": "2898:5:22", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2715,26 +2657,26 @@ }, { "constant": false, - "id": 1731, + "id": 3840, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 1757, - "src": "2917:24:11", + "scope": 3866, + "src": "2919:24:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 1730, + "id": 3839, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2917:14:11", + "referencedDeclaration": 29, + "src": "2919:14:22", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2743,11 +2685,11 @@ }, { "constant": false, - "id": 1733, + "id": 3842, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 1757, - "src": "2952:13:11", + "scope": 3866, + "src": "2954:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2755,10 +2697,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1732, + "id": 3841, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2952:7:11", + "src": "2954:7:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2768,20 +2710,20 @@ "visibility": "internal" } ], - "src": "2841:130:11" + "src": "2843:130:22" }, "payable": false, "returnParameters": { - "id": 1737, + "id": 3846, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1736, + "id": 3845, "name": "", "nodeType": "VariableDeclaration", - "scope": 1757, - "src": "3017:7:11", + "scope": 3866, + "src": "3019:7:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2789,10 +2731,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1735, + "id": 3844, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3017:7:11", + "src": "3019:7:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2802,71 +2744,71 @@ "visibility": "internal" } ], - "src": "3016:9:11" + "src": "3018:9:22" }, - "scope": 1758, - "src": "2814:329:11", + "scope": 3867, + "src": "2816:329:22", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1759, - "src": "305:2840:11" + "scope": 3868, + "src": "305:2842:22" } ], - "src": "0:3146:11" + "src": "0:3148:22" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/StateChannelModule.sol", "exportedSymbols": { "StateChannelModule": [ - 1758 + 3867 ] }, - "id": 1759, + "id": 3868, "nodeType": "SourceUnit", "nodes": [ { - "id": 1573, + "id": 3682, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:11" + "src": "0:23:22" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1574, + "id": 3683, "nodeType": "ImportDirective", - "scope": 1759, - "sourceUnit": 652, - "src": "24:23:11", + "scope": 3868, + "sourceUnit": 1862, + "src": "24:23:22", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1575, + "id": 3684, "nodeType": "ImportDirective", - "scope": 1759, - "sourceUnit": 1433, - "src": "48:29:11", + "scope": 3868, + "sourceUnit": 2889, + "src": "48:29:22", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SignatureValidator.sol", "file": "../SignatureValidator.sol", - "id": 1576, + "id": 3685, "nodeType": "ImportDirective", - "scope": 1759, - "sourceUnit": 1506, - "src": "78:35:11", + "scope": 3868, + "sourceUnit": 3122, + "src": "78:35:22", "symbolAliases": [], "unitAlias": "" }, @@ -2876,66 +2818,66 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1577, + "id": 3686, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 651, - "src": "336:6:11", + "referencedDeclaration": 1861, + "src": "336:6:22", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$651", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, - "id": 1578, + "id": 3687, "nodeType": "InheritanceSpecifier", - "src": "336:6:11" + "src": "336:6:22" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 1579, + "id": 3688, "name": "SignatureValidator", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1505, - "src": "344:18:11", + "referencedDeclaration": 3121, + "src": "344:18:22", "typeDescriptions": { - "typeIdentifier": "t_contract$_SignatureValidator_$1505", + "typeIdentifier": "t_contract$_SignatureValidator_$3121", "typeString": "contract SignatureValidator" } }, - "id": 1580, + "id": 3689, "nodeType": "InheritanceSpecifier", - "src": "344:18:11" + "src": "344:18:22" } ], "contractDependencies": [ - 608, - 651, - 1449, - 1505 + 632, + 1861, + 3065, + 3121 ], "contractKind": "contract", "documentation": "@title Gnosis Safe State Module - A module that allows interaction with statechannels.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1758, + "id": 3867, "linearizedBaseContracts": [ - 1758, - 1505, - 651, - 608, - 1449 + 3867, + 3121, + 1861, + 632, + 3065 ], "name": "StateChannelModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1583, + "id": 3692, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1758, - "src": "370:52:11", + "scope": 3867, + "src": "370:52:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2943,10 +2885,10 @@ "typeString": "string" }, "typeName": { - "id": 1581, + "id": 3690, "name": "string", "nodeType": "ElementaryTypeName", - "src": "370:6:11", + "src": "370:6:22", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2955,14 +2897,14 @@ "value": { "argumentTypes": null, "hexValue": "5374617465204368616e6e656c204d6f64756c65", - "id": 1582, + "id": 3691, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "400:22:11", + "src": "400:22:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e66fa361bdba11103aaf2321b03707a79b393abf1f410f3f609398777fd3a713", @@ -2974,11 +2916,11 @@ }, { "constant": true, - "id": 1586, + "id": 3695, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1758, - "src": "428:40:11", + "scope": 3867, + "src": "428:40:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2986,10 +2928,10 @@ "typeString": "string" }, "typeName": { - "id": 1584, + "id": 3693, "name": "string", "nodeType": "ElementaryTypeName", - "src": "428:6:11", + "src": "428:6:22", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2998,14 +2940,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1585, + "id": 3694, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "461:7:11", + "src": "461:7:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -3017,11 +2959,11 @@ }, { "constant": false, - "id": 1590, + "id": 3699, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 1758, - "src": "566:46:11", + "scope": 3867, + "src": "566:46:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3029,28 +2971,28 @@ "typeString": "mapping(bytes32 => uint256)" }, "typeName": { - "id": 1589, + "id": 3698, "keyType": { - "id": 1587, + "id": 3696, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "575:7:11", + "src": "575:7:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "566:28:11", + "src": "566:28:22", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" }, "valueType": { - "id": 1588, + "id": 3697, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "586:7:11", + "src": "586:7:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3062,9 +3004,9 @@ }, { "body": { - "id": 1596, + "id": 3705, "nodeType": "Block", - "src": "696:29:11", + "src": "696:29:22", "statements": [ { "expression": { @@ -3072,18 +3014,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1593, + "id": 3702, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 650, - "src": "706:10:11", + "referencedDeclaration": 1860, + "src": "706:10:22", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 1594, + "id": 3703, "isConstant": false, "isLValue": false, "isPure": false, @@ -3091,20 +3033,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "706:12:11", + "src": "706:12:22", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1595, + "id": 3704, "nodeType": "ExpressionStatement", - "src": "706:12:11" + "src": "706:12:22" } ] }, "documentation": "@dev Setup function sets manager", - "id": 1597, + "id": 3706, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3112,42 +3054,42 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 1591, + "id": 3700, "nodeType": "ParameterList", "parameters": [], - "src": "674:2:11" + "src": "674:2:22" }, "payable": false, "returnParameters": { - "id": 1592, + "id": 3701, "nodeType": "ParameterList", "parameters": [], - "src": "696:0:11" + "src": "696:0:22" }, - "scope": 1758, - "src": "660:65:11", + "scope": 3867, + "src": "660:65:22", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1653, + "id": 3762, "nodeType": "Block", - "src": "1390:434:11", + "src": "1390:434:22", "statements": [ { "assignments": [ - 1613 + 3722 ], "declarations": [ { "constant": false, - "id": 1613, + "id": 3722, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 1654, - "src": "1400:23:11", + "scope": 3763, + "src": "1400:23:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3155,10 +3097,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1612, + "id": 3721, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1400:7:11", + "src": "1400:7:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3168,18 +3110,18 @@ "visibility": "internal" } ], - "id": 1621, + "id": 3730, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1615, + "id": 3724, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1599, - "src": "1445:2:11", + "referencedDeclaration": 3708, + "src": "1445:2:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3187,12 +3129,12 @@ }, { "argumentTypes": null, - "id": 1616, + "id": 3725, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1601, - "src": "1449:5:11", + "referencedDeclaration": 3710, + "src": "1449:5:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3200,12 +3142,12 @@ }, { "argumentTypes": null, - "id": 1617, + "id": 3726, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1603, - "src": "1456:4:11", + "referencedDeclaration": 3712, + "src": "1456:4:22", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3213,25 +3155,25 @@ }, { "argumentTypes": null, - "id": 1618, + "id": 3727, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1605, - "src": "1462:9:11", + "referencedDeclaration": 3714, + "src": "1462:9:22", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 1619, + "id": 3728, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1607, - "src": "1473:5:11", + "referencedDeclaration": 3716, + "src": "1473:5:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3253,7 +3195,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -3261,18 +3203,18 @@ "typeString": "uint256" } ], - "id": 1614, + "id": 3723, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1757, - "src": "1426:18:11", + "referencedDeclaration": 3866, + "src": "1426:18:22", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 1620, + "id": 3729, "isConstant": false, "isLValue": false, "isPure": false, @@ -3280,14 +3222,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1426:53:11", + "src": "1426:53:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "1400:79:11" + "src": "1400:79:22" }, { "expression": { @@ -3299,7 +3241,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1627, + "id": 3736, "isConstant": false, "isLValue": false, "isPure": false, @@ -3308,26 +3250,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1623, + "id": 3732, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1590, - "src": "1497:10:11", + "referencedDeclaration": 3699, + "src": "1497:10:22", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" } }, - "id": 1625, + "id": 3734, "indexExpression": { "argumentTypes": null, - "id": 1624, + "id": 3733, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1613, - "src": "1508:15:11", + "referencedDeclaration": 3722, + "src": "1508:15:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3338,7 +3280,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1497:27:11", + "src": "1497:27:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3349,14 +3291,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1626, + "id": 3735, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1528:1:11", + "src": "1528:1:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3364,7 +3306,7 @@ }, "value": "0" }, - "src": "1497:32:11", + "src": "1497:32:22", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3373,14 +3315,14 @@ { "argumentTypes": null, "hexValue": "5472616e73616374696f6e20616c7265616479206578656375746564", - "id": 1628, + "id": 3737, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1531:30:11", + "src": "1531:30:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_3c3f7cf602281cf7a98efd78d98ba46309975dadee18bcb57e640145699bd800", @@ -3400,21 +3342,21 @@ "typeString": "literal_string \"Transaction already executed\"" } ], - "id": 1622, + "id": 3731, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1489:7:11", + "referencedDeclaration": 4040, + "src": "1489:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1629, + "id": 3738, "isConstant": false, "isLValue": false, "isPure": false, @@ -3422,15 +3364,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1489:73:11", + "src": "1489:73:22", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1630, + "id": 3739, "nodeType": "ExpressionStatement", - "src": "1489:73:11" + "src": "1489:73:22" }, { "expression": { @@ -3438,12 +3380,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1632, + "id": 3741, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1613, - "src": "1582:15:11", + "referencedDeclaration": 3722, + "src": "1582:15:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3451,12 +3393,12 @@ }, { "argumentTypes": null, - "id": 1633, + "id": 3742, "name": "signatures", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1609, - "src": "1599:10:11", + "referencedDeclaration": 3718, + "src": "1599:10:22", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3474,18 +3416,18 @@ "typeString": "bytes memory" } ], - "id": 1631, + "id": 3740, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1723, - "src": "1572:9:11", + "referencedDeclaration": 3832, + "src": "1572:9:22", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes32,bytes memory) view" } }, - "id": 1634, + "id": 3743, "isConstant": false, "isLValue": false, "isPure": false, @@ -3493,20 +3435,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1572:38:11", + "src": "1572:38:22", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1635, + "id": 3744, "nodeType": "ExpressionStatement", - "src": "1572:38:11" + "src": "1572:38:22" }, { "expression": { "argumentTypes": null, - "id": 1640, + "id": 3749, "isConstant": false, "isLValue": false, "isPure": false, @@ -3515,26 +3457,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1636, + "id": 3745, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1590, - "src": "1673:10:11", + "referencedDeclaration": 3699, + "src": "1673:10:22", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" } }, - "id": 1638, + "id": 3747, "indexExpression": { "argumentTypes": null, - "id": 1637, + "id": 3746, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1613, - "src": "1684:15:11", + "referencedDeclaration": 3722, + "src": "1684:15:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3545,7 +3487,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1673:27:11", + "src": "1673:27:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3556,14 +3498,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 1639, + "id": 3748, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1703:1:11", + "src": "1703:1:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -3571,15 +3513,15 @@ }, "value": "1" }, - "src": "1673:31:11", + "src": "1673:31:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1641, + "id": 3750, "nodeType": "ExpressionStatement", - "src": "1673:31:11" + "src": "1673:31:22" }, { "expression": { @@ -3590,12 +3532,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1645, + "id": 3754, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1599, - "src": "1756:2:11", + "referencedDeclaration": 3708, + "src": "1756:2:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3603,12 +3545,12 @@ }, { "argumentTypes": null, - "id": 1646, + "id": 3755, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1601, - "src": "1760:5:11", + "referencedDeclaration": 3710, + "src": "1760:5:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3616,12 +3558,12 @@ }, { "argumentTypes": null, - "id": 1647, + "id": 3756, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1603, - "src": "1767:4:11", + "referencedDeclaration": 3712, + "src": "1767:4:22", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3629,14 +3571,14 @@ }, { "argumentTypes": null, - "id": 1648, + "id": 3757, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1605, - "src": "1773:9:11", + "referencedDeclaration": 3714, + "src": "1773:9:22", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } } @@ -3656,38 +3598,38 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } ], "expression": { "argumentTypes": null, - "id": 1643, + "id": 3752, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 616, - "src": "1722:7:11", + "referencedDeclaration": 1826, + "src": "1722:7:22", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, - "id": 1644, + "id": 3753, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 849, - "src": "1722:33:11", + "referencedDeclaration": 2059, + "src": "1722:33:22", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1649, + "id": 3758, "isConstant": false, "isLValue": false, "isPure": false, @@ -3695,7 +3637,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1722:61:11", + "src": "1722:61:22", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3704,14 +3646,14 @@ { "argumentTypes": null, "hexValue": "436f756c64206e6f742065786563757465207472616e73616374696f6e", - "id": 1650, + "id": 3759, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1785:31:11", + "src": "1785:31:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", @@ -3731,21 +3673,21 @@ "typeString": "literal_string \"Could not execute transaction\"" } ], - "id": 1642, + "id": 3751, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "1714:7:11", + "referencedDeclaration": 4040, + "src": "1714:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1651, + "id": 3760, "isConstant": false, "isLValue": false, "isPure": false, @@ -3753,20 +3695,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1714:103:11", + "src": "1714:103:22", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1652, + "id": 3761, "nodeType": "ExpressionStatement", - "src": "1714:103:11" + "src": "1714:103:22" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.\n @param signatures Packed signature data ({bytes32 r}{bytes32 s}{uint8 v})", - "id": 1654, + "id": 3763, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3774,16 +3716,16 @@ "name": "execTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 1610, + "id": 3719, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1599, + "id": 3708, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1654, - "src": "1224:10:11", + "scope": 3763, + "src": "1224:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3791,10 +3733,10 @@ "typeString": "address" }, "typeName": { - "id": 1598, + "id": 3707, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1224:7:11", + "src": "1224:7:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3805,11 +3747,11 @@ }, { "constant": false, - "id": 1601, + "id": 3710, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1654, - "src": "1245:13:11", + "scope": 3763, + "src": "1245:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3817,10 +3759,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1600, + "id": 3709, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1245:7:11", + "src": "1245:7:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3831,11 +3773,11 @@ }, { "constant": false, - "id": 1603, + "id": 3712, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1654, - "src": "1269:10:11", + "scope": 3763, + "src": "1269:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3843,10 +3785,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1602, + "id": 3711, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1269:5:11", + "src": "1269:5:22", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3857,26 +3799,26 @@ }, { "constant": false, - "id": 1605, + "id": 3714, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 1654, - "src": "1290:24:11", + "scope": 3763, + "src": "1290:24:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 1604, + "id": 3713, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "1290:14:11", + "referencedDeclaration": 29, + "src": "1290:14:22", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -3885,11 +3827,11 @@ }, { "constant": false, - "id": 1607, + "id": 3716, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 1654, - "src": "1325:13:11", + "scope": 3763, + "src": "1325:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3897,10 +3839,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1606, + "id": 3715, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1325:7:11", + "src": "1325:7:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3911,11 +3853,11 @@ }, { "constant": false, - "id": 1609, + "id": 3718, "name": "signatures", "nodeType": "VariableDeclaration", - "scope": 1654, - "src": "1348:16:11", + "scope": 3763, + "src": "1348:16:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3923,10 +3865,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1608, + "id": 3717, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1348:5:11", + "src": "1348:5:22", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3936,39 +3878,39 @@ "visibility": "internal" } ], - "src": "1214:156:11" + "src": "1214:156:22" }, "payable": false, "returnParameters": { - "id": 1611, + "id": 3720, "nodeType": "ParameterList", "parameters": [], - "src": "1390:0:11" + "src": "1390:0:22" }, - "scope": 1758, - "src": "1190:634:11", + "scope": 3867, + "src": "1190:634:22", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1722, + "id": 3831, "nodeType": "Block", - "src": "1926:610:11", + "src": "1926:612:22", "statements": [ { "assignments": [ - 1662 + 3771 ], "declarations": [ { "constant": false, - "id": 1662, + "id": 3771, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 1723, - "src": "1988:17:11", + "scope": 3832, + "src": "1988:17:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3976,10 +3918,10 @@ "typeString": "address" }, "typeName": { - "id": 1661, + "id": 3770, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1988:7:11", + "src": "1988:7:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3989,21 +3931,21 @@ "visibility": "internal" } ], - "id": 1666, + "id": 3775, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 1664, + "id": 3773, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2016:1:11", + "src": "2016:1:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4019,20 +3961,20 @@ "typeString": "int_const 0" } ], - "id": 1663, + "id": 3772, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2008:7:11", + "src": "2008:7:22", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1665, + "id": 3774, "isConstant": false, "isLValue": false, "isPure": true, @@ -4040,25 +3982,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2008:10:11", + "src": "2008:10:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1988:30:11" + "src": "1988:30:22" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1668, + "id": 3777, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1723, - "src": "2028:20:11", + "scope": 3832, + "src": "2028:20:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4066,10 +4008,10 @@ "typeString": "address" }, "typeName": { - "id": 1667, + "id": 3776, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2028:7:11", + "src": "2028:7:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4079,21 +4021,21 @@ "visibility": "internal" } ], - "id": 1669, + "id": 3778, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2028:20:11" + "src": "2028:20:22" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1671, + "id": 3780, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1723, - "src": "2058:9:11", + "scope": 3832, + "src": "2058:9:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4101,10 +4043,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1670, + "id": 3779, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2058:7:11", + "src": "2058:7:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4114,44 +4056,44 @@ "visibility": "internal" } ], - "id": 1672, + "id": 3781, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2058:9:11" + "src": "2058:9:22" }, { "assignments": [ - 1674 + 3783 ], "declarations": [ { "constant": false, - "id": 1674, + "id": 3783, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 1723, - "src": "2077:15:11", + "scope": 3832, + "src": "2077:17:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 1673, - "name": "uint8", + "id": 3782, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2077:5:11", + "src": "2077:7:22", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "id": 1680, + "id": 3789, "initialValue": { "argumentTypes": null, "arguments": [], @@ -4162,14 +4104,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1676, + "id": 3785, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 616, - "src": "2108:7:11", + "referencedDeclaration": 1826, + "src": "2110:7:22", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } } @@ -4177,22 +4119,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } ], - "id": 1675, + "id": 3784, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1432, - "src": "2095:12:11", + "referencedDeclaration": 2888, + "src": "2097:12:22", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1432_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$2888_$", "typeString": "type(contract OwnerManager)" } }, - "id": 1677, + "id": 3786, "isConstant": false, "isLValue": false, "isPure": false, @@ -4200,27 +4142,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2095:21:11", + "src": "2097:21:22", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1432", + "typeIdentifier": "t_contract$_OwnerManager_$2888", "typeString": "contract OwnerManager" } }, - "id": 1678, + "id": 3787, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getThreshold", "nodeType": "MemberAccess", - "referencedDeclaration": 1368, - "src": "2095:34:11", + "referencedDeclaration": 2824, + "src": "2097:34:22", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", - "typeString": "function () view external returns (uint8)" + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" } }, - "id": 1679, + "id": 3788, "isConstant": false, "isLValue": false, "isPure": false, @@ -4228,37 +4170,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2095:36:11", + "src": "2097:36:22", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2077:54:11" + "src": "2077:56:22" }, { "body": { - "id": 1720, + "id": 3829, "nodeType": "Block", - "src": "2215:315:11", + "src": "2217:315:22", "statements": [ { "expression": { "argumentTypes": null, - "id": 1697, + "id": 3806, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1691, + "id": 3800, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1668, - "src": "2229:12:11", + "referencedDeclaration": 3777, + "src": "2231:12:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4271,12 +4213,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1693, + "id": 3802, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1656, - "src": "2255:15:11", + "referencedDeclaration": 3765, + "src": "2257:15:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4284,12 +4226,12 @@ }, { "argumentTypes": null, - "id": 1694, + "id": 3803, "name": "signatures", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1658, - "src": "2272:10:11", + "referencedDeclaration": 3767, + "src": "2274:10:22", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4297,12 +4239,12 @@ }, { "argumentTypes": null, - "id": 1695, + "id": 3804, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1671, - "src": "2284:1:11", + "referencedDeclaration": 3780, + "src": "2286:1:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4324,18 +4266,18 @@ "typeString": "uint256" } ], - "id": 1692, + "id": 3801, "name": "recoverKey", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "2244:10:11", + "referencedDeclaration": 3105, + "src": "2246:10:22", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$", "typeString": "function (bytes32,bytes memory,uint256) pure returns (address)" } }, - "id": 1696, + "id": 3805, "isConstant": false, "isLValue": false, "isPure": false, @@ -4343,21 +4285,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2244:42:11", + "src": "2246:42:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2229:57:11", + "src": "2231:57:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1698, + "id": 3807, "nodeType": "ExpressionStatement", - "src": "2229:57:11" + "src": "2231:57:22" }, { "expression": { @@ -4368,12 +4310,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1704, + "id": 3813, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1668, - "src": "2338:12:11", + "referencedDeclaration": 3777, + "src": "2340:12:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4392,14 +4334,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1701, + "id": 3810, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 616, - "src": "2321:7:11", + "referencedDeclaration": 1826, + "src": "2323:7:22", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } } @@ -4407,22 +4349,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1022", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } ], - "id": 1700, + "id": 3809, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1432, - "src": "2308:12:11", + "referencedDeclaration": 2888, + "src": "2310:12:22", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1432_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$2888_$", "typeString": "type(contract OwnerManager)" } }, - "id": 1702, + "id": 3811, "isConstant": false, "isLValue": false, "isPure": false, @@ -4430,27 +4372,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2308:21:11", + "src": "2310:21:22", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1432", + "typeIdentifier": "t_contract$_OwnerManager_$2888", "typeString": "contract OwnerManager" } }, - "id": 1703, + "id": 3812, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1382, - "src": "2308:29:11", + "referencedDeclaration": 2838, + "src": "2310:29:22", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 1705, + "id": 3814, "isConstant": false, "isLValue": false, "isPure": false, @@ -4458,7 +4400,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2308:43:11", + "src": "2310:43:22", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4467,14 +4409,14 @@ { "argumentTypes": null, "hexValue": "5369676e6174757265206e6f742070726f7669646564206279206f776e6572", - "id": 1706, + "id": 3815, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2353:33:11", + "src": "2355:33:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", @@ -4494,21 +4436,21 @@ "typeString": "literal_string \"Signature not provided by owner\"" } ], - "id": 1699, + "id": 3808, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2300:7:11", + "referencedDeclaration": 4040, + "src": "2302:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1707, + "id": 3816, "isConstant": false, "isLValue": false, "isPure": false, @@ -4516,15 +4458,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2300:87:11", + "src": "2302:87:22", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1708, + "id": 3817, "nodeType": "ExpressionStatement", - "src": "2300:87:11" + "src": "2302:87:22" }, { "expression": { @@ -4536,19 +4478,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1712, + "id": 3821, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1710, + "id": 3819, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1668, - "src": "2409:12:11", + "referencedDeclaration": 3777, + "src": "2411:12:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4558,18 +4500,18 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 1711, + "id": 3820, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1662, - "src": "2424:9:11", + "referencedDeclaration": 3771, + "src": "2426:9:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2409:24:11", + "src": "2411:24:22", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4578,14 +4520,14 @@ { "argumentTypes": null, "hexValue": "5369676e61747572657320617265206e6f74206f726465726564206279206f776e65722061646472657373", - "id": 1713, + "id": 3822, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2435:45:11", + "src": "2437:45:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", @@ -4605,21 +4547,21 @@ "typeString": "literal_string \"Signatures are not ordered by owner address\"" } ], - "id": 1709, + "id": 3818, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1776, - 1777 + 4039, + 4040 ], - "referencedDeclaration": 1777, - "src": "2401:7:11", + "referencedDeclaration": 4040, + "src": "2403:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1714, + "id": 3823, "isConstant": false, "isLValue": false, "isPure": false, @@ -4627,32 +4569,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2401:80:11", + "src": "2403:80:22", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1715, + "id": 3824, "nodeType": "ExpressionStatement", - "src": "2401:80:11" + "src": "2403:80:22" }, { "expression": { "argumentTypes": null, - "id": 1718, + "id": 3827, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1716, + "id": 3825, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1662, - "src": "2495:9:11", + "referencedDeclaration": 3771, + "src": "2497:9:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4662,26 +4604,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1717, + "id": 3826, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1668, - "src": "2507:12:11", + "referencedDeclaration": 3777, + "src": "2509:12:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2495:24:11", + "src": "2497:24:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1719, + "id": 3828, "nodeType": "ExpressionStatement", - "src": "2495:24:11" + "src": "2497:24:22" } ] }, @@ -4691,19 +4633,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1687, + "id": 3796, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1685, + "id": 3794, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1671, - "src": "2195:1:11", + "referencedDeclaration": 3780, + "src": "2197:1:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4713,40 +4655,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 1686, + "id": 3795, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1674, - "src": "2199:9:11", + "referencedDeclaration": 3783, + "src": "2201:9:22", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "2195:13:11", + "src": "2197:13:22", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1721, + "id": 3830, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 1683, + "id": 3792, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1681, + "id": 3790, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1671, - "src": "2188:1:11", + "referencedDeclaration": 3780, + "src": "2190:1:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4757,14 +4699,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1682, + "id": 3791, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2192:1:11", + "src": "2194:1:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4772,20 +4714,20 @@ }, "value": "0" }, - "src": "2188:5:11", + "src": "2190:5:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1684, + "id": 3793, "nodeType": "ExpressionStatement", - "src": "2188:5:11" + "src": "2190:5:22" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1689, + "id": 3798, "isConstant": false, "isLValue": false, "isPure": false, @@ -4793,15 +4735,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2210:3:11", + "src": "2212:3:22", "subExpression": { "argumentTypes": null, - "id": 1688, + "id": 3797, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1671, - "src": "2210:1:11", + "referencedDeclaration": 3780, + "src": "2212:1:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4812,17 +4754,17 @@ "typeString": "uint256" } }, - "id": 1690, + "id": 3799, "nodeType": "ExpressionStatement", - "src": "2210:3:11" + "src": "2212:3:22" }, "nodeType": "ForStatement", - "src": "2183:347:11" + "src": "2185:347:22" } ] }, "documentation": null, - "id": 1723, + "id": 3832, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4830,16 +4772,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 1659, + "id": 3768, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1656, + "id": 3765, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 1723, - "src": "1849:23:11", + "scope": 3832, + "src": "1849:23:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4847,10 +4789,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1655, + "id": 3764, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1849:7:11", + "src": "1849:7:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4861,11 +4803,11 @@ }, { "constant": false, - "id": 1658, + "id": 3767, "name": "signatures", "nodeType": "VariableDeclaration", - "scope": 1723, - "src": "1874:16:11", + "scope": 3832, + "src": "1874:16:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4873,10 +4815,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1657, + "id": 3766, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1874:5:11", + "src": "1874:5:22", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4886,26 +4828,26 @@ "visibility": "internal" } ], - "src": "1848:43:11" + "src": "1848:43:22" }, "payable": false, "returnParameters": { - "id": 1660, + "id": 3769, "nodeType": "ParameterList", "parameters": [], - "src": "1926:0:11" + "src": "1926:0:22" }, - "scope": 1758, - "src": "1830:706:11", + "scope": 3867, + "src": "1830:708:22", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1756, + "id": 3865, "nodeType": "Block", - "src": "3030:113:11", + "src": "3032:113:22", "statements": [ { "expression": { @@ -4920,14 +4862,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 1742, + "id": 3851, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3079:4:11", + "src": "3081:4:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -4943,20 +4885,20 @@ "typeString": "int_const 25" } ], - "id": 1741, + "id": 3850, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3074:4:11", + "src": "3076:4:22", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 1743, + "id": 3852, "isConstant": false, "isLValue": false, "isPure": true, @@ -4964,7 +4906,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3074:10:11", + "src": "3076:10:22", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -4976,14 +4918,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1745, + "id": 3854, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3091:1:11", + "src": "3093:1:22", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4999,20 +4941,20 @@ "typeString": "int_const 0" } ], - "id": 1744, + "id": 3853, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3086:4:11", + "src": "3088:4:22", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 1746, + "id": 3855, "isConstant": false, "isLValue": false, "isPure": true, @@ -5020,7 +4962,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3086:7:11", + "src": "3088:7:22", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -5028,25 +4970,25 @@ }, { "argumentTypes": null, - "id": 1747, + "id": 3856, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1808, - "src": "3095:4:11", + "referencedDeclaration": 4093, + "src": "3097:4:22", "typeDescriptions": { - "typeIdentifier": "t_contract$_StateChannelModule_$1758", + "typeIdentifier": "t_contract$_StateChannelModule_$3867", "typeString": "contract StateChannelModule" } }, { "argumentTypes": null, - "id": 1748, + "id": 3857, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1725, - "src": "3101:2:11", + "referencedDeclaration": 3834, + "src": "3103:2:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5054,12 +4996,12 @@ }, { "argumentTypes": null, - "id": 1749, + "id": 3858, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1727, - "src": "3105:5:11", + "referencedDeclaration": 3836, + "src": "3107:5:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5067,12 +5009,12 @@ }, { "argumentTypes": null, - "id": 1750, + "id": 3859, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1729, - "src": "3112:4:11", + "referencedDeclaration": 3838, + "src": "3114:4:22", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5080,25 +5022,25 @@ }, { "argumentTypes": null, - "id": 1751, + "id": 3860, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1731, - "src": "3118:9:11", + "referencedDeclaration": 3840, + "src": "3120:9:22", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 1752, + "id": 3861, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1733, - "src": "3129:5:11", + "referencedDeclaration": 3842, + "src": "3131:5:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5116,7 +5058,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_StateChannelModule_$1758", + "typeIdentifier": "t_contract$_StateChannelModule_$3867", "typeString": "contract StateChannelModule" }, { @@ -5132,7 +5074,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -5142,18 +5084,18 @@ ], "expression": { "argumentTypes": null, - "id": 1739, + "id": 3848, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1760, - "src": "3057:3:11", + "referencedDeclaration": 4023, + "src": "3059:3:22", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 1740, + "id": 3849, "isConstant": false, "isLValue": false, "isPure": true, @@ -5161,13 +5103,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3057:16:11", + "src": "3059:16:22", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 1753, + "id": 3862, "isConstant": false, "isLValue": false, "isPure": false, @@ -5175,7 +5117,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3057:78:11", + "src": "3059:78:22", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5189,18 +5131,18 @@ "typeString": "bytes memory" } ], - "id": 1738, + "id": 3847, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1767, - "src": "3047:9:11", + "referencedDeclaration": 4030, + "src": "3049:9:22", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 1754, + "id": 3863, "isConstant": false, "isLValue": false, "isPure": false, @@ -5208,21 +5150,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3047:89:11", + "src": "3049:89:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 1737, - "id": 1755, + "functionReturnParameters": 3846, + "id": 3864, "nodeType": "Return", - "src": "3040:96:11" + "src": "3042:96:22" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 1757, + "id": 3866, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -5230,16 +5172,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 1734, + "id": 3843, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1725, + "id": 3834, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1757, - "src": "2851:10:11", + "scope": 3866, + "src": "2853:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5247,10 +5189,10 @@ "typeString": "address" }, "typeName": { - "id": 1724, + "id": 3833, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2851:7:11", + "src": "2853:7:22", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5261,11 +5203,11 @@ }, { "constant": false, - "id": 1727, + "id": 3836, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1757, - "src": "2872:13:11", + "scope": 3866, + "src": "2874:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5273,10 +5215,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1726, + "id": 3835, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2872:7:11", + "src": "2874:7:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5287,11 +5229,11 @@ }, { "constant": false, - "id": 1729, + "id": 3838, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1757, - "src": "2896:10:11", + "scope": 3866, + "src": "2898:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5299,10 +5241,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1728, + "id": 3837, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2896:5:11", + "src": "2898:5:22", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5313,26 +5255,26 @@ }, { "constant": false, - "id": 1731, + "id": 3840, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 1757, - "src": "2917:24:11", + "scope": 3866, + "src": "2919:24:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 1730, + "id": 3839, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2917:14:11", + "referencedDeclaration": 29, + "src": "2919:14:22", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -5341,11 +5283,11 @@ }, { "constant": false, - "id": 1733, + "id": 3842, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 1757, - "src": "2952:13:11", + "scope": 3866, + "src": "2954:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5353,10 +5295,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1732, + "id": 3841, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2952:7:11", + "src": "2954:7:22", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5366,20 +5308,20 @@ "visibility": "internal" } ], - "src": "2841:130:11" + "src": "2843:130:22" }, "payable": false, "returnParameters": { - "id": 1737, + "id": 3846, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1736, + "id": 3845, "name": "", "nodeType": "VariableDeclaration", - "scope": 1757, - "src": "3017:7:11", + "scope": 3866, + "src": "3019:7:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5387,10 +5329,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1735, + "id": 3844, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3017:7:11", + "src": "3019:7:22", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5400,20 +5342,20 @@ "visibility": "internal" } ], - "src": "3016:9:11" + "src": "3018:9:22" }, - "scope": 1758, - "src": "2814:329:11", + "scope": 3867, + "src": "2816:329:22", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1759, - "src": "305:2840:11" + "scope": 3868, + "src": "305:2842:22" } ], - "src": "0:3146:11" + "src": "0:3148:22" }, "compiler": { "name": "solc", @@ -5423,28 +5365,28 @@ "4": { "events": {}, "links": {}, - "address": "0x42fea1604cd7ef086c3b66cf894ef119577781dd", - "transactionHash": "0x602c4524b17d13760b0a3a654b1b21106c58a9f7b43f892134e7324282896591" + "address": "0x523a2d11c105fb2b1134f21b6ad34dbb62ecad81", + "transactionHash": "0xc0d4a5fa237eb42c04e0fedf0c30a5575a93cd46a78c252ad4972241dc707cfe" }, - "1529327661534": { + "1530013596495": { "events": {}, "links": {}, - "address": "0xe0f79845711e5219da7a715f8cce36a3be1439ac", - "transactionHash": "0x27b038572cc641a10411f264708adfddf405923c31ae1a9bfaa3323e68f0cd8e" + "address": "0x700545035d6b441cab5c3da85efc56aa456669c7", + "transactionHash": "0x67c2ddf416ae96a5e4462dfdd4a757761fdf814768df194b1a605aade9e87fdd" }, - "1529333415702": { + "1530525742205": { "events": {}, "links": {}, - "address": "0x437ca411c1aa04e6012dbe1ac8cd0ccc87c1e6d9", - "transactionHash": "0xe7066b0fd7695e7e5956681c536759a36839b507de3a4fde6509dab7c6d9b152" + "address": "0x4f13491508b380e086b0b359be49dd653e074b69", + "transactionHash": "0xcd7ec6bdcfe68324241f773fb38be11d682a1bcf4a4cce5275c9c485ec56eb09" }, - "1529652204341": { + "1530611935189": { "events": {}, "links": {}, - "address": "0xcda1de5ecadaf89d663ed589a615e0ba8d697d3d", - "transactionHash": "0xcc681aa2ad918c4a255559fa45f9c64405ce4064db091ce1d7749bf3e6f05899" + "address": "0x1b7d1c4ec04526ce164d9aa85acf1812c132dedd", + "transactionHash": "0xcd7ec6bdcfe68324241f773fb38be11d682a1bcf4a4cce5275c9c485ec56eb09" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-22T07:24:16.253Z" + "updatedAt": "2018-07-03T09:59:18.528Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/WhitelistModule.json b/safe-contracts/build/contracts/WhitelistModule.json index f989e7d6c1..5ce5be6558 100644 --- a/safe-contracts/build/contracts/WhitelistModule.json +++ b/safe-contracts/build/contracts/WhitelistModule.json @@ -146,73 +146,73 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50611248806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108c4565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b96108e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061090a565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aed565b005b34801561028d57600080fd5b50610296610cf4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610d2d565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e59565b005b3480156103c657600080fd5b506103cf6110f0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b810190808051906020019092919050505015156105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e2081526020017f6f776e657200000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156106c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f546172676574206163636f756e74206973206e6f742077686974656c6973746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561077f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156107bf5780820151818401526020810190506107a4565b50505050905090810190601f1680156107ec5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561080e57600080fd5b505af1158015610822573d6000803e3d6000fd5b505050506040513d602081101561083857600080fd5b810190808051906020019092919050505015156108bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f756c64206e6f742065786563757465207472616e73616374696f6e00000081525060200191505060405180910390fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610aaa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4163636f756e74206973206e6f742077686974656c697374656400000000000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b600080610d38611129565b600091505b8251821015610e54578282815181101515610d5457fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614151515610def576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964206163636f756e742070726f7669646564000000000000000081525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610d3d565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610fd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964206163636f756e742070726f7669646564000000000000000081525060200191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4163636f756e7420697320616c72656164792077686974656c6973746564000081525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820dd944d1950617a0d837e1ab02a0fe81721a2e32aac404e122496a0af8b3397d40029", - "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108c4565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b96108e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061090a565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aed565b005b34801561028d57600080fd5b50610296610cf4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610d2d565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e59565b005b3480156103c657600080fd5b506103cf6110f0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b810190808051906020019092919050505015156105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e2081526020017f6f776e657200000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156106c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f546172676574206163636f756e74206973206e6f742077686974656c6973746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561077f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156107bf5780820151818401526020810190506107a4565b50505050905090810190601f1680156107ec5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561080e57600080fd5b505af1158015610822573d6000803e3d6000fd5b505050506040513d602081101561083857600080fd5b810190808051906020019092919050505015156108bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f756c64206e6f742065786563757465207472616e73616374696f6e00000081525060200191505060405180910390fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610aaa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4163636f756e74206973206e6f742077686974656c697374656400000000000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b600080610d38611129565b600091505b8251821015610e54578282815181101515610d5457fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614151515610def576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964206163636f756e742070726f7669646564000000000000000081525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610d3d565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610fd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964206163636f756e742070726f7669646564000000000000000081525060200191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4163636f756e7420697320616c72656164792077686974656c6973746564000081525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820dd944d1950617a0d837e1ab02a0fe81721a2e32aac404e122496a0af8b3397d40029", - "sourceMap": "289:2199:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;289:2199:21;;;;;;;", - "deployedSourceMap": "289:2199:21:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1984:502;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1984:502:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;498:46:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1528:202:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1528:202:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;331:48:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;331:48:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;667:298;;8:9:-1;5:2;;;30:1;27;20:12;5:2;667:298:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1114:260;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1114:260:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;385:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;385:40:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;385:40:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1984:502;2083:4;2213:7;;;;;;;;;;;2200:29;;;2230:10;2200:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2200:41:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2200:41:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2200:41:21;;;;;;;;;;;;;;;;2192:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2301:13;:17;2315:2;2301:17;;;;;;;;;;;;;;;;;;;;;;;;;2293:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2374:7;;;;;;;;;;;:33;;;2408:2;2412:5;2419:4;2425:19;2374:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2374:71:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2374:71:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2374:71:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2374:71:21;;;;;;;;;;;;;;;;2366:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1984:502;;;;;:::o;498:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;626:248:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;1528:202:21:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1630:13:21;:22;1644:7;1630:22;;;;;;;;;;;;;;;;;;;;;;;;;1622:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1718:5;1693:13;:22;1707:7;1693:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1528:202;:::o;331:48::-;;;;;;;;;;;;;;;;;;;;:::o;667:298::-;758:9;813:15;731:12;:10;:12::i;:::-;770:1;758:13;;753:206;777:8;:15;773:1;:19;753:206;;;831:8;840:1;831:11;;;;;;;;;;;;;;;;;;813:29;;875:1;864:7;:12;;;;856:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;944:4;919:13;:22;933:7;919:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;794:3;;;;;;;753:206;;;667:298;;;:::o;1114:260::-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1222:1:21;1211:7;:12;;;;1203:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1271:13;:22;1285:7;1271:22;;;;;;;;;;;;;;;;;;;;;;;;;1270:23;1262:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1363:4;1338:13;:22;1352:7;1338:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1114:260;:::o;385:40::-;;;;;;;;;;;;;;;;;;;;:::o;434:300:7:-;648:1;636:7;;;;;;;;;;;628:21;;;620:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:10;692:7;;:35;;;;;;;;;;;;;;;;;;434:300::o", + "bytecode": "0x608060405234801561001057600080fd5b50611248806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108c4565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b96108e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061090a565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aed565b005b34801561028d57600080fd5b50610296610cf4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610d2d565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e59565b005b3480156103c657600080fd5b506103cf6110f0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b810190808051906020019092919050505015156105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e2081526020017f6f776e657200000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156106c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f546172676574206163636f756e74206973206e6f742077686974656c6973746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561077f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156107bf5780820151818401526020810190506107a4565b50505050905090810190601f1680156107ec5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561080e57600080fd5b505af1158015610822573d6000803e3d6000fd5b505050506040513d602081101561083857600080fd5b810190808051906020019092919050505015156108bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f756c64206e6f742065786563757465207472616e73616374696f6e00000081525060200191505060405180910390fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610aaa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4163636f756e74206973206e6f742077686974656c697374656400000000000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b600080610d38611129565b600091505b8251821015610e54578282815181101515610d5457fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614151515610def576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964206163636f756e742070726f7669646564000000000000000081525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610d3d565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610fd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964206163636f756e742070726f7669646564000000000000000081525060200191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4163636f756e7420697320616c72656164792077686974656c6973746564000081525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820f7b0f6c9f5aa10563d61c2ce71381d314dc3d82b86d273bfaa866fc47b976f7a0029", + "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108c4565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b96108e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061090a565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aed565b005b34801561028d57600080fd5b50610296610cf4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610d2d565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e59565b005b3480156103c657600080fd5b506103cf6110f0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b810190808051906020019092919050505015156105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e2081526020017f6f776e657200000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156106c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f546172676574206163636f756e74206973206e6f742077686974656c6973746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561077f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156107bf5780820151818401526020810190506107a4565b50505050905090810190601f1680156107ec5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561080e57600080fd5b505af1158015610822573d6000803e3d6000fd5b505050506040513d602081101561083857600080fd5b810190808051906020019092919050505015156108bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f756c64206e6f742065786563757465207472616e73616374696f6e00000081525060200191505060405180910390fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610aaa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4163636f756e74206973206e6f742077686974656c697374656400000000000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b600080610d38611129565b600091505b8251821015610e54578282815181101515610d5457fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614151515610def576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964206163636f756e742070726f7669646564000000000000000081525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610d3d565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610fd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964206163636f756e742070726f7669646564000000000000000081525060200191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4163636f756e7420697320616c72656164792077686974656c6973746564000081525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820f7b0f6c9f5aa10563d61c2ce71381d314dc3d82b86d273bfaa866fc47b976f7a0029", + "sourceMap": "289:2199:23:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;289:2199:23;;;;;;;", + "deployedSourceMap": "289:2199:23:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1984:502;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1984:502:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;498:46:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:8;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1528:202:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1528:202:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;331:48:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;331:48:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;667:298;;8:9:-1;5:2;;;30:1;27;20:12;5:2;667:298:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1114:260;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1114:260:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;385:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;385:40:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;385:40:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1984:502;2083:4;2213:7;;;;;;;;;;;2200:29;;;2230:10;2200:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2200:41:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2200:41:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2200:41:23;;;;;;;;;;;;;;;;2192:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2301:13;:17;2315:2;2301:17;;;;;;;;;;;;;;;;;;;;;;;;;2293:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2374:7;;;;;;;;;;;:33;;;2408:2;2412:5;2419:4;2425:19;2374:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2374:71:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2374:71:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2374:71:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2374:71:23;;;;;;;;;;;;;;;;2366:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1984:502;;;;;:::o;498:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;262:28:8:-;;;;;;;;;;;;;:::o;626:248:5:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;1528:202:23:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1630:13:23;:22;1644:7;1630:22;;;;;;;;;;;;;;;;;;;;;;;;;1622:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1718:5;1693:13;:22;1707:7;1693:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1528:202;:::o;331:48::-;;;;;;;;;;;;;;;;;;;;:::o;667:298::-;758:9;813:15;731:12;:10;:12::i;:::-;770:1;758:13;;753:206;777:8;:15;773:1;:19;753:206;;;831:8;840:1;831:11;;;;;;;;;;;;;;;;;;813:29;;875:1;864:7;:12;;;;856:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;944:4;919:13;:22;933:7;919:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;794:3;;;;;;;753:206;;;667:298;;;:::o;1114:260::-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1222:1:23;1211:7;:12;;;;1203:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1271:13;:22;1285:7;1271:22;;;;;;;;;;;;;;;;;;;;;;;;;1270:23;1262:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1363:4;1338:13;:22;1352:7;1338:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1114:260;:::o;385:40::-;;;;;;;;;;;;;;;;;;;;:::o;434:300:8:-;648:1;636:7;;;;;;;;;;;628:21;;;620:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:10;692:7;;:35;;;;;;;;;;;;;;;;;;434:300::o", "source": "pragma solidity 0.4.24;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n/// @author Stefan George - \ncontract WhitelistModule is Module {\n\n string public constant NAME = \"Whitelist Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isWhitelisted mapping maps destination address to boolean.\n mapping (address => bool) public isWhitelisted;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param accounts List of whitelisted accounts.\n function setup(address[] accounts)\n public\n {\n setManager();\n for (uint256 i = 0; i < accounts.length; i++) {\n address account = accounts[i];\n require(account != 0, \"Invalid account provided\");\n isWhitelisted[account] = true;\n }\n }\n\n /// @dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function addToWhitelist(address account)\n public\n authorized\n {\n require(account != 0, \"Invalid account provided\");\n require(!isWhitelisted[account], \"Account is already whitelisted\");\n isWhitelisted[account] = true;\n }\n\n /// @dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function removeFromWhitelist(address account)\n public\n authorized\n {\n require(isWhitelisted[account], \"Account is not whitelisted\");\n isWhitelisted[account] = false;\n }\n\n /// @dev Returns if Safe transaction is to a whitelisted destination.\n /// @param to Whitelisted destination address.\n /// @param value Not checked.\n /// @param data Not checked.\n /// @return Returns if transaction can be executed.\n function executeWhitelisted(address to, uint256 value, bytes data)\n public\n returns (bool)\n {\n // Only Safe owners are allowed to execute transactions to whitelisted accounts.\n require(OwnerManager(manager).isOwner(msg.sender), \"Method can only be called by an owner\");\n require(isWhitelisted[to], \"Target account is not whitelisted\");\n require(manager.execTransactionFromModule(to, value, data, Enum.Operation.Call), \"Could not execute transaction\");\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", "exportedSymbols": { "WhitelistModule": [ - 2685 + 4021 ] }, - "id": 2686, + "id": 4022, "nodeType": "SourceUnit", "nodes": [ { - "id": 2533, + "id": 3869, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:21" + "src": "0:23:23" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 2534, + "id": 3870, "nodeType": "ImportDirective", - "scope": 2686, + "scope": 4022, "sourceUnit": 31, - "src": "24:21:21", + "src": "24:21:23", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2535, + "id": 3871, "nodeType": "ImportDirective", - "scope": 2686, - "sourceUnit": 733, - "src": "46:23:21", + "scope": 4022, + "sourceUnit": 1862, + "src": "46:23:23", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 2536, + "id": 3872, "nodeType": "ImportDirective", - "scope": 2686, - "sourceUnit": 1104, - "src": "70:30:21", + "scope": 4022, + "sourceUnit": 2233, + "src": "70:30:23", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2537, + "id": 3873, "nodeType": "ImportDirective", - "scope": 2686, - "sourceUnit": 1514, - "src": "101:29:21", + "scope": 4022, + "sourceUnit": 2889, + "src": "101:29:23", "symbolAliases": [], "unitAlias": "" }, @@ -222,46 +222,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2538, + "id": 3874, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 732, - "src": "317:6:21", + "referencedDeclaration": 1861, + "src": "317:6:23", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$732", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, - "id": 2539, + "id": 3875, "nodeType": "InheritanceSpecifier", - "src": "317:6:21" + "src": "317:6:23" } ], "contractDependencies": [ 632, - 732, - 1663 + 1861, + 3065 ], "contractKind": "contract", "documentation": "@title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2685, + "id": 4021, "linearizedBaseContracts": [ - 2685, - 732, + 4021, + 1861, 632, - 1663 + 3065 ], "name": "WhitelistModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2542, + "id": 3878, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2685, - "src": "331:48:21", + "scope": 4021, + "src": "331:48:23", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -269,10 +269,10 @@ "typeString": "string" }, "typeName": { - "id": 2540, + "id": 3876, "name": "string", "nodeType": "ElementaryTypeName", - "src": "331:6:21", + "src": "331:6:23", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -281,14 +281,14 @@ "value": { "argumentTypes": null, "hexValue": "57686974656c697374204d6f64756c65", - "id": 2541, + "id": 3877, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "361:18:21", + "src": "361:18:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_84d69d03a7c747e8eefe7cc2b9e87b566cfc57cc90e4ed88f03f9c9780b7d4e6", @@ -300,11 +300,11 @@ }, { "constant": true, - "id": 2545, + "id": 3881, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2685, - "src": "385:40:21", + "scope": 4021, + "src": "385:40:23", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -312,10 +312,10 @@ "typeString": "string" }, "typeName": { - "id": 2543, + "id": 3879, "name": "string", "nodeType": "ElementaryTypeName", - "src": "385:6:21", + "src": "385:6:23", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -324,14 +324,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2544, + "id": 3880, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "418:7:21", + "src": "418:7:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -343,11 +343,11 @@ }, { "constant": false, - "id": 2549, + "id": 3885, "name": "isWhitelisted", "nodeType": "VariableDeclaration", - "scope": 2685, - "src": "498:46:21", + "scope": 4021, + "src": "498:46:23", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -355,28 +355,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 2548, + "id": 3884, "keyType": { - "id": 2546, + "id": 3882, "name": "address", "nodeType": "ElementaryTypeName", - "src": "507:7:21", + "src": "507:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "498:25:21", + "src": "498:25:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2547, + "id": 3883, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "518:4:21", + "src": "518:4:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -388,9 +388,9 @@ }, { "body": { - "id": 2590, + "id": 3926, "nodeType": "Block", - "src": "721:244:21", + "src": "721:244:23", "statements": [ { "expression": { @@ -398,18 +398,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2555, + "id": 3891, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 731, - "src": "731:10:21", + "referencedDeclaration": 1860, + "src": "731:10:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2556, + "id": 3892, "isConstant": false, "isLValue": false, "isPure": false, @@ -417,34 +417,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "731:12:21", + "src": "731:12:23", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2557, + "id": 3893, "nodeType": "ExpressionStatement", - "src": "731:12:21" + "src": "731:12:23" }, { "body": { - "id": 2588, + "id": 3924, "nodeType": "Block", - "src": "799:160:21", + "src": "799:160:23", "statements": [ { "assignments": [ - 2570 + 3906 ], "declarations": [ { "constant": false, - "id": 2570, + "id": 3906, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2591, - "src": "813:15:21", + "scope": 3927, + "src": "813:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -452,10 +452,10 @@ "typeString": "address" }, "typeName": { - "id": 2569, + "id": 3905, "name": "address", "nodeType": "ElementaryTypeName", - "src": "813:7:21", + "src": "813:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -465,31 +465,31 @@ "visibility": "internal" } ], - "id": 2574, + "id": 3910, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2571, + "id": 3907, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2552, - "src": "831:8:21", + "referencedDeclaration": 3888, + "src": "831:8:23", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2573, + "id": 3909, "indexExpression": { "argumentTypes": null, - "id": 2572, + "id": 3908, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2559, - "src": "840:1:21", + "referencedDeclaration": 3895, + "src": "840:1:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -500,14 +500,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "831:11:21", + "src": "831:11:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "813:29:21" + "src": "813:29:23" }, { "expression": { @@ -519,19 +519,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2578, + "id": 3914, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2576, + "id": 3912, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2570, - "src": "864:7:21", + "referencedDeclaration": 3906, + "src": "864:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -542,14 +542,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2577, + "id": 3913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "875:1:21", + "src": "875:1:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -557,7 +557,7 @@ }, "value": "0" }, - "src": "864:12:21", + "src": "864:12:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -566,14 +566,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206163636f756e742070726f7669646564", - "id": 2579, + "id": 3915, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "878:26:21", + "src": "878:26:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", @@ -593,21 +593,21 @@ "typeString": "literal_string \"Invalid account provided\"" } ], - "id": 2575, + "id": 3911, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "856:7:21", + "referencedDeclaration": 4040, + "src": "856:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2580, + "id": 3916, "isConstant": false, "isLValue": false, "isPure": false, @@ -615,20 +615,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "856:49:21", + "src": "856:49:23", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2581, + "id": 3917, "nodeType": "ExpressionStatement", - "src": "856:49:21" + "src": "856:49:23" }, { "expression": { "argumentTypes": null, - "id": 2586, + "id": 3922, "isConstant": false, "isLValue": false, "isPure": false, @@ -637,26 +637,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2582, + "id": 3918, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2549, - "src": "919:13:21", + "referencedDeclaration": 3885, + "src": "919:13:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2584, + "id": 3920, "indexExpression": { "argumentTypes": null, - "id": 2583, + "id": 3919, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2570, - "src": "933:7:21", + "referencedDeclaration": 3906, + "src": "933:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -667,7 +667,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "919:22:21", + "src": "919:22:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -678,14 +678,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2585, + "id": 3921, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "944:4:21", + "src": "944:4:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -693,15 +693,15 @@ }, "value": "true" }, - "src": "919:29:21", + "src": "919:29:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2587, + "id": 3923, "nodeType": "ExpressionStatement", - "src": "919:29:21" + "src": "919:29:23" } ] }, @@ -711,19 +711,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2565, + "id": 3901, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2562, + "id": 3898, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2559, - "src": "773:1:21", + "referencedDeclaration": 3895, + "src": "773:1:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -735,18 +735,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2563, + "id": 3899, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2552, - "src": "777:8:21", + "referencedDeclaration": 3888, + "src": "777:8:23", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2564, + "id": 3900, "isConstant": false, "isLValue": false, "isPure": false, @@ -754,31 +754,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "777:15:21", + "src": "777:15:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "773:19:21", + "src": "773:19:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2589, + "id": 3925, "initializationExpression": { "assignments": [ - 2559 + 3895 ], "declarations": [ { "constant": false, - "id": 2559, + "id": 3895, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2591, - "src": "758:9:21", + "scope": 3927, + "src": "758:9:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -786,10 +786,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2558, + "id": 3894, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "758:7:21", + "src": "758:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -799,18 +799,18 @@ "visibility": "internal" } ], - "id": 2561, + "id": 3897, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2560, + "id": 3896, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "770:1:21", + "src": "770:1:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -819,12 +819,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "758:13:21" + "src": "758:13:23" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2567, + "id": 3903, "isConstant": false, "isLValue": false, "isPure": false, @@ -832,15 +832,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "794:3:21", + "src": "794:3:23", "subExpression": { "argumentTypes": null, - "id": 2566, + "id": 3902, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2559, - "src": "794:1:21", + "referencedDeclaration": 3895, + "src": "794:1:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -851,17 +851,17 @@ "typeString": "uint256" } }, - "id": 2568, + "id": 3904, "nodeType": "ExpressionStatement", - "src": "794:3:21" + "src": "794:3:23" }, "nodeType": "ForStatement", - "src": "753:206:21" + "src": "753:206:23" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param accounts List of whitelisted accounts.", - "id": 2591, + "id": 3927, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -869,16 +869,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2553, + "id": 3889, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2552, + "id": 3888, "name": "accounts", "nodeType": "VariableDeclaration", - "scope": 2591, - "src": "682:18:21", + "scope": 3927, + "src": "682:18:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -887,19 +887,19 @@ }, "typeName": { "baseType": { - "id": 2550, + "id": 3886, "name": "address", "nodeType": "ElementaryTypeName", - "src": "682:7:21", + "src": "682:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2551, + "id": 3887, "length": null, "nodeType": "ArrayTypeName", - "src": "682:9:21", + "src": "682:9:23", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -909,26 +909,26 @@ "visibility": "internal" } ], - "src": "681:20:21" + "src": "681:20:23" }, "payable": false, "returnParameters": { - "id": 2554, + "id": 3890, "nodeType": "ParameterList", "parameters": [], - "src": "721:0:21" + "src": "721:0:23" }, - "scope": 2685, - "src": "667:298:21", + "scope": 4021, + "src": "667:298:23", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2619, + "id": 3955, "nodeType": "Block", - "src": "1193:181:21", + "src": "1193:181:23", "statements": [ { "expression": { @@ -940,19 +940,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2601, + "id": 3937, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2599, + "id": 3935, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2593, - "src": "1211:7:21", + "referencedDeclaration": 3929, + "src": "1211:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -963,14 +963,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2600, + "id": 3936, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1222:1:21", + "src": "1222:1:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -978,7 +978,7 @@ }, "value": "0" }, - "src": "1211:12:21", + "src": "1211:12:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -987,14 +987,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206163636f756e742070726f7669646564", - "id": 2602, + "id": 3938, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1225:26:21", + "src": "1225:26:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", @@ -1014,21 +1014,21 @@ "typeString": "literal_string \"Invalid account provided\"" } ], - "id": 2598, + "id": 3934, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "1203:7:21", + "referencedDeclaration": 4040, + "src": "1203:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2603, + "id": 3939, "isConstant": false, "isLValue": false, "isPure": false, @@ -1036,15 +1036,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1203:49:21", + "src": "1203:49:23", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2604, + "id": 3940, "nodeType": "ExpressionStatement", - "src": "1203:49:21" + "src": "1203:49:23" }, { "expression": { @@ -1052,7 +1052,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2609, + "id": 3945, "isConstant": false, "isLValue": false, "isPure": false, @@ -1060,31 +1060,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1270:23:21", + "src": "1270:23:23", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2606, + "id": 3942, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2549, - "src": "1271:13:21", + "referencedDeclaration": 3885, + "src": "1271:13:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2608, + "id": 3944, "indexExpression": { "argumentTypes": null, - "id": 2607, + "id": 3943, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2593, - "src": "1285:7:21", + "referencedDeclaration": 3929, + "src": "1285:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1095,7 +1095,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1271:22:21", + "src": "1271:22:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1109,14 +1109,14 @@ { "argumentTypes": null, "hexValue": "4163636f756e7420697320616c72656164792077686974656c6973746564", - "id": 2610, + "id": 3946, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1295:32:21", + "src": "1295:32:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_42f0c01c0b06bc5e652009543318e4fd67cfba114702c7f55fad1ff0c3c82ad8", @@ -1136,21 +1136,21 @@ "typeString": "literal_string \"Account is already whitelisted\"" } ], - "id": 2605, + "id": 3941, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "1262:7:21", + "referencedDeclaration": 4040, + "src": "1262:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2611, + "id": 3947, "isConstant": false, "isLValue": false, "isPure": false, @@ -1158,20 +1158,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1262:66:21", + "src": "1262:66:23", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2612, + "id": 3948, "nodeType": "ExpressionStatement", - "src": "1262:66:21" + "src": "1262:66:23" }, { "expression": { "argumentTypes": null, - "id": 2617, + "id": 3953, "isConstant": false, "isLValue": false, "isPure": false, @@ -1180,26 +1180,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2613, + "id": 3949, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2549, - "src": "1338:13:21", + "referencedDeclaration": 3885, + "src": "1338:13:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2615, + "id": 3951, "indexExpression": { "argumentTypes": null, - "id": 2614, + "id": 3950, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2593, - "src": "1352:7:21", + "referencedDeclaration": 3929, + "src": "1352:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1210,7 +1210,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1338:22:21", + "src": "1338:22:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1221,14 +1221,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2616, + "id": 3952, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1363:4:21", + "src": "1363:4:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1236,57 +1236,57 @@ }, "value": "true" }, - "src": "1338:29:21", + "src": "1338:29:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2618, + "id": 3954, "nodeType": "ExpressionStatement", - "src": "1338:29:21" + "src": "1338:29:23" } ] }, "documentation": "@dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2620, + "id": 3956, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2596, + "id": 3932, "modifierName": { "argumentTypes": null, - "id": 2595, + "id": 3931, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "1178:10:21", + "referencedDeclaration": 1840, + "src": "1178:10:23", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1178:10:21" + "src": "1178:10:23" } ], "name": "addToWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2594, + "id": 3930, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2593, + "id": 3929, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2620, - "src": "1138:15:21", + "scope": 3956, + "src": "1138:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1294,10 +1294,10 @@ "typeString": "address" }, "typeName": { - "id": 2592, + "id": 3928, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1138:7:21", + "src": "1138:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1307,26 +1307,26 @@ "visibility": "internal" } ], - "src": "1137:17:21" + "src": "1137:17:23" }, "payable": false, "returnParameters": { - "id": 2597, + "id": 3933, "nodeType": "ParameterList", "parameters": [], - "src": "1193:0:21" + "src": "1193:0:23" }, - "scope": 2685, - "src": "1114:260:21", + "scope": 4021, + "src": "1114:260:23", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2640, + "id": 3976, "nodeType": "Block", - "src": "1612:118:21", + "src": "1612:118:23", "statements": [ { "expression": { @@ -1336,26 +1336,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2628, + "id": 3964, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2549, - "src": "1630:13:21", + "referencedDeclaration": 3885, + "src": "1630:13:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2630, + "id": 3966, "indexExpression": { "argumentTypes": null, - "id": 2629, + "id": 3965, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2622, - "src": "1644:7:21", + "referencedDeclaration": 3958, + "src": "1644:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1366,7 +1366,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1630:22:21", + "src": "1630:22:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1375,14 +1375,14 @@ { "argumentTypes": null, "hexValue": "4163636f756e74206973206e6f742077686974656c6973746564", - "id": 2631, + "id": 3967, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1654:28:21", + "src": "1654:28:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_2f56605dd36b69a55672cdc762e8d3959c002a474a30a6774bba38bb65f718e1", @@ -1402,21 +1402,21 @@ "typeString": "literal_string \"Account is not whitelisted\"" } ], - "id": 2627, + "id": 3963, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "1622:7:21", + "referencedDeclaration": 4040, + "src": "1622:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2632, + "id": 3968, "isConstant": false, "isLValue": false, "isPure": false, @@ -1424,20 +1424,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1622:61:21", + "src": "1622:61:23", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2633, + "id": 3969, "nodeType": "ExpressionStatement", - "src": "1622:61:21" + "src": "1622:61:23" }, { "expression": { "argumentTypes": null, - "id": 2638, + "id": 3974, "isConstant": false, "isLValue": false, "isPure": false, @@ -1446,26 +1446,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2634, + "id": 3970, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2549, - "src": "1693:13:21", + "referencedDeclaration": 3885, + "src": "1693:13:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2636, + "id": 3972, "indexExpression": { "argumentTypes": null, - "id": 2635, + "id": 3971, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2622, - "src": "1707:7:21", + "referencedDeclaration": 3958, + "src": "1707:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1476,7 +1476,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1693:22:21", + "src": "1693:22:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1487,14 +1487,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2637, + "id": 3973, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1718:5:21", + "src": "1718:5:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1502,57 +1502,57 @@ }, "value": "false" }, - "src": "1693:30:21", + "src": "1693:30:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2639, + "id": 3975, "nodeType": "ExpressionStatement", - "src": "1693:30:21" + "src": "1693:30:23" } ] }, "documentation": "@dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2641, + "id": 3977, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2625, + "id": 3961, "modifierName": { "argumentTypes": null, - "id": 2624, + "id": 3960, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "1597:10:21", + "referencedDeclaration": 1840, + "src": "1597:10:23", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1597:10:21" + "src": "1597:10:23" } ], "name": "removeFromWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2623, + "id": 3959, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2622, + "id": 3958, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2641, - "src": "1557:15:21", + "scope": 3977, + "src": "1557:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1560,10 +1560,10 @@ "typeString": "address" }, "typeName": { - "id": 2621, + "id": 3957, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1557:7:21", + "src": "1557:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1573,26 +1573,26 @@ "visibility": "internal" } ], - "src": "1556:17:21" + "src": "1556:17:23" }, "payable": false, "returnParameters": { - "id": 2626, + "id": 3962, "nodeType": "ParameterList", "parameters": [], - "src": "1612:0:21" + "src": "1612:0:23" }, - "scope": 2685, - "src": "1528:202:21", + "scope": 4021, + "src": "1528:202:23", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2683, + "id": 4019, "nodeType": "Block", - "src": "2093:393:21", + "src": "2093:393:23", "statements": [ { "expression": { @@ -1605,18 +1605,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2657, + "id": 3993, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2700, - "src": "2230:3:21", + "referencedDeclaration": 4036, + "src": "2230:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2658, + "id": 3994, "isConstant": false, "isLValue": false, "isPure": false, @@ -1624,7 +1624,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2230:10:21", + "src": "2230:10:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1643,14 +1643,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2654, + "id": 3990, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 697, - "src": "2213:7:21", + "referencedDeclaration": 1826, + "src": "2213:7:23", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } } @@ -1658,22 +1658,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } ], - "id": 2653, + "id": 3989, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1513, - "src": "2200:12:21", + "referencedDeclaration": 2888, + "src": "2200:12:23", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1513_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$2888_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2655, + "id": 3991, "isConstant": false, "isLValue": false, "isPure": false, @@ -1681,27 +1681,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2200:21:21", + "src": "2200:21:23", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1513", + "typeIdentifier": "t_contract$_OwnerManager_$2888", "typeString": "contract OwnerManager" } }, - "id": 2656, + "id": 3992, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1463, - "src": "2200:29:21", + "referencedDeclaration": 2838, + "src": "2200:29:23", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2659, + "id": 3995, "isConstant": false, "isLValue": false, "isPure": false, @@ -1709,7 +1709,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2200:41:21", + "src": "2200:41:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1718,14 +1718,14 @@ { "argumentTypes": null, "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e206f776e6572", - "id": 2660, + "id": 3996, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2243:39:21", + "src": "2243:39:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", @@ -1745,21 +1745,21 @@ "typeString": "literal_string \"Method can only be called by an owner\"" } ], - "id": 2652, + "id": 3988, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2192:7:21", + "referencedDeclaration": 4040, + "src": "2192:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2661, + "id": 3997, "isConstant": false, "isLValue": false, "isPure": false, @@ -1767,15 +1767,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2192:91:21", + "src": "2192:91:23", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2662, + "id": 3998, "nodeType": "ExpressionStatement", - "src": "2192:91:21" + "src": "2192:91:23" }, { "expression": { @@ -1785,26 +1785,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2664, + "id": 4000, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2549, - "src": "2301:13:21", + "referencedDeclaration": 3885, + "src": "2301:13:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2666, + "id": 4002, "indexExpression": { "argumentTypes": null, - "id": 2665, + "id": 4001, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2643, - "src": "2315:2:21", + "referencedDeclaration": 3979, + "src": "2315:2:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1815,7 +1815,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2301:17:21", + "src": "2301:17:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1824,14 +1824,14 @@ { "argumentTypes": null, "hexValue": "546172676574206163636f756e74206973206e6f742077686974656c6973746564", - "id": 2667, + "id": 4003, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2320:35:21", + "src": "2320:35:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9a154d7dadc01125e34b410c8bdd8fd2546fbbac90b22b0d92787a072cf6fc42", @@ -1851,21 +1851,21 @@ "typeString": "literal_string \"Target account is not whitelisted\"" } ], - "id": 2663, + "id": 3999, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2293:7:21", + "referencedDeclaration": 4040, + "src": "2293:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2668, + "id": 4004, "isConstant": false, "isLValue": false, "isPure": false, @@ -1873,15 +1873,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2293:63:21", + "src": "2293:63:23", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2669, + "id": 4005, "nodeType": "ExpressionStatement", - "src": "2293:63:21" + "src": "2293:63:23" }, { "expression": { @@ -1892,12 +1892,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2673, + "id": 4009, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2643, - "src": "2408:2:21", + "referencedDeclaration": 3979, + "src": "2408:2:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1905,12 +1905,12 @@ }, { "argumentTypes": null, - "id": 2674, + "id": 4010, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2645, - "src": "2412:5:21", + "referencedDeclaration": 3981, + "src": "2412:5:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1918,12 +1918,12 @@ }, { "argumentTypes": null, - "id": 2675, + "id": 4011, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2647, - "src": "2419:4:21", + "referencedDeclaration": 3983, + "src": "2419:4:23", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1935,18 +1935,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2676, + "id": 4012, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2425:4:21", + "src": "2425:4:23", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 2677, + "id": 4013, "isConstant": false, "isLValue": false, "isPure": false, @@ -1954,13 +1954,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2425:14:21", + "src": "2425:14:23", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 2678, + "id": 4014, "isConstant": false, "isLValue": false, "isPure": true, @@ -1968,7 +1968,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2425:19:21", + "src": "2425:19:23", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -1996,32 +1996,32 @@ ], "expression": { "argumentTypes": null, - "id": 2671, + "id": 4007, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 697, - "src": "2374:7:21", + "referencedDeclaration": 1826, + "src": "2374:7:23", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, - "id": 2672, + "id": 4008, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 930, - "src": "2374:33:21", + "referencedDeclaration": 2059, + "src": "2374:33:23", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2679, + "id": 4015, "isConstant": false, "isLValue": false, "isPure": false, @@ -2029,7 +2029,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2374:71:21", + "src": "2374:71:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2038,14 +2038,14 @@ { "argumentTypes": null, "hexValue": "436f756c64206e6f742065786563757465207472616e73616374696f6e", - "id": 2680, + "id": 4016, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2447:31:21", + "src": "2447:31:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", @@ -2065,21 +2065,21 @@ "typeString": "literal_string \"Could not execute transaction\"" } ], - "id": 2670, + "id": 4006, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2366:7:21", + "referencedDeclaration": 4040, + "src": "2366:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2681, + "id": 4017, "isConstant": false, "isLValue": false, "isPure": false, @@ -2087,20 +2087,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2366:113:21", + "src": "2366:113:23", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2682, + "id": 4018, "nodeType": "ExpressionStatement", - "src": "2366:113:21" + "src": "2366:113:23" } ] }, "documentation": "@dev Returns if Safe transaction is to a whitelisted destination.\n @param to Whitelisted destination address.\n @param value Not checked.\n @param data Not checked.\n @return Returns if transaction can be executed.", - "id": 2684, + "id": 4020, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2108,16 +2108,16 @@ "name": "executeWhitelisted", "nodeType": "FunctionDefinition", "parameters": { - "id": 2648, + "id": 3984, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2643, + "id": 3979, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2684, - "src": "2012:10:21", + "scope": 4020, + "src": "2012:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2125,10 +2125,10 @@ "typeString": "address" }, "typeName": { - "id": 2642, + "id": 3978, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2012:7:21", + "src": "2012:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2139,11 +2139,11 @@ }, { "constant": false, - "id": 2645, + "id": 3981, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2684, - "src": "2024:13:21", + "scope": 4020, + "src": "2024:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2151,10 +2151,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2644, + "id": 3980, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2024:7:21", + "src": "2024:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2165,11 +2165,11 @@ }, { "constant": false, - "id": 2647, + "id": 3983, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2684, - "src": "2039:10:21", + "scope": 4020, + "src": "2039:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2177,10 +2177,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2646, + "id": 3982, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2039:5:21", + "src": "2039:5:23", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2190,20 +2190,20 @@ "visibility": "internal" } ], - "src": "2011:39:21" + "src": "2011:39:23" }, "payable": false, "returnParameters": { - "id": 2651, + "id": 3987, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2650, + "id": 3986, "name": "", "nodeType": "VariableDeclaration", - "scope": 2684, - "src": "2083:4:21", + "scope": 4020, + "src": "2083:4:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2211,10 +2211,10 @@ "typeString": "bool" }, "typeName": { - "id": 2649, + "id": 3985, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2083:4:21", + "src": "2083:4:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2224,82 +2224,82 @@ "visibility": "internal" } ], - "src": "2082:6:21" + "src": "2082:6:23" }, - "scope": 2685, - "src": "1984:502:21", + "scope": 4021, + "src": "1984:502:23", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 2686, - "src": "289:2199:21" + "scope": 4022, + "src": "289:2199:23" } ], - "src": "0:2489:21" + "src": "0:2489:23" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", "exportedSymbols": { "WhitelistModule": [ - 2685 + 4021 ] }, - "id": 2686, + "id": 4022, "nodeType": "SourceUnit", "nodes": [ { - "id": 2533, + "id": 3869, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:21" + "src": "0:23:23" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 2534, + "id": 3870, "nodeType": "ImportDirective", - "scope": 2686, + "scope": 4022, "sourceUnit": 31, - "src": "24:21:21", + "src": "24:21:23", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2535, + "id": 3871, "nodeType": "ImportDirective", - "scope": 2686, - "sourceUnit": 733, - "src": "46:23:21", + "scope": 4022, + "sourceUnit": 1862, + "src": "46:23:23", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 2536, + "id": 3872, "nodeType": "ImportDirective", - "scope": 2686, - "sourceUnit": 1104, - "src": "70:30:21", + "scope": 4022, + "sourceUnit": 2233, + "src": "70:30:23", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2537, + "id": 3873, "nodeType": "ImportDirective", - "scope": 2686, - "sourceUnit": 1514, - "src": "101:29:21", + "scope": 4022, + "sourceUnit": 2889, + "src": "101:29:23", "symbolAliases": [], "unitAlias": "" }, @@ -2309,46 +2309,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2538, + "id": 3874, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 732, - "src": "317:6:21", + "referencedDeclaration": 1861, + "src": "317:6:23", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$732", + "typeIdentifier": "t_contract$_Module_$1861", "typeString": "contract Module" } }, - "id": 2539, + "id": 3875, "nodeType": "InheritanceSpecifier", - "src": "317:6:21" + "src": "317:6:23" } ], "contractDependencies": [ 632, - 732, - 1663 + 1861, + 3065 ], "contractKind": "contract", "documentation": "@title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2685, + "id": 4021, "linearizedBaseContracts": [ - 2685, - 732, + 4021, + 1861, 632, - 1663 + 3065 ], "name": "WhitelistModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2542, + "id": 3878, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2685, - "src": "331:48:21", + "scope": 4021, + "src": "331:48:23", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2356,10 +2356,10 @@ "typeString": "string" }, "typeName": { - "id": 2540, + "id": 3876, "name": "string", "nodeType": "ElementaryTypeName", - "src": "331:6:21", + "src": "331:6:23", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2368,14 +2368,14 @@ "value": { "argumentTypes": null, "hexValue": "57686974656c697374204d6f64756c65", - "id": 2541, + "id": 3877, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "361:18:21", + "src": "361:18:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_84d69d03a7c747e8eefe7cc2b9e87b566cfc57cc90e4ed88f03f9c9780b7d4e6", @@ -2387,11 +2387,11 @@ }, { "constant": true, - "id": 2545, + "id": 3881, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2685, - "src": "385:40:21", + "scope": 4021, + "src": "385:40:23", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2399,10 +2399,10 @@ "typeString": "string" }, "typeName": { - "id": 2543, + "id": 3879, "name": "string", "nodeType": "ElementaryTypeName", - "src": "385:6:21", + "src": "385:6:23", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2411,14 +2411,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2544, + "id": 3880, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "418:7:21", + "src": "418:7:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -2430,11 +2430,11 @@ }, { "constant": false, - "id": 2549, + "id": 3885, "name": "isWhitelisted", "nodeType": "VariableDeclaration", - "scope": 2685, - "src": "498:46:21", + "scope": 4021, + "src": "498:46:23", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2442,28 +2442,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 2548, + "id": 3884, "keyType": { - "id": 2546, + "id": 3882, "name": "address", "nodeType": "ElementaryTypeName", - "src": "507:7:21", + "src": "507:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "498:25:21", + "src": "498:25:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2547, + "id": 3883, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "518:4:21", + "src": "518:4:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2475,9 +2475,9 @@ }, { "body": { - "id": 2590, + "id": 3926, "nodeType": "Block", - "src": "721:244:21", + "src": "721:244:23", "statements": [ { "expression": { @@ -2485,18 +2485,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2555, + "id": 3891, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 731, - "src": "731:10:21", + "referencedDeclaration": 1860, + "src": "731:10:23", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2556, + "id": 3892, "isConstant": false, "isLValue": false, "isPure": false, @@ -2504,34 +2504,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "731:12:21", + "src": "731:12:23", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2557, + "id": 3893, "nodeType": "ExpressionStatement", - "src": "731:12:21" + "src": "731:12:23" }, { "body": { - "id": 2588, + "id": 3924, "nodeType": "Block", - "src": "799:160:21", + "src": "799:160:23", "statements": [ { "assignments": [ - 2570 + 3906 ], "declarations": [ { "constant": false, - "id": 2570, + "id": 3906, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2591, - "src": "813:15:21", + "scope": 3927, + "src": "813:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2539,10 +2539,10 @@ "typeString": "address" }, "typeName": { - "id": 2569, + "id": 3905, "name": "address", "nodeType": "ElementaryTypeName", - "src": "813:7:21", + "src": "813:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2552,31 +2552,31 @@ "visibility": "internal" } ], - "id": 2574, + "id": 3910, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2571, + "id": 3907, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2552, - "src": "831:8:21", + "referencedDeclaration": 3888, + "src": "831:8:23", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2573, + "id": 3909, "indexExpression": { "argumentTypes": null, - "id": 2572, + "id": 3908, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2559, - "src": "840:1:21", + "referencedDeclaration": 3895, + "src": "840:1:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2587,14 +2587,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "831:11:21", + "src": "831:11:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "813:29:21" + "src": "813:29:23" }, { "expression": { @@ -2606,19 +2606,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2578, + "id": 3914, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2576, + "id": 3912, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2570, - "src": "864:7:21", + "referencedDeclaration": 3906, + "src": "864:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2629,14 +2629,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2577, + "id": 3913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "875:1:21", + "src": "875:1:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2644,7 +2644,7 @@ }, "value": "0" }, - "src": "864:12:21", + "src": "864:12:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2653,14 +2653,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206163636f756e742070726f7669646564", - "id": 2579, + "id": 3915, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "878:26:21", + "src": "878:26:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", @@ -2680,21 +2680,21 @@ "typeString": "literal_string \"Invalid account provided\"" } ], - "id": 2575, + "id": 3911, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "856:7:21", + "referencedDeclaration": 4040, + "src": "856:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2580, + "id": 3916, "isConstant": false, "isLValue": false, "isPure": false, @@ -2702,20 +2702,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "856:49:21", + "src": "856:49:23", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2581, + "id": 3917, "nodeType": "ExpressionStatement", - "src": "856:49:21" + "src": "856:49:23" }, { "expression": { "argumentTypes": null, - "id": 2586, + "id": 3922, "isConstant": false, "isLValue": false, "isPure": false, @@ -2724,26 +2724,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2582, + "id": 3918, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2549, - "src": "919:13:21", + "referencedDeclaration": 3885, + "src": "919:13:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2584, + "id": 3920, "indexExpression": { "argumentTypes": null, - "id": 2583, + "id": 3919, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2570, - "src": "933:7:21", + "referencedDeclaration": 3906, + "src": "933:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2754,7 +2754,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "919:22:21", + "src": "919:22:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2765,14 +2765,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2585, + "id": 3921, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "944:4:21", + "src": "944:4:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2780,15 +2780,15 @@ }, "value": "true" }, - "src": "919:29:21", + "src": "919:29:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2587, + "id": 3923, "nodeType": "ExpressionStatement", - "src": "919:29:21" + "src": "919:29:23" } ] }, @@ -2798,19 +2798,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2565, + "id": 3901, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2562, + "id": 3898, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2559, - "src": "773:1:21", + "referencedDeclaration": 3895, + "src": "773:1:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2822,18 +2822,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2563, + "id": 3899, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2552, - "src": "777:8:21", + "referencedDeclaration": 3888, + "src": "777:8:23", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2564, + "id": 3900, "isConstant": false, "isLValue": false, "isPure": false, @@ -2841,31 +2841,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "777:15:21", + "src": "777:15:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "773:19:21", + "src": "773:19:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2589, + "id": 3925, "initializationExpression": { "assignments": [ - 2559 + 3895 ], "declarations": [ { "constant": false, - "id": 2559, + "id": 3895, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2591, - "src": "758:9:21", + "scope": 3927, + "src": "758:9:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2873,10 +2873,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2558, + "id": 3894, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "758:7:21", + "src": "758:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2886,18 +2886,18 @@ "visibility": "internal" } ], - "id": 2561, + "id": 3897, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2560, + "id": 3896, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "770:1:21", + "src": "770:1:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2906,12 +2906,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "758:13:21" + "src": "758:13:23" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2567, + "id": 3903, "isConstant": false, "isLValue": false, "isPure": false, @@ -2919,15 +2919,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "794:3:21", + "src": "794:3:23", "subExpression": { "argumentTypes": null, - "id": 2566, + "id": 3902, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2559, - "src": "794:1:21", + "referencedDeclaration": 3895, + "src": "794:1:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2938,17 +2938,17 @@ "typeString": "uint256" } }, - "id": 2568, + "id": 3904, "nodeType": "ExpressionStatement", - "src": "794:3:21" + "src": "794:3:23" }, "nodeType": "ForStatement", - "src": "753:206:21" + "src": "753:206:23" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param accounts List of whitelisted accounts.", - "id": 2591, + "id": 3927, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2956,16 +2956,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2553, + "id": 3889, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2552, + "id": 3888, "name": "accounts", "nodeType": "VariableDeclaration", - "scope": 2591, - "src": "682:18:21", + "scope": 3927, + "src": "682:18:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2974,19 +2974,19 @@ }, "typeName": { "baseType": { - "id": 2550, + "id": 3886, "name": "address", "nodeType": "ElementaryTypeName", - "src": "682:7:21", + "src": "682:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2551, + "id": 3887, "length": null, "nodeType": "ArrayTypeName", - "src": "682:9:21", + "src": "682:9:23", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -2996,26 +2996,26 @@ "visibility": "internal" } ], - "src": "681:20:21" + "src": "681:20:23" }, "payable": false, "returnParameters": { - "id": 2554, + "id": 3890, "nodeType": "ParameterList", "parameters": [], - "src": "721:0:21" + "src": "721:0:23" }, - "scope": 2685, - "src": "667:298:21", + "scope": 4021, + "src": "667:298:23", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2619, + "id": 3955, "nodeType": "Block", - "src": "1193:181:21", + "src": "1193:181:23", "statements": [ { "expression": { @@ -3027,19 +3027,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2601, + "id": 3937, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2599, + "id": 3935, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2593, - "src": "1211:7:21", + "referencedDeclaration": 3929, + "src": "1211:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3050,14 +3050,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2600, + "id": 3936, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1222:1:21", + "src": "1222:1:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3065,7 +3065,7 @@ }, "value": "0" }, - "src": "1211:12:21", + "src": "1211:12:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3074,14 +3074,14 @@ { "argumentTypes": null, "hexValue": "496e76616c6964206163636f756e742070726f7669646564", - "id": 2602, + "id": 3938, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1225:26:21", + "src": "1225:26:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", @@ -3101,21 +3101,21 @@ "typeString": "literal_string \"Invalid account provided\"" } ], - "id": 2598, + "id": 3934, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "1203:7:21", + "referencedDeclaration": 4040, + "src": "1203:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2603, + "id": 3939, "isConstant": false, "isLValue": false, "isPure": false, @@ -3123,15 +3123,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1203:49:21", + "src": "1203:49:23", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2604, + "id": 3940, "nodeType": "ExpressionStatement", - "src": "1203:49:21" + "src": "1203:49:23" }, { "expression": { @@ -3139,7 +3139,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2609, + "id": 3945, "isConstant": false, "isLValue": false, "isPure": false, @@ -3147,31 +3147,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1270:23:21", + "src": "1270:23:23", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2606, + "id": 3942, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2549, - "src": "1271:13:21", + "referencedDeclaration": 3885, + "src": "1271:13:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2608, + "id": 3944, "indexExpression": { "argumentTypes": null, - "id": 2607, + "id": 3943, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2593, - "src": "1285:7:21", + "referencedDeclaration": 3929, + "src": "1285:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3182,7 +3182,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1271:22:21", + "src": "1271:22:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3196,14 +3196,14 @@ { "argumentTypes": null, "hexValue": "4163636f756e7420697320616c72656164792077686974656c6973746564", - "id": 2610, + "id": 3946, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1295:32:21", + "src": "1295:32:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_42f0c01c0b06bc5e652009543318e4fd67cfba114702c7f55fad1ff0c3c82ad8", @@ -3223,21 +3223,21 @@ "typeString": "literal_string \"Account is already whitelisted\"" } ], - "id": 2605, + "id": 3941, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "1262:7:21", + "referencedDeclaration": 4040, + "src": "1262:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2611, + "id": 3947, "isConstant": false, "isLValue": false, "isPure": false, @@ -3245,20 +3245,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1262:66:21", + "src": "1262:66:23", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2612, + "id": 3948, "nodeType": "ExpressionStatement", - "src": "1262:66:21" + "src": "1262:66:23" }, { "expression": { "argumentTypes": null, - "id": 2617, + "id": 3953, "isConstant": false, "isLValue": false, "isPure": false, @@ -3267,26 +3267,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2613, + "id": 3949, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2549, - "src": "1338:13:21", + "referencedDeclaration": 3885, + "src": "1338:13:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2615, + "id": 3951, "indexExpression": { "argumentTypes": null, - "id": 2614, + "id": 3950, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2593, - "src": "1352:7:21", + "referencedDeclaration": 3929, + "src": "1352:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3297,7 +3297,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1338:22:21", + "src": "1338:22:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3308,14 +3308,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2616, + "id": 3952, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1363:4:21", + "src": "1363:4:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3323,57 +3323,57 @@ }, "value": "true" }, - "src": "1338:29:21", + "src": "1338:29:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2618, + "id": 3954, "nodeType": "ExpressionStatement", - "src": "1338:29:21" + "src": "1338:29:23" } ] }, "documentation": "@dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2620, + "id": 3956, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2596, + "id": 3932, "modifierName": { "argumentTypes": null, - "id": 2595, + "id": 3931, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "1178:10:21", + "referencedDeclaration": 1840, + "src": "1178:10:23", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1178:10:21" + "src": "1178:10:23" } ], "name": "addToWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2594, + "id": 3930, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2593, + "id": 3929, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2620, - "src": "1138:15:21", + "scope": 3956, + "src": "1138:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3381,10 +3381,10 @@ "typeString": "address" }, "typeName": { - "id": 2592, + "id": 3928, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1138:7:21", + "src": "1138:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3394,26 +3394,26 @@ "visibility": "internal" } ], - "src": "1137:17:21" + "src": "1137:17:23" }, "payable": false, "returnParameters": { - "id": 2597, + "id": 3933, "nodeType": "ParameterList", "parameters": [], - "src": "1193:0:21" + "src": "1193:0:23" }, - "scope": 2685, - "src": "1114:260:21", + "scope": 4021, + "src": "1114:260:23", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2640, + "id": 3976, "nodeType": "Block", - "src": "1612:118:21", + "src": "1612:118:23", "statements": [ { "expression": { @@ -3423,26 +3423,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2628, + "id": 3964, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2549, - "src": "1630:13:21", + "referencedDeclaration": 3885, + "src": "1630:13:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2630, + "id": 3966, "indexExpression": { "argumentTypes": null, - "id": 2629, + "id": 3965, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2622, - "src": "1644:7:21", + "referencedDeclaration": 3958, + "src": "1644:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3453,7 +3453,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1630:22:21", + "src": "1630:22:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3462,14 +3462,14 @@ { "argumentTypes": null, "hexValue": "4163636f756e74206973206e6f742077686974656c6973746564", - "id": 2631, + "id": 3967, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1654:28:21", + "src": "1654:28:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_2f56605dd36b69a55672cdc762e8d3959c002a474a30a6774bba38bb65f718e1", @@ -3489,21 +3489,21 @@ "typeString": "literal_string \"Account is not whitelisted\"" } ], - "id": 2627, + "id": 3963, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "1622:7:21", + "referencedDeclaration": 4040, + "src": "1622:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2632, + "id": 3968, "isConstant": false, "isLValue": false, "isPure": false, @@ -3511,20 +3511,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1622:61:21", + "src": "1622:61:23", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2633, + "id": 3969, "nodeType": "ExpressionStatement", - "src": "1622:61:21" + "src": "1622:61:23" }, { "expression": { "argumentTypes": null, - "id": 2638, + "id": 3974, "isConstant": false, "isLValue": false, "isPure": false, @@ -3533,26 +3533,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2634, + "id": 3970, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2549, - "src": "1693:13:21", + "referencedDeclaration": 3885, + "src": "1693:13:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2636, + "id": 3972, "indexExpression": { "argumentTypes": null, - "id": 2635, + "id": 3971, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2622, - "src": "1707:7:21", + "referencedDeclaration": 3958, + "src": "1707:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3563,7 +3563,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1693:22:21", + "src": "1693:22:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3574,14 +3574,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2637, + "id": 3973, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1718:5:21", + "src": "1718:5:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3589,57 +3589,57 @@ }, "value": "false" }, - "src": "1693:30:21", + "src": "1693:30:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2639, + "id": 3975, "nodeType": "ExpressionStatement", - "src": "1693:30:21" + "src": "1693:30:23" } ] }, "documentation": "@dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2641, + "id": 3977, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2625, + "id": 3961, "modifierName": { "argumentTypes": null, - "id": 2624, + "id": 3960, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "1597:10:21", + "referencedDeclaration": 1840, + "src": "1597:10:23", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1597:10:21" + "src": "1597:10:23" } ], "name": "removeFromWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2623, + "id": 3959, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2622, + "id": 3958, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2641, - "src": "1557:15:21", + "scope": 3977, + "src": "1557:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3647,10 +3647,10 @@ "typeString": "address" }, "typeName": { - "id": 2621, + "id": 3957, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1557:7:21", + "src": "1557:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3660,26 +3660,26 @@ "visibility": "internal" } ], - "src": "1556:17:21" + "src": "1556:17:23" }, "payable": false, "returnParameters": { - "id": 2626, + "id": 3962, "nodeType": "ParameterList", "parameters": [], - "src": "1612:0:21" + "src": "1612:0:23" }, - "scope": 2685, - "src": "1528:202:21", + "scope": 4021, + "src": "1528:202:23", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2683, + "id": 4019, "nodeType": "Block", - "src": "2093:393:21", + "src": "2093:393:23", "statements": [ { "expression": { @@ -3692,18 +3692,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2657, + "id": 3993, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2700, - "src": "2230:3:21", + "referencedDeclaration": 4036, + "src": "2230:3:23", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2658, + "id": 3994, "isConstant": false, "isLValue": false, "isPure": false, @@ -3711,7 +3711,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2230:10:21", + "src": "2230:10:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3730,14 +3730,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2654, + "id": 3990, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 697, - "src": "2213:7:21", + "referencedDeclaration": 1826, + "src": "2213:7:23", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } } @@ -3745,22 +3745,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } ], - "id": 2653, + "id": 3989, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1513, - "src": "2200:12:21", + "referencedDeclaration": 2888, + "src": "2200:12:23", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1513_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$2888_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2655, + "id": 3991, "isConstant": false, "isLValue": false, "isPure": false, @@ -3768,27 +3768,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2200:21:21", + "src": "2200:21:23", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1513", + "typeIdentifier": "t_contract$_OwnerManager_$2888", "typeString": "contract OwnerManager" } }, - "id": 2656, + "id": 3992, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1463, - "src": "2200:29:21", + "referencedDeclaration": 2838, + "src": "2200:29:23", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2659, + "id": 3995, "isConstant": false, "isLValue": false, "isPure": false, @@ -3796,7 +3796,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2200:41:21", + "src": "2200:41:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3805,14 +3805,14 @@ { "argumentTypes": null, "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e206f776e6572", - "id": 2660, + "id": 3996, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2243:39:21", + "src": "2243:39:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", @@ -3832,21 +3832,21 @@ "typeString": "literal_string \"Method can only be called by an owner\"" } ], - "id": 2652, + "id": 3988, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2192:7:21", + "referencedDeclaration": 4040, + "src": "2192:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2661, + "id": 3997, "isConstant": false, "isLValue": false, "isPure": false, @@ -3854,15 +3854,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2192:91:21", + "src": "2192:91:23", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2662, + "id": 3998, "nodeType": "ExpressionStatement", - "src": "2192:91:21" + "src": "2192:91:23" }, { "expression": { @@ -3872,26 +3872,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2664, + "id": 4000, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2549, - "src": "2301:13:21", + "referencedDeclaration": 3885, + "src": "2301:13:23", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2666, + "id": 4002, "indexExpression": { "argumentTypes": null, - "id": 2665, + "id": 4001, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2643, - "src": "2315:2:21", + "referencedDeclaration": 3979, + "src": "2315:2:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3902,7 +3902,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2301:17:21", + "src": "2301:17:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3911,14 +3911,14 @@ { "argumentTypes": null, "hexValue": "546172676574206163636f756e74206973206e6f742077686974656c6973746564", - "id": 2667, + "id": 4003, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2320:35:21", + "src": "2320:35:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9a154d7dadc01125e34b410c8bdd8fd2546fbbac90b22b0d92787a072cf6fc42", @@ -3938,21 +3938,21 @@ "typeString": "literal_string \"Target account is not whitelisted\"" } ], - "id": 2663, + "id": 3999, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2293:7:21", + "referencedDeclaration": 4040, + "src": "2293:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2668, + "id": 4004, "isConstant": false, "isLValue": false, "isPure": false, @@ -3960,15 +3960,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2293:63:21", + "src": "2293:63:23", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2669, + "id": 4005, "nodeType": "ExpressionStatement", - "src": "2293:63:21" + "src": "2293:63:23" }, { "expression": { @@ -3979,12 +3979,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2673, + "id": 4009, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2643, - "src": "2408:2:21", + "referencedDeclaration": 3979, + "src": "2408:2:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3992,12 +3992,12 @@ }, { "argumentTypes": null, - "id": 2674, + "id": 4010, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2645, - "src": "2412:5:21", + "referencedDeclaration": 3981, + "src": "2412:5:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4005,12 +4005,12 @@ }, { "argumentTypes": null, - "id": 2675, + "id": 4011, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2647, - "src": "2419:4:21", + "referencedDeclaration": 3983, + "src": "2419:4:23", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4022,18 +4022,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2676, + "id": 4012, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2425:4:21", + "src": "2425:4:23", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 2677, + "id": 4013, "isConstant": false, "isLValue": false, "isPure": false, @@ -4041,13 +4041,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2425:14:21", + "src": "2425:14:23", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 2678, + "id": 4014, "isConstant": false, "isLValue": false, "isPure": true, @@ -4055,7 +4055,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2425:19:21", + "src": "2425:19:23", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -4083,32 +4083,32 @@ ], "expression": { "argumentTypes": null, - "id": 2671, + "id": 4007, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 697, - "src": "2374:7:21", + "referencedDeclaration": 1826, + "src": "2374:7:23", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1103", + "typeIdentifier": "t_contract$_ModuleManager_$2232", "typeString": "contract ModuleManager" } }, - "id": 2672, + "id": 4008, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 930, - "src": "2374:33:21", + "referencedDeclaration": 2059, + "src": "2374:33:23", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2679, + "id": 4015, "isConstant": false, "isLValue": false, "isPure": false, @@ -4116,7 +4116,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2374:71:21", + "src": "2374:71:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4125,14 +4125,14 @@ { "argumentTypes": null, "hexValue": "436f756c64206e6f742065786563757465207472616e73616374696f6e", - "id": 2680, + "id": 4016, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2447:31:21", + "src": "2447:31:23", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", @@ -4152,21 +4152,21 @@ "typeString": "literal_string \"Could not execute transaction\"" } ], - "id": 2670, + "id": 4006, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2703, - 2704 + 4039, + 4040 ], - "referencedDeclaration": 2704, - "src": "2366:7:21", + "referencedDeclaration": 4040, + "src": "2366:7:23", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2681, + "id": 4017, "isConstant": false, "isLValue": false, "isPure": false, @@ -4174,20 +4174,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2366:113:21", + "src": "2366:113:23", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2682, + "id": 4018, "nodeType": "ExpressionStatement", - "src": "2366:113:21" + "src": "2366:113:23" } ] }, "documentation": "@dev Returns if Safe transaction is to a whitelisted destination.\n @param to Whitelisted destination address.\n @param value Not checked.\n @param data Not checked.\n @return Returns if transaction can be executed.", - "id": 2684, + "id": 4020, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -4195,16 +4195,16 @@ "name": "executeWhitelisted", "nodeType": "FunctionDefinition", "parameters": { - "id": 2648, + "id": 3984, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2643, + "id": 3979, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2684, - "src": "2012:10:21", + "scope": 4020, + "src": "2012:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4212,10 +4212,10 @@ "typeString": "address" }, "typeName": { - "id": 2642, + "id": 3978, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2012:7:21", + "src": "2012:7:23", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4226,11 +4226,11 @@ }, { "constant": false, - "id": 2645, + "id": 3981, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2684, - "src": "2024:13:21", + "scope": 4020, + "src": "2024:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4238,10 +4238,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2644, + "id": 3980, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2024:7:21", + "src": "2024:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4252,11 +4252,11 @@ }, { "constant": false, - "id": 2647, + "id": 3983, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2684, - "src": "2039:10:21", + "scope": 4020, + "src": "2039:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4264,10 +4264,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2646, + "id": 3982, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2039:5:21", + "src": "2039:5:23", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4277,20 +4277,20 @@ "visibility": "internal" } ], - "src": "2011:39:21" + "src": "2011:39:23" }, "payable": false, "returnParameters": { - "id": 2651, + "id": 3987, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2650, + "id": 3986, "name": "", "nodeType": "VariableDeclaration", - "scope": 2684, - "src": "2083:4:21", + "scope": 4020, + "src": "2083:4:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4298,10 +4298,10 @@ "typeString": "bool" }, "typeName": { - "id": 2649, + "id": 3985, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2083:4:21", + "src": "2083:4:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4311,20 +4311,20 @@ "visibility": "internal" } ], - "src": "2082:6:21" + "src": "2082:6:23" }, - "scope": 2685, - "src": "1984:502:21", + "scope": 4021, + "src": "1984:502:23", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 2686, - "src": "289:2199:21" + "scope": 4022, + "src": "289:2199:23" } ], - "src": "0:2489:21" + "src": "0:2489:23" }, "compiler": { "name": "solc", @@ -4334,28 +4334,28 @@ "4": { "events": {}, "links": {}, - "address": "0xbaa61d045b5fed7a21dd37ccd3beef2dbf6f5a8a", - "transactionHash": "0x40568a410a329444f7f469f0d2861308dda4c1c0d2bb520eb9b40317b2a646db" + "address": "0xe06a4d7f8c51eae35f133d1c8fce030981b52e5e", + "transactionHash": "0x00f35b8c5fcc57cbd4d3f336baec1552a39d9e9d62ea7f3a3edb66dd1bba5885" }, - "1529327661534": { + "1530013596495": { "events": {}, "links": {}, - "address": "0x012bfd13175d46df700e32bcf7f212c93d858210", - "transactionHash": "0x1626d24aa1a64aacd449ea6acba369532bbb860b2db5fcfd6d1aba65f03d47fb" + "address": "0x8beffca836f10cb108d1fc63e83442ac5d46a472", + "transactionHash": "0xfd3859c43474b7844f357aa8167fe79a98fa5e75d0a1025e886b4d205acaae0d" }, - "1529333415702": { + "1530525742205": { "events": {}, "links": {}, - "address": "0x6fafade61582e994730a7cd15480155d8017e888", - "transactionHash": "0x7850b601cdea18ba050f455b4fad47c152c51ed5d2c56e88a54a336780ddcbd2" + "address": "0xc93933b413135c5dc2d364b8965100f754fb4470", + "transactionHash": "0xb1d7d3bad55ee9757ad5dd8873d33e40bb8d2eea0f9ff1e62ab2a151471a7339" }, - "1529652204341": { + "1530611935189": { "events": {}, "links": {}, - "address": "0x88ed584819ee8dda7263b501af76ca07befa9ac7", - "transactionHash": "0x07909d849b2c29127266874541e7145062da0e1af6ab5d204cd91ca8d08d48d0" + "address": "0xf569908595dfa734a53deca31bea509ae51c24d2", + "transactionHash": "0xb1d7d3bad55ee9757ad5dd8873d33e40bb8d2eea0f9ff1e62ab2a151471a7339" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-06-22T07:24:16.263Z" + "updatedAt": "2018-07-03T09:59:18.524Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/test/EmptyToken.json b/safe-contracts/build/contracts/test/EmptyToken.json new file mode 100644 index 0000000000..7c27f43510 --- /dev/null +++ b/safe-contracts/build/contracts/test/EmptyToken.json @@ -0,0 +1,14205 @@ +{ + "contractName": "EmptyToken", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "acceptOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "newOwner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "name": "_to", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "tokens", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "tokenOwner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "tokens", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenOwner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "tokens", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "tokens", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokens", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenOwner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "remaining", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "tokens", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "approveAndCall", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "tokenAddress", + "type": "address" + }, + { + "name": "tokens", + "type": "uint256" + } + ], + "name": "transferAnyERC20Token", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600160146101000a81548160ff021916908360ff160217905550600160149054906101000a900460ff1660ff16600a0a620f424002600281905550600254600360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6002546040518082815260200191505060405180910390a36112718061018d6000396000f3006080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b3146100ca57806318160ddd1461012f57806323b872dd1461015a578063313ce567146101df57806370a082311461021057806379ba5097146102675780638da5cb5b1461027e578063a9059cbb146102d5578063cae9ca511461033a578063d4ee1d90146103e5578063dc39d06d1461043c578063dd62ed3e146104a1578063f2fde38b14610518575b600080fd5b3480156100d657600080fd5b50610115600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061055b565b604051808215151515815260200191505060405180910390f35b34801561013b57600080fd5b5061014461064d565b6040518082815260200191505060405180910390f35b34801561016657600080fd5b506101c5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106a8565b604051808215151515815260200191505060405180910390f35b3480156101eb57600080fd5b506101f4610953565b604051808260ff1660ff16815260200191505060405180910390f35b34801561021c57600080fd5b50610251600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610966565b6040518082815260200191505060405180910390f35b34801561027357600080fd5b5061027c6109af565b005b34801561028a57600080fd5b50610293610b4e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e157600080fd5b50610320600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b73565b604051808215151515815260200191505060405180910390f35b34801561034657600080fd5b506103cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610d0e565b604051808215151515815260200191505060405180910390f35b3480156103f157600080fd5b506103fa610f5d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561044857600080fd5b50610487600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f83565b604051808215151515815260200191505060405180910390f35b3480156104ad57600080fd5b50610502600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110e7565b6040518082815260200191505060405180910390f35b34801561052457600080fd5b50610559600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061116e565b005b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60006106a3600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460025461120d90919063ffffffff16565b905090565b60006106fc82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120d90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506107ce82600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120d90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506108a082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461122990919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600160149054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a0b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bc782600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120d90919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c5c82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461122990919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600082600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610eeb578082015181840152602081019050610ed0565b50505050905090810190601f168015610f185780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610f3a57600080fd5b505af1158015610f4e573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fe057600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156110a457600080fd5b505af11580156110b8573d6000803e3d6000fd5b505050506040513d60208110156110ce57600080fd5b8101908080519060200190929190505050905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111c957600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600082821115151561121e57600080fd5b818303905092915050565b6000818301905082811015151561123f57600080fd5b929150505600a165627a7a7230582086ec8e422bd8c5ddad32eb09a806eeb6d1ed5c20827c3010d77b0278f363ecbe0029", + "deployedBytecode": "0x6080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b3146100ca57806318160ddd1461012f57806323b872dd1461015a578063313ce567146101df57806370a082311461021057806379ba5097146102675780638da5cb5b1461027e578063a9059cbb146102d5578063cae9ca511461033a578063d4ee1d90146103e5578063dc39d06d1461043c578063dd62ed3e146104a1578063f2fde38b14610518575b600080fd5b3480156100d657600080fd5b50610115600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061055b565b604051808215151515815260200191505060405180910390f35b34801561013b57600080fd5b5061014461064d565b6040518082815260200191505060405180910390f35b34801561016657600080fd5b506101c5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106a8565b604051808215151515815260200191505060405180910390f35b3480156101eb57600080fd5b506101f4610953565b604051808260ff1660ff16815260200191505060405180910390f35b34801561021c57600080fd5b50610251600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610966565b6040518082815260200191505060405180910390f35b34801561027357600080fd5b5061027c6109af565b005b34801561028a57600080fd5b50610293610b4e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e157600080fd5b50610320600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b73565b604051808215151515815260200191505060405180910390f35b34801561034657600080fd5b506103cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610d0e565b604051808215151515815260200191505060405180910390f35b3480156103f157600080fd5b506103fa610f5d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561044857600080fd5b50610487600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f83565b604051808215151515815260200191505060405180910390f35b3480156104ad57600080fd5b50610502600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110e7565b6040518082815260200191505060405180910390f35b34801561052457600080fd5b50610559600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061116e565b005b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60006106a3600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460025461120d90919063ffffffff16565b905090565b60006106fc82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120d90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506107ce82600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120d90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506108a082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461122990919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600160149054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a0b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bc782600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120d90919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c5c82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461122990919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600082600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610eeb578082015181840152602081019050610ed0565b50505050905090810190601f168015610f185780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610f3a57600080fd5b505af1158015610f4e573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fe057600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156110a457600080fd5b505af11580156110b8573d6000803e3d6000fd5b505050506040513d60208110156110ce57600080fd5b8101908080519060200190929190505050905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111c957600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600082821115151561121e57600080fd5b818303905092915050565b6000818301905082811015151561123f57600080fd5b929150505600a165627a7a7230582086ec8e422bd8c5ddad32eb09a806eeb6d1ed5c20827c3010d77b0278f363ecbe0029", + "sourceMap": "3506:5189:0:-;;;3916:200;8:9:-1;5:2;;;30:1;27;20:12;5:2;3916:200:0;2856:10;2848:5;;:18;;;;;;;;;;;;;;;;;;3958:2;3947:8;;:13;;;;;;;;;;;;;;;;;;4004:8;;;;;;;;;;;3999:14;;3995:2;:18;3985:7;:28;3970:12;:43;;;;4041:12;;4023:8;:15;4032:5;;;;;;;;;;;4023:15;;;;;;;;;;;;;;;:30;;;;4089:5;;;;;;;;;;;4068:41;;4085:1;4068:41;;;4096:12;;4068:41;;;;;;;;;;;;;;;;;;3506:5189;;;;;;", + "deployedSourceMap": "3506:5189:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8264:8;;;5865:204;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5865:204:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4303:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4303:112:0;;;;;;;;;;;;;;;;;;;;;;;6601:337;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6601:337:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3587:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3587:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;4636:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4636:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3065:191;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3065:191:0;;;;;;2684:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2684:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5097:262;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5097:262:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7724:312;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7724:312:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2710:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2710:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8511:182;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8511:182:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7219:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7219:145:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2960:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2960:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5865:204;5928:12;5983:6;5952:7;:19;5960:10;5952:19;;;;;;;;;;;;;;;:28;5972:7;5952:28;;;;;;;;;;;;;;;:37;;;;6025:7;6004:37;;6013:10;6004:37;;;6034:6;6004:37;;;;;;;;;;;;;;;;;;6058:4;6051:11;;5865:204;;;;:::o;4303:112::-;4347:4;4370:38;4387:8;:20;4404:1;4387:20;;;;;;;;;;;;;;;;4370:12;;:16;;:38;;;;:::i;:::-;4363:45;;4303:112;:::o;6601:337::-;6678:12;6719:26;6738:6;6719:8;:14;6728:4;6719:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;6702:8;:14;6711:4;6702:14;;;;;;;;;;;;;;;:43;;;;6783:37;6813:6;6783:7;:13;6791:4;6783:13;;;;;;;;;;;;;;;:25;6797:10;6783:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;6755:7;:13;6763:4;6755:13;;;;;;;;;;;;;;;:25;6769:10;6755:25;;;;;;;;;;;;;;;:65;;;;6845:24;6862:6;6845:8;:12;6854:2;6845:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;6830:8;:12;6839:2;6830:12;;;;;;;;;;;;;;;:39;;;;6899:2;6884:26;;6893:4;6884:26;;;6903:6;6884:26;;;;;;;;;;;;;;;;;;6927:4;6920:11;;6601:337;;;;;:::o;3587:21::-;;;;;;;;;;;;;:::o;4636:118::-;4696:12;4727:8;:20;4736:10;4727:20;;;;;;;;;;;;;;;;4720:27;;4636:118;;;:::o;3065:191::-;3131:8;;;;;;;;;;;3117:22;;:10;:22;;;3109:31;;;;;;;;3183:8;;;;;;;;;;;3155:37;;3176:5;;;;;;;;;;;3155:37;;;;;;;;;;;;3210:8;;;;;;;;;;;3202:5;;:16;;;;;;;;;;;;;;;;;;3247:1;3228:8;;:21;;;;;;;;;;;;;;;;;;3065:191::o;2684:20::-;;;;;;;;;;;;;:::o;5097:262::-;5156:12;5203:32;5228:6;5203:8;:20;5212:10;5203:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5180:8;:20;5189:10;5180:20;;;;;;;;;;;;;;;:55;;;;5260:24;5277:6;5260:8;:12;5269:2;5260:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;5245:8;:12;5254:2;5245:12;;;;;;;;;;;;;;;:39;;;;5320:2;5299:32;;5308:10;5299:32;;;5324:6;5299:32;;;;;;;;;;;;;;;;;;5348:4;5341:11;;5097:262;;;;:::o;7724:312::-;7806:12;7861:6;7830:7;:19;7838:10;7830:19;;;;;;;;;;;;;;;:28;7850:7;7830:28;;;;;;;;;;;;;;;:37;;;;7903:7;7882:37;;7891:10;7882:37;;;7912:6;7882:37;;;;;;;;;;;;;;;;;;7952:7;7929:47;;;7977:10;7989:6;7997:4;8003;7929:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7929:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7929:79:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7929:79:0;;;;8025:4;8018:11;;7724:312;;;;;:::o;2710:23::-;;;;;;;;;;;;;:::o;8511:182::-;8603:12;2930:5;;;;;;;;;;;2916:19;;:10;:19;;;2908:28;;;;;;;;8649:12;8634:37;;;8672:5;;;;;;;;;;;8679:6;8634:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8634:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8634:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8634:52:0;;;;;;;;;;;;;;;;8627:59;;8511:182;;;;:::o;7219:145::-;7296:14;7329:7;:19;7337:10;7329:19;;;;;;;;;;;;;;;:28;7349:7;7329:28;;;;;;;;;;;;;;;;7322:35;;7219:145;;;;:::o;2960:100::-;2930:5;;;;;;;;;;;2916:19;;:10;:19;;;2908:28;;;;;;;;3044:9;3033:8;;:20;;;;;;;;;;;;;;;;;;2960:100;:::o;775:111::-;827:6;858:1;853;:6;;845:15;;;;;;;;878:1;874;:5;870:9;;775:111;;;;:::o;659:::-;711:6;737:1;733;:5;729:9;;761:1;756;:6;;748:15;;;;;;;;659:111;;;;:::o", + "source": "pragma solidity ^0.4.24;\n\n// ----------------------------------------------------------------------------\n// 'FIXED' 'Example Fixed Supply Token' token contract\n//\n// Symbol : FIXED\n// Name : Example Fixed Supply Token\n// Total supply: 1,000,000.000000000000000000\n// Decimals : 18\n//\n// Enjoy.\n//\n// (c) BokkyPooBah / Bok Consulting Pty Ltd 2018. The MIT Licence.\n// ----------------------------------------------------------------------------\n\n\n// ----------------------------------------------------------------------------\n// Safe maths\n// ----------------------------------------------------------------------------\nlibrary SafeMath {\n function add(uint a, uint b) internal pure returns (uint c) {\n c = a + b;\n require(c >= a);\n }\n function sub(uint a, uint b) internal pure returns (uint c) {\n require(b <= a);\n c = a - b;\n }\n function mul(uint a, uint b) internal pure returns (uint c) {\n c = a * b;\n require(a == 0 || c / a == b);\n }\n function div(uint a, uint b) internal pure returns (uint c) {\n require(b > 0);\n c = a / b;\n }\n}\n\n\n// ----------------------------------------------------------------------------\n// ERC Token Standard #20 Interface\n// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md\n// ----------------------------------------------------------------------------\ncontract ERC20Interface {\n function totalSupply() public constant returns (uint);\n function balanceOf(address tokenOwner) public constant returns (uint balance);\n function allowance(address tokenOwner, address spender) public constant returns (uint remaining);\n function transfer(address to, uint tokens) public returns (bool success);\n function approve(address spender, uint tokens) public returns (bool success);\n function transferFrom(address from, address to, uint tokens) public returns (bool success);\n\n event Transfer(address indexed from, address indexed to, uint tokens);\n event Approval(address indexed tokenOwner, address indexed spender, uint tokens);\n}\n\n\n// ----------------------------------------------------------------------------\n// Contract function to receive approval and execute function in one call\n//\n// Borrowed from MiniMeToken\n// ----------------------------------------------------------------------------\ncontract ApproveAndCallFallBack {\n function receiveApproval(address from, uint256 tokens, address token, bytes data) public;\n}\n\n\n// ----------------------------------------------------------------------------\n// Owned contract\n// ----------------------------------------------------------------------------\ncontract Owned {\n address public owner;\n address public newOwner;\n\n event OwnershipTransferred(address indexed _from, address indexed _to);\n\n constructor() public {\n owner = msg.sender;\n }\n\n modifier onlyOwner {\n require(msg.sender == owner);\n _;\n }\n\n function transferOwnership(address _newOwner) public onlyOwner {\n newOwner = _newOwner;\n }\n function acceptOwnership() public {\n require(msg.sender == newOwner);\n emit OwnershipTransferred(owner, newOwner);\n owner = newOwner;\n newOwner = address(0);\n }\n}\n\n\n// ----------------------------------------------------------------------------\n// ERC20 Token, with the addition of symbol, name and decimals and a\n// fixed supply\n// ----------------------------------------------------------------------------\ncontract EmptyToken is ERC20Interface, Owned {\n using SafeMath for uint;\n\n uint8 public decimals;\n uint _totalSupply;\n\n mapping(address => uint) balances;\n mapping(address => mapping(address => uint)) allowed;\n\n\n // ------------------------------------------------------------------------\n // Constructor\n // ------------------------------------------------------------------------\n constructor() public {\n decimals = 18;\n _totalSupply = 1000000 * 10**uint(decimals);\n balances[owner] = _totalSupply;\n emit Transfer(address(0), owner, _totalSupply);\n }\n\n\n // ------------------------------------------------------------------------\n // Total supply\n // ------------------------------------------------------------------------\n function totalSupply() public view returns (uint) {\n return _totalSupply.sub(balances[address(0)]);\n }\n\n\n // ------------------------------------------------------------------------\n // Get the token balance for account `tokenOwner`\n // ------------------------------------------------------------------------\n function balanceOf(address tokenOwner) public view returns (uint balance) {\n return balances[tokenOwner];\n }\n\n\n // ------------------------------------------------------------------------\n // Transfer the balance from token owner's account to `to` account\n // - Owner's account must have sufficient balance to transfer\n // - 0 value transfers are allowed\n // ------------------------------------------------------------------------\n function transfer(address to, uint tokens) public returns (bool success) {\n balances[msg.sender] = balances[msg.sender].sub(tokens);\n balances[to] = balances[to].add(tokens);\n emit Transfer(msg.sender, to, tokens);\n return true;\n }\n\n\n // ------------------------------------------------------------------------\n // Token owner can approve for `spender` to transferFrom(...) `tokens`\n // from the token owner's account\n //\n // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md\n // recommends that there are no checks for the approval double-spend attack\n // as this should be implemented in user interfaces \n // ------------------------------------------------------------------------\n function approve(address spender, uint tokens) public returns (bool success) {\n allowed[msg.sender][spender] = tokens;\n emit Approval(msg.sender, spender, tokens);\n return true;\n }\n\n\n // ------------------------------------------------------------------------\n // Transfer `tokens` from the `from` account to the `to` account\n // \n // The calling account must already have sufficient tokens approve(...)-d\n // for spending from the `from` account and\n // - From account must have sufficient balance to transfer\n // - Spender must have sufficient allowance to transfer\n // - 0 value transfers are allowed\n // ------------------------------------------------------------------------\n function transferFrom(address from, address to, uint tokens) public returns (bool success) {\n balances[from] = balances[from].sub(tokens);\n allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens);\n balances[to] = balances[to].add(tokens);\n emit Transfer(from, to, tokens);\n return true;\n }\n\n\n // ------------------------------------------------------------------------\n // Returns the amount of tokens approved by the owner that can be\n // transferred to the spender's account\n // ------------------------------------------------------------------------\n function allowance(address tokenOwner, address spender) public view returns (uint remaining) {\n return allowed[tokenOwner][spender];\n }\n\n\n // ------------------------------------------------------------------------\n // Token owner can approve for `spender` to transferFrom(...) `tokens`\n // from the token owner's account. The `spender` contract function\n // `receiveApproval(...)` is then executed\n // ------------------------------------------------------------------------\n function approveAndCall(address spender, uint tokens, bytes data) public returns (bool success) {\n allowed[msg.sender][spender] = tokens;\n emit Approval(msg.sender, spender, tokens);\n ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, this, data);\n return true;\n }\n\n\n // ------------------------------------------------------------------------\n // Don't accept ETH\n // ------------------------------------------------------------------------\n function () public payable {\n revert();\n }\n\n\n // ------------------------------------------------------------------------\n // Owner can transfer out any accidentally sent ERC20 tokens\n // ------------------------------------------------------------------------\n function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) {\n return ERC20Interface(tokenAddress).transfer(owner, tokens);\n }\n}", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/test/EmptyToken.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/test/EmptyToken.sol", + "exportedSymbols": { + "ApproveAndCallFallBack": [ + 175 + ], + "ERC20Interface": [ + 163 + ], + "EmptyToken": [ + 539 + ], + "Owned": [ + 244 + ], + "SafeMath": [ + 96 + ] + }, + "id": 540, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:0" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": null, + "fullyImplemented": true, + "id": 96, + "linearizedBaseContracts": [ + 96 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 22, + "nodeType": "Block", + "src": "719:51:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 14, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 10, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "729:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "733:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 12, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "737:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "733:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "729:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 15, + "nodeType": "ExpressionStatement", + "src": "729:9:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 19, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 17, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "756:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 18, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "761:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "756:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 16, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "748:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 20, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "748:15:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 21, + "nodeType": "ExpressionStatement", + "src": "748:15:0" + } + ] + }, + "documentation": null, + "id": 23, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 23, + "src": "672:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "672:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 23, + "src": "680:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "680:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "671:16:0" + }, + "payable": false, + "returnParameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 23, + "src": "711:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "711:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "710:8:0" + }, + "scope": 96, + "src": "659:111:0", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 44, + "nodeType": "Block", + "src": "835:51:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 35, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 33, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "853:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 34, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "858:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "853:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 32, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "845:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 36, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "845:15:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37, + "nodeType": "ExpressionStatement", + "src": "845:15:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 42, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 38, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "870:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 41, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 39, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "874:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 40, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "878:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "874:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "870:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43, + "nodeType": "ExpressionStatement", + "src": "870:9:0" + } + ] + }, + "documentation": null, + "id": 45, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 28, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 25, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 45, + "src": "788:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 24, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "788:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 27, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 45, + "src": "796:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 26, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "796:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "787:16:0" + }, + "payable": false, + "returnParameters": { + "id": 31, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 30, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 45, + "src": "827:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 29, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "827:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "826:8:0" + }, + "scope": 96, + "src": "775:111:0", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 72, + "nodeType": "Block", + "src": "951:65:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 58, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 54, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "961:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 55, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "965:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 56, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "969:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "965:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "961:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 59, + "nodeType": "ExpressionStatement", + "src": "961:9:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 69, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 63, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 61, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "988:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 62, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "993:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "988:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 68, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 64, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "998:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 65, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "1002:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "998:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 67, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "1007:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "998:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "988:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 60, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "980:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 70, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "980:29:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 71, + "nodeType": "ExpressionStatement", + "src": "980:29:0" + } + ] + }, + "documentation": null, + "id": 73, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 50, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 47, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 73, + "src": "904:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 46, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "904:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 49, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 73, + "src": "912:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 48, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "912:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "903:16:0" + }, + "payable": false, + "returnParameters": { + "id": 53, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 52, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 73, + "src": "943:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 51, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "943:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "942:8:0" + }, + "scope": 96, + "src": "891:125:0", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 94, + "nodeType": "Block", + "src": "1081:50:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 83, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "1099:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 84, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1103:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1099:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 82, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "1091:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 86, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1091:14:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 87, + "nodeType": "ExpressionStatement", + "src": "1091:14:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 92, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 88, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 80, + "src": "1115:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 91, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 89, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "1119:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 90, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "1123:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1119:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1115:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 93, + "nodeType": "ExpressionStatement", + "src": "1115:9:0" + } + ] + }, + "documentation": null, + "id": 95, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 78, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 75, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 95, + "src": "1034:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 74, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1034:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 77, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 95, + "src": "1042:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 76, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1042:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1033:16:0" + }, + "payable": false, + "returnParameters": { + "id": 81, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 80, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 95, + "src": "1073:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 79, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1073:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1072:8:0" + }, + "scope": 96, + "src": "1021:110:0", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 540, + "src": "636:497:0" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 163, + "linearizedBaseContracts": [ + 163 + ], + "name": "ERC20Interface", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 101, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 97, + "nodeType": "ParameterList", + "parameters": [], + "src": "1445:2:0" + }, + "payable": false, + "returnParameters": { + "id": 100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 99, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 101, + "src": "1473:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 98, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1473:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1472:6:0" + }, + "scope": 163, + "src": "1425:54:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 108, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 104, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 103, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 108, + "src": "1503:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 102, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1503:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1502:20:0" + }, + "payable": false, + "returnParameters": { + "id": 107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 106, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 108, + "src": "1548:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 105, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1548:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1547:14:0" + }, + "scope": 163, + "src": "1484:78:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 117, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 113, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 110, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 117, + "src": "1586:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 109, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1586:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 112, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 117, + "src": "1606:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 111, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1606:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1585:37:0" + }, + "payable": false, + "returnParameters": { + "id": 116, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 115, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 117, + "src": "1648:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 114, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1648:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1647:16:0" + }, + "scope": 163, + "src": "1567:97:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 126, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 122, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 119, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1687:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 118, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1687:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 121, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1699:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 120, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1699:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1686:25:0" + }, + "payable": false, + "returnParameters": { + "id": 125, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 124, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1728:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 123, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1728:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1727:14:0" + }, + "scope": 163, + "src": "1669:73:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 135, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 131, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 128, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 135, + "src": "1764:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 127, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1764:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 130, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 135, + "src": "1781:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 129, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1781:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1763:30:0" + }, + "payable": false, + "returnParameters": { + "id": 134, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 133, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 135, + "src": "1810:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 132, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1810:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1809:14:0" + }, + "scope": 163, + "src": "1747:77:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 146, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 142, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 137, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "1851:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 136, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1851:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 139, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "1865:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 138, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1865:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 141, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "1877:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 140, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1877:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1850:39:0" + }, + "payable": false, + "returnParameters": { + "id": 145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 144, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "1906:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 143, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1906:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1905:14:0" + }, + "scope": 163, + "src": "1829:91:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 154, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 153, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 148, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 154, + "src": "1941:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 147, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1941:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 150, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 154, + "src": "1963:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 149, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1963:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 152, + "indexed": false, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 154, + "src": "1983:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 151, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1983:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1940:55:0" + }, + "src": "1926:70:0" + }, + { + "anonymous": false, + "documentation": null, + "id": 162, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 161, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 156, + "indexed": true, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 162, + "src": "2016:26:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 155, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2016:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 158, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 162, + "src": "2044:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 157, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2044:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 160, + "indexed": false, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 162, + "src": "2069:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 159, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2069:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2015:66:0" + }, + "src": "2001:81:0" + } + ], + "scope": 540, + "src": "1395:689:0" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 175, + "linearizedBaseContracts": [ + 175 + ], + "name": "ApproveAndCallFallBack", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 174, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "receiveApproval", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 172, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 165, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 174, + "src": "2416:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 164, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2416:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 167, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 174, + "src": "2430:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 166, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2430:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 169, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 174, + "src": "2446:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 168, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2446:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 171, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 174, + "src": "2461:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 170, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2461:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2415:57:0" + }, + "payable": false, + "returnParameters": { + "id": 173, + "nodeType": "ParameterList", + "parameters": [], + "src": "2479:0:0" + }, + "scope": 175, + "src": "2391:89:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 540, + "src": "2353:129:0" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 244, + "linearizedBaseContracts": [ + 244 + ], + "name": "Owned", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 177, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 244, + "src": "2684:20:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 176, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2684:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 179, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 244, + "src": "2710:23:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 178, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2710:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 185, + "name": "OwnershipTransferred", + "nodeType": "EventDefinition", + "parameters": { + "id": 184, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 181, + "indexed": true, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 185, + "src": "2767:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 180, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2767:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 183, + "indexed": true, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 185, + "src": "2790:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 182, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2790:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2766:44:0" + }, + "src": "2740:71:0" + }, + { + "body": { + "id": 193, + "nodeType": "Block", + "src": "2838:35:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 188, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "2848:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 189, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "2856:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2856:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2848:18:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 192, + "nodeType": "ExpressionStatement", + "src": "2848:18:0" + } + ] + }, + "documentation": null, + "id": 194, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 186, + "nodeType": "ParameterList", + "parameters": [], + "src": "2828:2:0" + }, + "payable": false, + "returnParameters": { + "id": 187, + "nodeType": "ParameterList", + "parameters": [], + "src": "2838:0:0" + }, + "scope": 244, + "src": "2817:56:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 204, + "nodeType": "Block", + "src": "2898:56:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 197, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "2916:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2916:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 199, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "2930:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2916:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 196, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "2908:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2908:28:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 202, + "nodeType": "ExpressionStatement", + "src": "2908:28:0" + }, + { + "id": 203, + "nodeType": "PlaceholderStatement", + "src": "2946:1:0" + } + ] + }, + "documentation": null, + "id": 205, + "name": "onlyOwner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 195, + "nodeType": "ParameterList", + "parameters": [], + "src": "2898:0:0" + }, + "src": "2879:75:0", + "visibility": "internal" + }, + { + "body": { + "id": 216, + "nodeType": "Block", + "src": "3023:37:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 212, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "3033:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 213, + "name": "_newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 207, + "src": "3044:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3033:20:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 215, + "nodeType": "ExpressionStatement", + "src": "3033:20:0" + } + ] + }, + "documentation": null, + "id": 217, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 210, + "modifierName": { + "argumentTypes": null, + "id": 209, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 205, + "src": "3013:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3013:9:0" + } + ], + "name": "transferOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 208, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 207, + "name": "_newOwner", + "nodeType": "VariableDeclaration", + "scope": 217, + "src": "2987:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 206, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2987:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2986:19:0" + }, + "payable": false, + "returnParameters": { + "id": 211, + "nodeType": "ParameterList", + "parameters": [], + "src": "3023:0:0" + }, + "scope": 244, + "src": "2960:100:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 242, + "nodeType": "Block", + "src": "3099:157:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 221, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "3117:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3117:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 223, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "3131:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3117:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 220, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "3109:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3109:31:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 226, + "nodeType": "ExpressionStatement", + "src": "3109:31:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 228, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "3176:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 229, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "3183:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 227, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 185, + "src": "3155:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3155:37:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 231, + "nodeType": "EmitStatement", + "src": "3150:42:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 232, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "3202:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 233, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "3210:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3202:16:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 235, + "nodeType": "ExpressionStatement", + "src": "3202:16:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 236, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "3228:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3247:1:0", + "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": 237, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3239:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 239, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3239:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3228:21:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 241, + "nodeType": "ExpressionStatement", + "src": "3228:21:0" + } + ] + }, + "documentation": null, + "id": 243, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "acceptOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 218, + "nodeType": "ParameterList", + "parameters": [], + "src": "3089:2:0" + }, + "payable": false, + "returnParameters": { + "id": 219, + "nodeType": "ParameterList", + "parameters": [], + "src": "3099:0:0" + }, + "scope": 244, + "src": "3065:191:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 540, + "src": "2663:595:0" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 245, + "name": "ERC20Interface", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 163, + "src": "3529:14:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$163", + "typeString": "contract ERC20Interface" + } + }, + "id": 246, + "nodeType": "InheritanceSpecifier", + "src": "3529:14:0" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 247, + "name": "Owned", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 244, + "src": "3545:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Owned_$244", + "typeString": "contract Owned" + } + }, + "id": 248, + "nodeType": "InheritanceSpecifier", + "src": "3545:5:0" + } + ], + "contractDependencies": [ + 163, + 244 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 539, + "linearizedBaseContracts": [ + 539, + 244, + 163 + ], + "name": "EmptyToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 251, + "libraryName": { + "contractScope": null, + "id": 249, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 96, + "src": "3563:8:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$96", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "3557:24:0", + "typeName": { + "id": 250, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3576:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 253, + "name": "decimals", + "nodeType": "VariableDeclaration", + "scope": 539, + "src": "3587:21:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 252, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3587:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 255, + "name": "_totalSupply", + "nodeType": "VariableDeclaration", + "scope": 539, + "src": "3614:17:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 254, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3614:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 259, + "name": "balances", + "nodeType": "VariableDeclaration", + "scope": 539, + "src": "3638:33:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 258, + "keyType": { + "id": 256, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3646:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3638:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 257, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3657:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 265, + "name": "allowed", + "nodeType": "VariableDeclaration", + "scope": 539, + "src": "3677:52:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 264, + "keyType": { + "id": 260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3685:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3677:44:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 263, + "keyType": { + "id": 261, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3704:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3696:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 262, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3715:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 296, + "nodeType": "Block", + "src": "3937:179:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 268, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 253, + "src": "3947:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3138", + "id": 269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3958:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "src": "3947:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 271, + "nodeType": "ExpressionStatement", + "src": "3947:13:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 272, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "3970:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 273, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3985:7:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3995:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 276, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 253, + "src": "4004:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3999:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint" + }, + "id": 277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3999:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3995:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3985:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3970:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 281, + "nodeType": "ExpressionStatement", + "src": "3970:43:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 282, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4023:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 284, + "indexExpression": { + "argumentTypes": null, + "id": 283, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "4032:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4023:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 285, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "4041:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4023:30:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 287, + "nodeType": "ExpressionStatement", + "src": "4023:30:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4085:1:0", + "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": 289, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4077:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4077:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 292, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "4089:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 293, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "4096:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 288, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "4068:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4068:41:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 295, + "nodeType": "EmitStatement", + "src": "4063:46:0" + } + ] + }, + "documentation": null, + "id": 297, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 266, + "nodeType": "ParameterList", + "parameters": [], + "src": "3927:2:0" + }, + "payable": false, + "returnParameters": { + "id": 267, + "nodeType": "ParameterList", + "parameters": [], + "src": "3937:0:0" + }, + "scope": 539, + "src": "3916:200:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 311, + "nodeType": "Block", + "src": "4353:62:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 304, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4387:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 308, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 306, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4404:1:0", + "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": 305, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4396:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4396:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4387:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 302, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "4370:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 45, + "src": "4370:16:0", + "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": 309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4370:38:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 301, + "id": 310, + "nodeType": "Return", + "src": "4363:45:0" + } + ] + }, + "documentation": null, + "id": 312, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 298, + "nodeType": "ParameterList", + "parameters": [], + "src": "4323:2:0" + }, + "payable": false, + "returnParameters": { + "id": 301, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 300, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 312, + "src": "4347:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 299, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4347:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4346:6:0" + }, + "scope": 539, + "src": "4303:112:0", + "stateMutability": "view", + "superFunction": 101, + "visibility": "public" + }, + { + "body": { + "id": 323, + "nodeType": "Block", + "src": "4710:44:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 319, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4727:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 321, + "indexExpression": { + "argumentTypes": null, + "id": 320, + "name": "tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 314, + "src": "4736:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4727:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 318, + "id": 322, + "nodeType": "Return", + "src": "4720:27:0" + } + ] + }, + "documentation": null, + "id": 324, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 314, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 324, + "src": "4655:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 313, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4655:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4654:20:0" + }, + "payable": false, + "returnParameters": { + "id": 318, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 317, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 324, + "src": "4696:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 316, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4696:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4695:14:0" + }, + "scope": 539, + "src": "4636:118:0", + "stateMutability": "view", + "superFunction": 108, + "visibility": "public" + }, + { + "body": { + "id": 366, + "nodeType": "Block", + "src": "5170:189:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 333, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "5180:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 336, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 334, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "5189:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5189:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5180:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 342, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 328, + "src": "5228:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 337, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "5203:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 340, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 338, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "5212:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5212:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5203:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 45, + "src": "5203:24:0", + "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": 343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5203:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5180:55:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 345, + "nodeType": "ExpressionStatement", + "src": "5180:55:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 346, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "5245:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 348, + "indexExpression": { + "argumentTypes": null, + "id": 347, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "5254:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5245:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 353, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 328, + "src": "5277:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 349, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "5260:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 351, + "indexExpression": { + "argumentTypes": null, + "id": 350, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "5269:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5260:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 23, + "src": "5260:16:0", + "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": 354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5260:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5245:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 356, + "nodeType": "ExpressionStatement", + "src": "5245:39:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 358, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "5308:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5308:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 360, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "5320:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 361, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 328, + "src": "5324:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 357, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "5299:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5299:32:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 363, + "nodeType": "EmitStatement", + "src": "5294:37:0" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5348:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 332, + "id": 365, + "nodeType": "Return", + "src": "5341:11:0" + } + ] + }, + "documentation": null, + "id": 367, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 326, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 367, + "src": "5115:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 325, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5115:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 328, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 367, + "src": "5127:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 327, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5127:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5114:25:0" + }, + "payable": false, + "returnParameters": { + "id": 332, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 331, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 367, + "src": "5156:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 330, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5156:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5155:14:0" + }, + "scope": 539, + "src": "5097:262:0", + "stateMutability": "nonpayable", + "superFunction": 126, + "visibility": "public" + }, + { + "body": { + "id": 394, + "nodeType": "Block", + "src": "5942:127:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 376, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "5952:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 380, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 377, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "5960:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5960:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5952:19:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 381, + "indexExpression": { + "argumentTypes": null, + "id": 379, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "5972:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5952:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 382, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 371, + "src": "5983:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5952:37:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 384, + "nodeType": "ExpressionStatement", + "src": "5952:37:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 386, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "6013:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6013:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 388, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "6025:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 389, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 371, + "src": "6034:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 385, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 162, + "src": "6004:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6004:37:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 391, + "nodeType": "EmitStatement", + "src": "5999:42:0" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 392, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6058:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 375, + "id": 393, + "nodeType": "Return", + "src": "6051:11:0" + } + ] + }, + "documentation": null, + "id": 395, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 372, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 369, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 395, + "src": "5882:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 368, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5882:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 371, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 395, + "src": "5899:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 370, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5899:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5881:30:0" + }, + "payable": false, + "returnParameters": { + "id": 375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 374, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 395, + "src": "5928:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 373, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5928:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5927:14:0" + }, + "scope": 539, + "src": "5865:204:0", + "stateMutability": "nonpayable", + "superFunction": 135, + "visibility": "public" + }, + { + "body": { + "id": 453, + "nodeType": "Block", + "src": "6692:246:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 406, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "6702:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 408, + "indexExpression": { + "argumentTypes": null, + "id": 407, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 397, + "src": "6711:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6702:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 413, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "6738:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 409, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "6719:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 411, + "indexExpression": { + "argumentTypes": null, + "id": 410, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 397, + "src": "6728:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6719:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 45, + "src": "6719:18:0", + "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": 414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6719:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6702:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 416, + "nodeType": "ExpressionStatement", + "src": "6702:43:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 417, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "6755:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 421, + "indexExpression": { + "argumentTypes": null, + "id": 418, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 397, + "src": "6763:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6755:13:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 422, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 419, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "6769:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6769:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6755:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 430, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "6813:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 423, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "6783:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 425, + "indexExpression": { + "argumentTypes": null, + "id": 424, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 397, + "src": "6791:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6783:13:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 428, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 426, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "6797:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6797:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6783:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 45, + "src": "6783:29:0", + "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": 431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6783:37:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6755:65:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 433, + "nodeType": "ExpressionStatement", + "src": "6755:65:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 434, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "6830:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 436, + "indexExpression": { + "argumentTypes": null, + "id": 435, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 399, + "src": "6839:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6830:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 441, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "6862:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 437, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "6845:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 439, + "indexExpression": { + "argumentTypes": null, + "id": 438, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 399, + "src": "6854:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6845:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 23, + "src": "6845:16:0", + "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": 442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6845:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6830:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 444, + "nodeType": "ExpressionStatement", + "src": "6830:39:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 446, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 397, + "src": "6893:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 447, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 399, + "src": "6899:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 448, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "6903:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 445, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "6884:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6884:26:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 450, + "nodeType": "EmitStatement", + "src": "6879:31:0" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 451, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6927:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 405, + "id": 452, + "nodeType": "Return", + "src": "6920:11:0" + } + ] + }, + "documentation": null, + "id": 454, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 402, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 397, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 454, + "src": "6623:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 396, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6623:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 399, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 454, + "src": "6637:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 398, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6637:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 401, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 454, + "src": "6649:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 400, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6649:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6622:39:0" + }, + "payable": false, + "returnParameters": { + "id": 405, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 404, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 454, + "src": "6678:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 403, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6678:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6677:14:0" + }, + "scope": 539, + "src": "6601:337:0", + "stateMutability": "nonpayable", + "superFunction": 146, + "visibility": "public" + }, + { + "body": { + "id": 469, + "nodeType": "Block", + "src": "7312:52:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 463, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "7329:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 465, + "indexExpression": { + "argumentTypes": null, + "id": 464, + "name": "tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 456, + "src": "7337:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7329:19:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 467, + "indexExpression": { + "argumentTypes": null, + "id": 466, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "7349:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7329:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 462, + "id": 468, + "nodeType": "Return", + "src": "7322:35:0" + } + ] + }, + "documentation": null, + "id": 470, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 459, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 456, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 470, + "src": "7238:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 455, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7238:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 458, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 470, + "src": "7258:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 457, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7258:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7237:37:0" + }, + "payable": false, + "returnParameters": { + "id": 462, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 461, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 470, + "src": "7296:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 460, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7296:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7295:16:0" + }, + "scope": 539, + "src": "7219:145:0", + "stateMutability": "view", + "superFunction": 117, + "visibility": "public" + }, + { + "body": { + "id": 510, + "nodeType": "Block", + "src": "7820:216:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 481, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "7830:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 485, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 482, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "7838:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7838:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7830:19:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 486, + "indexExpression": { + "argumentTypes": null, + "id": 484, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 472, + "src": "7850:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7830:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 487, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "7861:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7830:37:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 489, + "nodeType": "ExpressionStatement", + "src": "7830:37:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 491, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "7891:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7891:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 493, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 472, + "src": "7903:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 494, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "7912:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 490, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 162, + "src": "7882:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7882:37:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 496, + "nodeType": "EmitStatement", + "src": "7877:42:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 501, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "7977:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7977:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 503, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "7989:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 504, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1127, + "src": "7997:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EmptyToken_$539", + "typeString": "contract EmptyToken" + } + }, + { + "argumentTypes": null, + "id": 505, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 476, + "src": "8003:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_EmptyToken_$539", + "typeString": "contract EmptyToken" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 498, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 472, + "src": "7952:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 497, + "name": "ApproveAndCallFallBack", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "7929:22:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ApproveAndCallFallBack_$175_$", + "typeString": "type(contract ApproveAndCallFallBack)" + } + }, + "id": 499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7929:31:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ApproveAndCallFallBack_$175", + "typeString": "contract ApproveAndCallFallBack" + } + }, + "id": 500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "receiveApproval", + "nodeType": "MemberAccess", + "referencedDeclaration": 174, + "src": "7929:47:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,address,bytes memory) external" + } + }, + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7929:79:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 507, + "nodeType": "ExpressionStatement", + "src": "7929:79:0" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 508, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8025:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 480, + "id": 509, + "nodeType": "Return", + "src": "8018:11:0" + } + ] + }, + "documentation": null, + "id": 511, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approveAndCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 472, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 511, + "src": "7748:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 471, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7748:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 474, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 511, + "src": "7765:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 473, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7765:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 476, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 511, + "src": "7778:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 475, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7778:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7747:42:0" + }, + "payable": false, + "returnParameters": { + "id": 480, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 479, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 511, + "src": "7806:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 478, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7806:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7805:14:0" + }, + "scope": 539, + "src": "7724:312:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 517, + "nodeType": "Block", + "src": "8254:25:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 514, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1111, + 1112 + ], + "referencedDeclaration": 1111, + "src": "8264:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8264:8:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 516, + "nodeType": "ExpressionStatement", + "src": "8264:8:0" + } + ] + }, + "documentation": null, + "id": 518, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 512, + "nodeType": "ParameterList", + "parameters": [], + "src": "8236:2:0" + }, + "payable": true, + "returnParameters": { + "id": 513, + "nodeType": "ParameterList", + "parameters": [], + "src": "8254:0:0" + }, + "scope": 539, + "src": "8227:52:0", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 537, + "nodeType": "Block", + "src": "8617:76:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 533, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "8672:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 534, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 522, + "src": "8679:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 530, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 520, + "src": "8649:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 529, + "name": "ERC20Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "8634:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Interface_$163_$", + "typeString": "type(contract ERC20Interface)" + } + }, + "id": 531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8634:28:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$163", + "typeString": "contract ERC20Interface" + } + }, + "id": 532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 126, + "src": "8634:37:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8634:52:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 528, + "id": 536, + "nodeType": "Return", + "src": "8627:59:0" + } + ] + }, + "documentation": null, + "id": 538, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 525, + "modifierName": { + "argumentTypes": null, + "id": 524, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 205, + "src": "8584:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8584:9:0" + } + ], + "name": "transferAnyERC20Token", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 520, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 538, + "src": "8542:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 519, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8542:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 522, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 538, + "src": "8564:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 521, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8564:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8541:35:0" + }, + "payable": false, + "returnParameters": { + "id": 528, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 527, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 538, + "src": "8603:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 526, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8603:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8602:14:0" + }, + "scope": 539, + "src": "8511:182:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 540, + "src": "3506:5189:0" + } + ], + "src": "0:8695:0" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/test/EmptyToken.sol", + "exportedSymbols": { + "ApproveAndCallFallBack": [ + 175 + ], + "ERC20Interface": [ + 163 + ], + "EmptyToken": [ + 539 + ], + "Owned": [ + 244 + ], + "SafeMath": [ + 96 + ] + }, + "id": 540, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:0" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": null, + "fullyImplemented": true, + "id": 96, + "linearizedBaseContracts": [ + 96 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 22, + "nodeType": "Block", + "src": "719:51:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 14, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 10, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "729:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "733:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 12, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "737:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "733:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "729:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 15, + "nodeType": "ExpressionStatement", + "src": "729:9:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 19, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 17, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "756:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 18, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "761:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "756:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 16, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "748:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 20, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "748:15:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 21, + "nodeType": "ExpressionStatement", + "src": "748:15:0" + } + ] + }, + "documentation": null, + "id": 23, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 23, + "src": "672:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "672:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 23, + "src": "680:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "680:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "671:16:0" + }, + "payable": false, + "returnParameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 23, + "src": "711:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "711:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "710:8:0" + }, + "scope": 96, + "src": "659:111:0", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 44, + "nodeType": "Block", + "src": "835:51:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 35, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 33, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "853:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 34, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "858:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "853:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 32, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "845:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 36, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "845:15:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 37, + "nodeType": "ExpressionStatement", + "src": "845:15:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 42, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 38, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "870:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 41, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 39, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "874:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 40, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "878:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "874:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "870:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 43, + "nodeType": "ExpressionStatement", + "src": "870:9:0" + } + ] + }, + "documentation": null, + "id": 45, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 28, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 25, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 45, + "src": "788:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 24, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "788:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 27, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 45, + "src": "796:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 26, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "796:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "787:16:0" + }, + "payable": false, + "returnParameters": { + "id": 31, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 30, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 45, + "src": "827:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 29, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "827:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "826:8:0" + }, + "scope": 96, + "src": "775:111:0", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 72, + "nodeType": "Block", + "src": "951:65:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 58, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 54, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "961:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 55, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "965:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 56, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "969:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "965:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "961:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 59, + "nodeType": "ExpressionStatement", + "src": "961:9:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 69, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 63, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 61, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "988:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 62, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "993:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "988:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 68, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 64, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "998:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 65, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "1002:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "998:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 67, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "1007:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "998:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "988:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 60, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "980:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 70, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "980:29:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 71, + "nodeType": "ExpressionStatement", + "src": "980:29:0" + } + ] + }, + "documentation": null, + "id": 73, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 50, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 47, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 73, + "src": "904:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 46, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "904:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 49, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 73, + "src": "912:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 48, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "912:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "903:16:0" + }, + "payable": false, + "returnParameters": { + "id": 53, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 52, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 73, + "src": "943:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 51, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "943:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "942:8:0" + }, + "scope": 96, + "src": "891:125:0", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 94, + "nodeType": "Block", + "src": "1081:50:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 83, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "1099:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 84, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1103:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1099:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 82, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "1091:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 86, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1091:14:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 87, + "nodeType": "ExpressionStatement", + "src": "1091:14:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 92, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 88, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 80, + "src": "1115:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 91, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 89, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "1119:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 90, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "1123:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1119:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1115:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 93, + "nodeType": "ExpressionStatement", + "src": "1115:9:0" + } + ] + }, + "documentation": null, + "id": 95, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 78, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 75, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 95, + "src": "1034:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 74, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1034:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 77, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 95, + "src": "1042:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 76, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1042:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1033:16:0" + }, + "payable": false, + "returnParameters": { + "id": 81, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 80, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 95, + "src": "1073:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 79, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1073:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1072:8:0" + }, + "scope": 96, + "src": "1021:110:0", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 540, + "src": "636:497:0" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 163, + "linearizedBaseContracts": [ + 163 + ], + "name": "ERC20Interface", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 101, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 97, + "nodeType": "ParameterList", + "parameters": [], + "src": "1445:2:0" + }, + "payable": false, + "returnParameters": { + "id": 100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 99, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 101, + "src": "1473:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 98, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1473:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1472:6:0" + }, + "scope": 163, + "src": "1425:54:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 108, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 104, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 103, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 108, + "src": "1503:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 102, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1503:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1502:20:0" + }, + "payable": false, + "returnParameters": { + "id": 107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 106, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 108, + "src": "1548:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 105, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1548:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1547:14:0" + }, + "scope": 163, + "src": "1484:78:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 117, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 113, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 110, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 117, + "src": "1586:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 109, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1586:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 112, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 117, + "src": "1606:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 111, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1606:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1585:37:0" + }, + "payable": false, + "returnParameters": { + "id": 116, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 115, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 117, + "src": "1648:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 114, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1648:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1647:16:0" + }, + "scope": 163, + "src": "1567:97:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 126, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 122, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 119, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1687:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 118, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1687:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 121, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1699:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 120, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1699:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1686:25:0" + }, + "payable": false, + "returnParameters": { + "id": 125, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 124, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "1728:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 123, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1728:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1727:14:0" + }, + "scope": 163, + "src": "1669:73:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 135, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 131, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 128, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 135, + "src": "1764:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 127, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1764:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 130, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 135, + "src": "1781:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 129, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1781:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1763:30:0" + }, + "payable": false, + "returnParameters": { + "id": 134, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 133, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 135, + "src": "1810:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 132, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1810:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1809:14:0" + }, + "scope": 163, + "src": "1747:77:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 146, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 142, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 137, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "1851:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 136, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1851:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 139, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "1865:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 138, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1865:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 141, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "1877:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 140, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1877:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1850:39:0" + }, + "payable": false, + "returnParameters": { + "id": 145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 144, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "1906:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 143, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1906:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1905:14:0" + }, + "scope": 163, + "src": "1829:91:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 154, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 153, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 148, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 154, + "src": "1941:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 147, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1941:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 150, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 154, + "src": "1963:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 149, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1963:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 152, + "indexed": false, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 154, + "src": "1983:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 151, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1983:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1940:55:0" + }, + "src": "1926:70:0" + }, + { + "anonymous": false, + "documentation": null, + "id": 162, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 161, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 156, + "indexed": true, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 162, + "src": "2016:26:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 155, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2016:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 158, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 162, + "src": "2044:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 157, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2044:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 160, + "indexed": false, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 162, + "src": "2069:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 159, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2069:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2015:66:0" + }, + "src": "2001:81:0" + } + ], + "scope": 540, + "src": "1395:689:0" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 175, + "linearizedBaseContracts": [ + 175 + ], + "name": "ApproveAndCallFallBack", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 174, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "receiveApproval", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 172, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 165, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 174, + "src": "2416:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 164, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2416:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 167, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 174, + "src": "2430:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 166, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2430:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 169, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 174, + "src": "2446:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 168, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2446:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 171, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 174, + "src": "2461:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 170, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2461:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2415:57:0" + }, + "payable": false, + "returnParameters": { + "id": 173, + "nodeType": "ParameterList", + "parameters": [], + "src": "2479:0:0" + }, + "scope": 175, + "src": "2391:89:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 540, + "src": "2353:129:0" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 244, + "linearizedBaseContracts": [ + 244 + ], + "name": "Owned", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 177, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 244, + "src": "2684:20:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 176, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2684:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 179, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 244, + "src": "2710:23:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 178, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2710:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 185, + "name": "OwnershipTransferred", + "nodeType": "EventDefinition", + "parameters": { + "id": 184, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 181, + "indexed": true, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 185, + "src": "2767:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 180, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2767:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 183, + "indexed": true, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 185, + "src": "2790:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 182, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2790:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2766:44:0" + }, + "src": "2740:71:0" + }, + { + "body": { + "id": 193, + "nodeType": "Block", + "src": "2838:35:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 188, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "2848:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 189, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "2856:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2856:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2848:18:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 192, + "nodeType": "ExpressionStatement", + "src": "2848:18:0" + } + ] + }, + "documentation": null, + "id": 194, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 186, + "nodeType": "ParameterList", + "parameters": [], + "src": "2828:2:0" + }, + "payable": false, + "returnParameters": { + "id": 187, + "nodeType": "ParameterList", + "parameters": [], + "src": "2838:0:0" + }, + "scope": 244, + "src": "2817:56:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 204, + "nodeType": "Block", + "src": "2898:56:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 197, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "2916:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2916:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 199, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "2930:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2916:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 196, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "2908:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2908:28:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 202, + "nodeType": "ExpressionStatement", + "src": "2908:28:0" + }, + { + "id": 203, + "nodeType": "PlaceholderStatement", + "src": "2946:1:0" + } + ] + }, + "documentation": null, + "id": 205, + "name": "onlyOwner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 195, + "nodeType": "ParameterList", + "parameters": [], + "src": "2898:0:0" + }, + "src": "2879:75:0", + "visibility": "internal" + }, + { + "body": { + "id": 216, + "nodeType": "Block", + "src": "3023:37:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 212, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "3033:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 213, + "name": "_newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 207, + "src": "3044:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3033:20:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 215, + "nodeType": "ExpressionStatement", + "src": "3033:20:0" + } + ] + }, + "documentation": null, + "id": 217, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 210, + "modifierName": { + "argumentTypes": null, + "id": 209, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 205, + "src": "3013:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3013:9:0" + } + ], + "name": "transferOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 208, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 207, + "name": "_newOwner", + "nodeType": "VariableDeclaration", + "scope": 217, + "src": "2987:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 206, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2987:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2986:19:0" + }, + "payable": false, + "returnParameters": { + "id": 211, + "nodeType": "ParameterList", + "parameters": [], + "src": "3023:0:0" + }, + "scope": 244, + "src": "2960:100:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 242, + "nodeType": "Block", + "src": "3099:157:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 221, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "3117:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3117:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 223, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "3131:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3117:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 220, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "3109:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3109:31:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 226, + "nodeType": "ExpressionStatement", + "src": "3109:31:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 228, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "3176:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 229, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "3183:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 227, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 185, + "src": "3155:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3155:37:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 231, + "nodeType": "EmitStatement", + "src": "3150:42:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 232, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "3202:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 233, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "3210:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3202:16:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 235, + "nodeType": "ExpressionStatement", + "src": "3202:16:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 236, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "3228:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3247:1:0", + "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": 237, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3239:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 239, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3239:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3228:21:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 241, + "nodeType": "ExpressionStatement", + "src": "3228:21:0" + } + ] + }, + "documentation": null, + "id": 243, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "acceptOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 218, + "nodeType": "ParameterList", + "parameters": [], + "src": "3089:2:0" + }, + "payable": false, + "returnParameters": { + "id": 219, + "nodeType": "ParameterList", + "parameters": [], + "src": "3099:0:0" + }, + "scope": 244, + "src": "3065:191:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 540, + "src": "2663:595:0" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 245, + "name": "ERC20Interface", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 163, + "src": "3529:14:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$163", + "typeString": "contract ERC20Interface" + } + }, + "id": 246, + "nodeType": "InheritanceSpecifier", + "src": "3529:14:0" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 247, + "name": "Owned", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 244, + "src": "3545:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Owned_$244", + "typeString": "contract Owned" + } + }, + "id": 248, + "nodeType": "InheritanceSpecifier", + "src": "3545:5:0" + } + ], + "contractDependencies": [ + 163, + 244 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 539, + "linearizedBaseContracts": [ + 539, + 244, + 163 + ], + "name": "EmptyToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 251, + "libraryName": { + "contractScope": null, + "id": 249, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 96, + "src": "3563:8:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$96", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "3557:24:0", + "typeName": { + "id": 250, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3576:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 253, + "name": "decimals", + "nodeType": "VariableDeclaration", + "scope": 539, + "src": "3587:21:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 252, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3587:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 255, + "name": "_totalSupply", + "nodeType": "VariableDeclaration", + "scope": 539, + "src": "3614:17:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 254, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3614:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 259, + "name": "balances", + "nodeType": "VariableDeclaration", + "scope": 539, + "src": "3638:33:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 258, + "keyType": { + "id": 256, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3646:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3638:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 257, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3657:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 265, + "name": "allowed", + "nodeType": "VariableDeclaration", + "scope": 539, + "src": "3677:52:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 264, + "keyType": { + "id": 260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3685:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3677:44:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 263, + "keyType": { + "id": 261, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3704:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3696:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 262, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3715:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 296, + "nodeType": "Block", + "src": "3937:179:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 268, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 253, + "src": "3947:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3138", + "id": 269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3958:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "src": "3947:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 271, + "nodeType": "ExpressionStatement", + "src": "3947:13:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 272, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "3970:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 273, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3985:7:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3995:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 276, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 253, + "src": "4004:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3999:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint" + }, + "id": 277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3999:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3995:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3985:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3970:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 281, + "nodeType": "ExpressionStatement", + "src": "3970:43:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 282, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4023:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 284, + "indexExpression": { + "argumentTypes": null, + "id": 283, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "4032:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4023:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 285, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "4041:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4023:30:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 287, + "nodeType": "ExpressionStatement", + "src": "4023:30:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4085:1:0", + "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": 289, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4077:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4077:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 292, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "4089:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 293, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "4096:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 288, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "4068:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4068:41:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 295, + "nodeType": "EmitStatement", + "src": "4063:46:0" + } + ] + }, + "documentation": null, + "id": 297, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 266, + "nodeType": "ParameterList", + "parameters": [], + "src": "3927:2:0" + }, + "payable": false, + "returnParameters": { + "id": 267, + "nodeType": "ParameterList", + "parameters": [], + "src": "3937:0:0" + }, + "scope": 539, + "src": "3916:200:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 311, + "nodeType": "Block", + "src": "4353:62:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 304, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4387:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 308, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 306, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4404:1:0", + "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": 305, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4396:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4396:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4387:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 302, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "4370:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 45, + "src": "4370:16:0", + "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": 309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4370:38:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 301, + "id": 310, + "nodeType": "Return", + "src": "4363:45:0" + } + ] + }, + "documentation": null, + "id": 312, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 298, + "nodeType": "ParameterList", + "parameters": [], + "src": "4323:2:0" + }, + "payable": false, + "returnParameters": { + "id": 301, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 300, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 312, + "src": "4347:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 299, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4347:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4346:6:0" + }, + "scope": 539, + "src": "4303:112:0", + "stateMutability": "view", + "superFunction": 101, + "visibility": "public" + }, + { + "body": { + "id": 323, + "nodeType": "Block", + "src": "4710:44:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 319, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4727:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 321, + "indexExpression": { + "argumentTypes": null, + "id": 320, + "name": "tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 314, + "src": "4736:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4727:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 318, + "id": 322, + "nodeType": "Return", + "src": "4720:27:0" + } + ] + }, + "documentation": null, + "id": 324, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 314, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 324, + "src": "4655:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 313, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4655:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4654:20:0" + }, + "payable": false, + "returnParameters": { + "id": 318, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 317, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 324, + "src": "4696:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 316, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4696:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4695:14:0" + }, + "scope": 539, + "src": "4636:118:0", + "stateMutability": "view", + "superFunction": 108, + "visibility": "public" + }, + { + "body": { + "id": 366, + "nodeType": "Block", + "src": "5170:189:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 333, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "5180:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 336, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 334, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "5189:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5189:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5180:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 342, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 328, + "src": "5228:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 337, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "5203:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 340, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 338, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "5212:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5212:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5203:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 45, + "src": "5203:24:0", + "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": 343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5203:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5180:55:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 345, + "nodeType": "ExpressionStatement", + "src": "5180:55:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 346, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "5245:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 348, + "indexExpression": { + "argumentTypes": null, + "id": 347, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "5254:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5245:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 353, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 328, + "src": "5277:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 349, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "5260:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 351, + "indexExpression": { + "argumentTypes": null, + "id": 350, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "5269:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5260:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 23, + "src": "5260:16:0", + "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": 354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5260:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5245:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 356, + "nodeType": "ExpressionStatement", + "src": "5245:39:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 358, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "5308:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5308:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 360, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "5320:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 361, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 328, + "src": "5324:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 357, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "5299:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5299:32:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 363, + "nodeType": "EmitStatement", + "src": "5294:37:0" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5348:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 332, + "id": 365, + "nodeType": "Return", + "src": "5341:11:0" + } + ] + }, + "documentation": null, + "id": 367, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 326, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 367, + "src": "5115:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 325, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5115:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 328, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 367, + "src": "5127:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 327, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5127:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5114:25:0" + }, + "payable": false, + "returnParameters": { + "id": 332, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 331, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 367, + "src": "5156:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 330, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5156:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5155:14:0" + }, + "scope": 539, + "src": "5097:262:0", + "stateMutability": "nonpayable", + "superFunction": 126, + "visibility": "public" + }, + { + "body": { + "id": 394, + "nodeType": "Block", + "src": "5942:127:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 376, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "5952:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 380, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 377, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "5960:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5960:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5952:19:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 381, + "indexExpression": { + "argumentTypes": null, + "id": 379, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "5972:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5952:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 382, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 371, + "src": "5983:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5952:37:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 384, + "nodeType": "ExpressionStatement", + "src": "5952:37:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 386, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "6013:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6013:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 388, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "6025:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 389, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 371, + "src": "6034:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 385, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 162, + "src": "6004:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6004:37:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 391, + "nodeType": "EmitStatement", + "src": "5999:42:0" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 392, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6058:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 375, + "id": 393, + "nodeType": "Return", + "src": "6051:11:0" + } + ] + }, + "documentation": null, + "id": 395, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 372, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 369, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 395, + "src": "5882:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 368, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5882:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 371, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 395, + "src": "5899:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 370, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5899:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5881:30:0" + }, + "payable": false, + "returnParameters": { + "id": 375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 374, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 395, + "src": "5928:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 373, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5928:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5927:14:0" + }, + "scope": 539, + "src": "5865:204:0", + "stateMutability": "nonpayable", + "superFunction": 135, + "visibility": "public" + }, + { + "body": { + "id": 453, + "nodeType": "Block", + "src": "6692:246:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 406, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "6702:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 408, + "indexExpression": { + "argumentTypes": null, + "id": 407, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 397, + "src": "6711:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6702:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 413, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "6738:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 409, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "6719:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 411, + "indexExpression": { + "argumentTypes": null, + "id": 410, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 397, + "src": "6728:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6719:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 45, + "src": "6719:18:0", + "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": 414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6719:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6702:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 416, + "nodeType": "ExpressionStatement", + "src": "6702:43:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 417, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "6755:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 421, + "indexExpression": { + "argumentTypes": null, + "id": 418, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 397, + "src": "6763:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6755:13:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 422, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 419, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "6769:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6769:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6755:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 430, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "6813:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 423, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "6783:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 425, + "indexExpression": { + "argumentTypes": null, + "id": 424, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 397, + "src": "6791:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6783:13:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 428, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 426, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "6797:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6797:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6783:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 45, + "src": "6783:29:0", + "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": 431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6783:37:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6755:65:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 433, + "nodeType": "ExpressionStatement", + "src": "6755:65:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 434, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "6830:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 436, + "indexExpression": { + "argumentTypes": null, + "id": 435, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 399, + "src": "6839:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6830:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 441, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "6862:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 437, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "6845:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 439, + "indexExpression": { + "argumentTypes": null, + "id": 438, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 399, + "src": "6854:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6845:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 23, + "src": "6845:16:0", + "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": 442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6845:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6830:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 444, + "nodeType": "ExpressionStatement", + "src": "6830:39:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 446, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 397, + "src": "6893:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 447, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 399, + "src": "6899:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 448, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "6903:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 445, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "6884:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6884:26:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 450, + "nodeType": "EmitStatement", + "src": "6879:31:0" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 451, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6927:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 405, + "id": 452, + "nodeType": "Return", + "src": "6920:11:0" + } + ] + }, + "documentation": null, + "id": 454, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 402, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 397, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 454, + "src": "6623:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 396, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6623:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 399, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 454, + "src": "6637:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 398, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6637:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 401, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 454, + "src": "6649:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 400, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6649:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6622:39:0" + }, + "payable": false, + "returnParameters": { + "id": 405, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 404, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 454, + "src": "6678:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 403, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6678:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6677:14:0" + }, + "scope": 539, + "src": "6601:337:0", + "stateMutability": "nonpayable", + "superFunction": 146, + "visibility": "public" + }, + { + "body": { + "id": 469, + "nodeType": "Block", + "src": "7312:52:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 463, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "7329:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 465, + "indexExpression": { + "argumentTypes": null, + "id": 464, + "name": "tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 456, + "src": "7337:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7329:19:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 467, + "indexExpression": { + "argumentTypes": null, + "id": 466, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "7349:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7329:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 462, + "id": 468, + "nodeType": "Return", + "src": "7322:35:0" + } + ] + }, + "documentation": null, + "id": 470, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 459, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 456, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 470, + "src": "7238:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 455, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7238:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 458, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 470, + "src": "7258:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 457, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7258:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7237:37:0" + }, + "payable": false, + "returnParameters": { + "id": 462, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 461, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 470, + "src": "7296:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 460, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7296:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7295:16:0" + }, + "scope": 539, + "src": "7219:145:0", + "stateMutability": "view", + "superFunction": 117, + "visibility": "public" + }, + { + "body": { + "id": 510, + "nodeType": "Block", + "src": "7820:216:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 481, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "7830:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 485, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 482, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "7838:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7838:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7830:19:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 486, + "indexExpression": { + "argumentTypes": null, + "id": 484, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 472, + "src": "7850:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7830:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 487, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "7861:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7830:37:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 489, + "nodeType": "ExpressionStatement", + "src": "7830:37:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 491, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "7891:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7891:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 493, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 472, + "src": "7903:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 494, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "7912:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 490, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 162, + "src": "7882:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7882:37:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 496, + "nodeType": "EmitStatement", + "src": "7877:42:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 501, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "7977:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7977:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 503, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "7989:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 504, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1127, + "src": "7997:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EmptyToken_$539", + "typeString": "contract EmptyToken" + } + }, + { + "argumentTypes": null, + "id": 505, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 476, + "src": "8003:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_EmptyToken_$539", + "typeString": "contract EmptyToken" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 498, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 472, + "src": "7952:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 497, + "name": "ApproveAndCallFallBack", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "7929:22:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ApproveAndCallFallBack_$175_$", + "typeString": "type(contract ApproveAndCallFallBack)" + } + }, + "id": 499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7929:31:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ApproveAndCallFallBack_$175", + "typeString": "contract ApproveAndCallFallBack" + } + }, + "id": 500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "receiveApproval", + "nodeType": "MemberAccess", + "referencedDeclaration": 174, + "src": "7929:47:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,address,bytes memory) external" + } + }, + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7929:79:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 507, + "nodeType": "ExpressionStatement", + "src": "7929:79:0" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 508, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8025:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 480, + "id": 509, + "nodeType": "Return", + "src": "8018:11:0" + } + ] + }, + "documentation": null, + "id": 511, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approveAndCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 472, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 511, + "src": "7748:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 471, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7748:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 474, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 511, + "src": "7765:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 473, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7765:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 476, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 511, + "src": "7778:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 475, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7778:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7747:42:0" + }, + "payable": false, + "returnParameters": { + "id": 480, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 479, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 511, + "src": "7806:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 478, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7806:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7805:14:0" + }, + "scope": 539, + "src": "7724:312:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 517, + "nodeType": "Block", + "src": "8254:25:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 514, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1111, + 1112 + ], + "referencedDeclaration": 1111, + "src": "8264:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8264:8:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 516, + "nodeType": "ExpressionStatement", + "src": "8264:8:0" + } + ] + }, + "documentation": null, + "id": 518, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 512, + "nodeType": "ParameterList", + "parameters": [], + "src": "8236:2:0" + }, + "payable": true, + "returnParameters": { + "id": 513, + "nodeType": "ParameterList", + "parameters": [], + "src": "8254:0:0" + }, + "scope": 539, + "src": "8227:52:0", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 537, + "nodeType": "Block", + "src": "8617:76:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 533, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "8672:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 534, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 522, + "src": "8679:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 530, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 520, + "src": "8649:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 529, + "name": "ERC20Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "8634:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Interface_$163_$", + "typeString": "type(contract ERC20Interface)" + } + }, + "id": 531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8634:28:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$163", + "typeString": "contract ERC20Interface" + } + }, + "id": 532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 126, + "src": "8634:37:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8634:52:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 528, + "id": 536, + "nodeType": "Return", + "src": "8627:59:0" + } + ] + }, + "documentation": null, + "id": 538, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 525, + "modifierName": { + "argumentTypes": null, + "id": 524, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 205, + "src": "8584:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8584:9:0" + } + ], + "name": "transferAnyERC20Token", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 520, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 538, + "src": "8542:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 519, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8542:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 522, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 538, + "src": "8564:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 521, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8564:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8541:35:0" + }, + "payable": false, + "returnParameters": { + "id": 528, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 527, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 538, + "src": "8603:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 526, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8603:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8602:14:0" + }, + "scope": 539, + "src": "8511:182:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 540, + "src": "3506:5189:0" + } + ], + "src": "0:8695:0" + }, + "compiler": { + "name": "solc", + "version": "0.4.24+commit.e67f0147.Emscripten.clang" + }, + "networks": { + "1531736519464": { + "events": {}, + "links": {}, + "address": "0x0bf35169f79c22f2503970a5d8aea1e74a46adc4", + "transactionHash": "0xdbdf2e9d688eb2a0de189479c1d0acd527285b4e89a49e018d75dfa4283a1a9a" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-07-17T07:07:22.320Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/test/TestToken.json b/safe-contracts/build/contracts/test/TestToken.json new file mode 100644 index 0000000000..948f0b79c2 --- /dev/null +++ b/safe-contracts/build/contracts/test/TestToken.json @@ -0,0 +1,14541 @@ +{ + "contractName": "TestToken", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "acceptOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "newOwner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "name": "_to", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "tokens", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "tokenOwner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "tokens", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenOwner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "tokens", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "tokens", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokens", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenOwner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "remaining", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "tokens", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "approveAndCall", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "tokenAddress", + "type": "address" + }, + { + "name": "tokens", + "type": "uint256" + } + ], + "name": "transferAnyERC20Token", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040805190810160405280600381526020017f544b4e0000000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000221565b506040805190810160405280600d81526020017f546f6b656e204578616d706c650000000000000000000000000000000000000081525060039080519060200190620000ed92919062000221565b506012600460006101000a81548160ff021916908360ff160217905550600460009054906101000a900460ff1660ff16600a0a620f424002600581905550600554600660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040518082815260200191505060405180910390a3620002d0565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026457805160ff191683800117855562000295565b8280016001018555821562000295579182015b828111156200029457825182559160200191906001019062000277565b5b509050620002a49190620002a8565b5090565b620002cd91905b80821115620002c9576000816000905550600101620002af565b5090565b90565b6114e380620002e06000396000f3006080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e0578063095ea7b31461017057806318160ddd146101d557806323b872dd14610200578063313ce5671461028557806370a08231146102b657806379ba50971461030d5780638da5cb5b1461032457806395d89b411461037b578063a9059cbb1461040b578063cae9ca5114610470578063d4ee1d901461051b578063dc39d06d14610572578063dd62ed3e146105d7578063f2fde38b1461064e575b600080fd5b3480156100ec57600080fd5b506100f5610691565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013557808201518184015260208101905061011a565b50505050905090810190601f1680156101625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017c57600080fd5b506101bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061072f565b604051808215151515815260200191505060405180910390f35b3480156101e157600080fd5b506101ea610821565b6040518082815260200191505060405180910390f35b34801561020c57600080fd5b5061026b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061087c565b604051808215151515815260200191505060405180910390f35b34801561029157600080fd5b5061029a610b27565b604051808260ff1660ff16815260200191505060405180910390f35b3480156102c257600080fd5b506102f7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b3a565b6040518082815260200191505060405180910390f35b34801561031957600080fd5b50610322610b83565b005b34801561033057600080fd5b50610339610d22565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561038757600080fd5b50610390610d47565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103d05780820151818401526020810190506103b5565b50505050905090810190601f1680156103fd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041757600080fd5b50610456600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610de5565b604051808215151515815260200191505060405180910390f35b34801561047c57600080fd5b50610501600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610f80565b604051808215151515815260200191505060405180910390f35b34801561052757600080fd5b506105306111cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561057e57600080fd5b506105bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111f5565b604051808215151515815260200191505060405180910390f35b3480156105e357600080fd5b50610638600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611359565b6040518082815260200191505060405180910390f35b34801561065a57600080fd5b5061068f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113e0565b005b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107275780601f106106fc57610100808354040283529160200191610727565b820191906000526020600020905b81548152906001019060200180831161070a57829003601f168201915b505050505081565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000610877600660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460055461147f90919063ffffffff16565b905090565b60006108d082600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461147f90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506109a282600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461147f90919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a7482600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461149b90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600460009054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bdf57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ddd5780601f10610db257610100808354040283529160200191610ddd565b820191906000526020600020905b815481529060010190602001808311610dc057829003601f168201915b505050505081565b6000610e3982600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461147f90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ece82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461149b90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600082600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561115d578082015181840152602081019050611142565b50505050905090810190601f16801561118a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156111ac57600080fd5b505af11580156111c0573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561125257600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b505050506040513d602081101561134057600080fd5b8101908080519060200190929190505050905092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561143b57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600082821115151561149057600080fd5b818303905092915050565b600081830190508281101515156114b157600080fd5b929150505600a165627a7a72305820e93a82d67ce3df799c1bfea59d7f6b269216cff0ed6e6c3d0c4b551065d3f5aa0029", + "deployedBytecode": "0x6080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e0578063095ea7b31461017057806318160ddd146101d557806323b872dd14610200578063313ce5671461028557806370a08231146102b657806379ba50971461030d5780638da5cb5b1461032457806395d89b411461037b578063a9059cbb1461040b578063cae9ca5114610470578063d4ee1d901461051b578063dc39d06d14610572578063dd62ed3e146105d7578063f2fde38b1461064e575b600080fd5b3480156100ec57600080fd5b506100f5610691565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013557808201518184015260208101905061011a565b50505050905090810190601f1680156101625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017c57600080fd5b506101bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061072f565b604051808215151515815260200191505060405180910390f35b3480156101e157600080fd5b506101ea610821565b6040518082815260200191505060405180910390f35b34801561020c57600080fd5b5061026b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061087c565b604051808215151515815260200191505060405180910390f35b34801561029157600080fd5b5061029a610b27565b604051808260ff1660ff16815260200191505060405180910390f35b3480156102c257600080fd5b506102f7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b3a565b6040518082815260200191505060405180910390f35b34801561031957600080fd5b50610322610b83565b005b34801561033057600080fd5b50610339610d22565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561038757600080fd5b50610390610d47565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103d05780820151818401526020810190506103b5565b50505050905090810190601f1680156103fd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041757600080fd5b50610456600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610de5565b604051808215151515815260200191505060405180910390f35b34801561047c57600080fd5b50610501600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610f80565b604051808215151515815260200191505060405180910390f35b34801561052757600080fd5b506105306111cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561057e57600080fd5b506105bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111f5565b604051808215151515815260200191505060405180910390f35b3480156105e357600080fd5b50610638600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611359565b6040518082815260200191505060405180910390f35b34801561065a57600080fd5b5061068f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113e0565b005b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107275780601f106106fc57610100808354040283529160200191610727565b820191906000526020600020905b81548152906001019060200180831161070a57829003601f168201915b505050505081565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000610877600660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460055461147f90919063ffffffff16565b905090565b60006108d082600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461147f90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506109a282600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461147f90919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a7482600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461149b90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600460009054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bdf57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ddd5780601f10610db257610100808354040283529160200191610ddd565b820191906000526020600020905b815481529060010190602001808311610dc057829003601f168201915b505050505081565b6000610e3982600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461147f90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ece82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461149b90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600082600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561115d578082015181840152602081019050611142565b50505050905090810190601f16801561118a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156111ac57600080fd5b505af11580156111c0573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561125257600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b505050506040513d602081101561134057600080fd5b8101908080519060200190929190505050905092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561143b57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600082821115151561149057600080fd5b818303905092915050565b600081830190508281101515156114b157600080fd5b929150505600a165627a7a72305820e93a82d67ce3df799c1bfea59d7f6b269216cff0ed6e6c3d0c4b551065d3f5aa0029", + "sourceMap": "3506:5295:1:-;;;3966:256;8:9:-1;5:2;;;30:1;27;20:12;5:2;3966:256:1;2856:10;2848:5;;:18;;;;;;;;;;;;;;;;;;3997:14;;;;;;;;;;;;;;;;;;:6;:14;;;;;;;;;;;;:::i;:::-;;4021:22;;;;;;;;;;;;;;;;;;:4;:22;;;;;;;;;;;;:::i;:::-;;4064:2;4053:8;;:13;;;;;;;;;;;;;;;;;;4110:8;;;;;;;;;;;4105:14;;4101:2;:18;4091:7;:28;4076:12;:43;;;;4147:12;;4129:8;:15;4138:5;;;;;;;;;;;4129:15;;;;;;;;;;;;;;;:30;;;;4195:5;;;;;;;;;;;4174:41;;4191:1;4174:41;;;4202:12;;4174:41;;;;;;;;;;;;;;;;;;3506:5295;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "3506:5295:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8370:8;;;3612:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3612:19:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3612:19:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5971:204;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5971:204:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4409:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4409:112:1;;;;;;;;;;;;;;;;;;;;;;;6707:337;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6707:337:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3637:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3637:21:1;;;;;;;;;;;;;;;;;;;;;;;;;;;4742:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4742:118:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3065:191;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3065:191:1;;;;;;2684:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2684:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;3586;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3586:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3586:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5203:262;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5203:262:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7830:312;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7830:312:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2710:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2710:23:1;;;;;;;;;;;;;;;;;;;;;;;;;;;8617:182;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8617:182:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7325:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7325:145:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2960:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2960:100:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5971:204::-;6034:12;6089:6;6058:7;:19;6066:10;6058:19;;;;;;;;;;;;;;;:28;6078:7;6058:28;;;;;;;;;;;;;;;:37;;;;6131:7;6110:37;;6119:10;6110:37;;;6140:6;6110:37;;;;;;;;;;;;;;;;;;6164:4;6157:11;;5971:204;;;;:::o;4409:112::-;4453:4;4476:38;4493:8;:20;4510:1;4493:20;;;;;;;;;;;;;;;;4476:12;;:16;;:38;;;;:::i;:::-;4469:45;;4409:112;:::o;6707:337::-;6784:12;6825:26;6844:6;6825:8;:14;6834:4;6825:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;6808:8;:14;6817:4;6808:14;;;;;;;;;;;;;;;:43;;;;6889:37;6919:6;6889:7;:13;6897:4;6889:13;;;;;;;;;;;;;;;:25;6903:10;6889:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;6861:7;:13;6869:4;6861:13;;;;;;;;;;;;;;;:25;6875:10;6861:25;;;;;;;;;;;;;;;:65;;;;6951:24;6968:6;6951:8;:12;6960:2;6951:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;6936:8;:12;6945:2;6936:12;;;;;;;;;;;;;;;:39;;;;7005:2;6990:26;;6999:4;6990:26;;;7009:6;6990:26;;;;;;;;;;;;;;;;;;7033:4;7026:11;;6707:337;;;;;:::o;3637:21::-;;;;;;;;;;;;;:::o;4742:118::-;4802:12;4833:8;:20;4842:10;4833:20;;;;;;;;;;;;;;;;4826:27;;4742:118;;;:::o;3065:191::-;3131:8;;;;;;;;;;;3117:22;;:10;:22;;;3109:31;;;;;;;;3183:8;;;;;;;;;;;3155:37;;3176:5;;;;;;;;;;;3155:37;;;;;;;;;;;;3210:8;;;;;;;;;;;3202:5;;:16;;;;;;;;;;;;;;;;;;3247:1;3228:8;;:21;;;;;;;;;;;;;;;;;;3065:191::o;2684:20::-;;;;;;;;;;;;;:::o;3586:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5203:262::-;5262:12;5309:32;5334:6;5309:8;:20;5318:10;5309:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5286:8;:20;5295:10;5286:20;;;;;;;;;;;;;;;:55;;;;5366:24;5383:6;5366:8;:12;5375:2;5366:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;5351:8;:12;5360:2;5351:12;;;;;;;;;;;;;;;:39;;;;5426:2;5405:32;;5414:10;5405:32;;;5430:6;5405:32;;;;;;;;;;;;;;;;;;5454:4;5447:11;;5203:262;;;;:::o;7830:312::-;7912:12;7967:6;7936:7;:19;7944:10;7936:19;;;;;;;;;;;;;;;:28;7956:7;7936:28;;;;;;;;;;;;;;;:37;;;;8009:7;7988:37;;7997:10;7988:37;;;8018:6;7988:37;;;;;;;;;;;;;;;;;;8058:7;8035:47;;;8083:10;8095:6;8103:4;8109;8035:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8035:79:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8035:79:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8035:79:1;;;;8131:4;8124:11;;7830:312;;;;;:::o;2710:23::-;;;;;;;;;;;;;:::o;8617:182::-;8709:12;2930:5;;;;;;;;;;;2916:19;;:10;:19;;;2908:28;;;;;;;;8755:12;8740:37;;;8778:5;;;;;;;;;;;8785:6;8740:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8740:52:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8740:52:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8740:52:1;;;;;;;;;;;;;;;;8733:59;;8617:182;;;;:::o;7325:145::-;7402:14;7435:7;:19;7443:10;7435:19;;;;;;;;;;;;;;;:28;7455:7;7435:28;;;;;;;;;;;;;;;;7428:35;;7325:145;;;;:::o;2960:100::-;2930:5;;;;;;;;;;;2916:19;;:10;:19;;;2908:28;;;;;;;;3044:9;3033:8;;:20;;;;;;;;;;;;;;;;;;2960:100;:::o;775:111::-;827:6;858:1;853;:6;;845:15;;;;;;;;878:1;874;:5;870:9;;775:111;;;;:::o;659:::-;711:6;737:1;733;:5;729:9;;761:1;756;:6;;748:15;;;;;;;;659:111;;;;:::o", + "source": "pragma solidity ^0.4.24;\n\n// ----------------------------------------------------------------------------\n// 'FIXED' 'Example Fixed Supply Token' token contract\n//\n// Symbol : FIXED\n// Name : Example Fixed Supply Token\n// Total supply: 1,000,000.000000000000000000\n// Decimals : 18\n//\n// Enjoy.\n//\n// (c) BokkyPooBah / Bok Consulting Pty Ltd 2018. The MIT Licence.\n// ----------------------------------------------------------------------------\n\n\n// ----------------------------------------------------------------------------\n// Safe maths\n// ----------------------------------------------------------------------------\nlibrary SafeMath {\n function add(uint a, uint b) internal pure returns (uint c) {\n c = a + b;\n require(c >= a);\n }\n function sub(uint a, uint b) internal pure returns (uint c) {\n require(b <= a);\n c = a - b;\n }\n function mul(uint a, uint b) internal pure returns (uint c) {\n c = a * b;\n require(a == 0 || c / a == b);\n }\n function div(uint a, uint b) internal pure returns (uint c) {\n require(b > 0);\n c = a / b;\n }\n}\n\n\n// ----------------------------------------------------------------------------\n// ERC Token Standard #20 Interface\n// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md\n// ----------------------------------------------------------------------------\ncontract ERC20Interface {\n function totalSupply() public constant returns (uint);\n function balanceOf(address tokenOwner) public constant returns (uint balance);\n function allowance(address tokenOwner, address spender) public constant returns (uint remaining);\n function transfer(address to, uint tokens) public returns (bool success);\n function approve(address spender, uint tokens) public returns (bool success);\n function transferFrom(address from, address to, uint tokens) public returns (bool success);\n\n event Transfer(address indexed from, address indexed to, uint tokens);\n event Approval(address indexed tokenOwner, address indexed spender, uint tokens);\n}\n\n\n// ----------------------------------------------------------------------------\n// Contract function to receive approval and execute function in one call\n//\n// Borrowed from MiniMeToken\n// ----------------------------------------------------------------------------\ncontract ApproveAndCallFallBack {\n function receiveApproval(address from, uint256 tokens, address token, bytes data) public;\n}\n\n\n// ----------------------------------------------------------------------------\n// Owned contract\n// ----------------------------------------------------------------------------\ncontract Owned {\n address public owner;\n address public newOwner;\n\n event OwnershipTransferred(address indexed _from, address indexed _to);\n\n constructor() public {\n owner = msg.sender;\n }\n\n modifier onlyOwner {\n require(msg.sender == owner);\n _;\n }\n\n function transferOwnership(address _newOwner) public onlyOwner {\n newOwner = _newOwner;\n }\n function acceptOwnership() public {\n require(msg.sender == newOwner);\n emit OwnershipTransferred(owner, newOwner);\n owner = newOwner;\n newOwner = address(0);\n }\n}\n\n\n// ----------------------------------------------------------------------------\n// ERC20 Token, with the addition of symbol, name and decimals and a\n// fixed supply\n// ----------------------------------------------------------------------------\ncontract TestToken is ERC20Interface, Owned {\n using SafeMath for uint;\n\n string public symbol;\n string public name;\n uint8 public decimals;\n uint _totalSupply;\n\n mapping(address => uint) balances;\n mapping(address => mapping(address => uint)) allowed;\n\n\n // ------------------------------------------------------------------------\n // Constructor\n // ------------------------------------------------------------------------\n constructor() public {\n symbol = \"TKN\";\n name = \"Token Example\";\n decimals = 18;\n _totalSupply = 1000000 * 10**uint(decimals);\n balances[owner] = _totalSupply;\n emit Transfer(address(0), owner, _totalSupply);\n }\n\n\n // ------------------------------------------------------------------------\n // Total supply\n // ------------------------------------------------------------------------\n function totalSupply() public view returns (uint) {\n return _totalSupply.sub(balances[address(0)]);\n }\n\n\n // ------------------------------------------------------------------------\n // Get the token balance for account `tokenOwner`\n // ------------------------------------------------------------------------\n function balanceOf(address tokenOwner) public view returns (uint balance) {\n return balances[tokenOwner];\n }\n\n\n // ------------------------------------------------------------------------\n // Transfer the balance from token owner's account to `to` account\n // - Owner's account must have sufficient balance to transfer\n // - 0 value transfers are allowed\n // ------------------------------------------------------------------------\n function transfer(address to, uint tokens) public returns (bool success) {\n balances[msg.sender] = balances[msg.sender].sub(tokens);\n balances[to] = balances[to].add(tokens);\n emit Transfer(msg.sender, to, tokens);\n return true;\n }\n\n\n // ------------------------------------------------------------------------\n // Token owner can approve for `spender` to transferFrom(...) `tokens`\n // from the token owner's account\n //\n // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md\n // recommends that there are no checks for the approval double-spend attack\n // as this should be implemented in user interfaces \n // ------------------------------------------------------------------------\n function approve(address spender, uint tokens) public returns (bool success) {\n allowed[msg.sender][spender] = tokens;\n emit Approval(msg.sender, spender, tokens);\n return true;\n }\n\n\n // ------------------------------------------------------------------------\n // Transfer `tokens` from the `from` account to the `to` account\n // \n // The calling account must already have sufficient tokens approve(...)-d\n // for spending from the `from` account and\n // - From account must have sufficient balance to transfer\n // - Spender must have sufficient allowance to transfer\n // - 0 value transfers are allowed\n // ------------------------------------------------------------------------\n function transferFrom(address from, address to, uint tokens) public returns (bool success) {\n balances[from] = balances[from].sub(tokens);\n allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens);\n balances[to] = balances[to].add(tokens);\n emit Transfer(from, to, tokens);\n return true;\n }\n\n\n // ------------------------------------------------------------------------\n // Returns the amount of tokens approved by the owner that can be\n // transferred to the spender's account\n // ------------------------------------------------------------------------\n function allowance(address tokenOwner, address spender) public view returns (uint remaining) {\n return allowed[tokenOwner][spender];\n }\n\n\n // ------------------------------------------------------------------------\n // Token owner can approve for `spender` to transferFrom(...) `tokens`\n // from the token owner's account. The `spender` contract function\n // `receiveApproval(...)` is then executed\n // ------------------------------------------------------------------------\n function approveAndCall(address spender, uint tokens, bytes data) public returns (bool success) {\n allowed[msg.sender][spender] = tokens;\n emit Approval(msg.sender, spender, tokens);\n ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, this, data);\n return true;\n }\n\n\n // ------------------------------------------------------------------------\n // Don't accept ETH\n // ------------------------------------------------------------------------\n function () public payable {\n revert();\n }\n\n\n // ------------------------------------------------------------------------\n // Owner can transfer out any accidentally sent ERC20 tokens\n // ------------------------------------------------------------------------\n function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) {\n return ERC20Interface(tokenAddress).transfer(owner, tokens);\n }\n}", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/test/TestToken.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/test/TestToken.sol", + "exportedSymbols": { + "ApproveAndCallFallBack": [ + 715 + ], + "ERC20Interface": [ + 703 + ], + "Owned": [ + 784 + ], + "SafeMath": [ + 636 + ], + "TestToken": [ + 1091 + ] + }, + "id": 1092, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 541, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:1" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": null, + "fullyImplemented": true, + "id": 636, + "linearizedBaseContracts": [ + 636 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 562, + "nodeType": "Block", + "src": "719:51:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 550, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 548, + "src": "729:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 551, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "733:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 552, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 545, + "src": "737:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "733:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "729:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 555, + "nodeType": "ExpressionStatement", + "src": "729:9:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 557, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 548, + "src": "756:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 558, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "761:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "756:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 556, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "748:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "748:15:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 561, + "nodeType": "ExpressionStatement", + "src": "748:15:1" + } + ] + }, + "documentation": null, + "id": 563, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 546, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 543, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 563, + "src": "672:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 542, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "672:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 545, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 563, + "src": "680:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 544, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "680:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "671:16:1" + }, + "payable": false, + "returnParameters": { + "id": 549, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 548, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 563, + "src": "711:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 547, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "711:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "710:8:1" + }, + "scope": 636, + "src": "659:111:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 584, + "nodeType": "Block", + "src": "835:51:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 573, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 567, + "src": "853:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 574, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "858:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "853:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 572, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "845:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "845:15:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 577, + "nodeType": "ExpressionStatement", + "src": "845:15:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 578, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 570, + "src": "870:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 579, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "874:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 580, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 567, + "src": "878:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "874:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "870:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 583, + "nodeType": "ExpressionStatement", + "src": "870:9:1" + } + ] + }, + "documentation": null, + "id": 585, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 565, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 585, + "src": "788:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 564, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "788:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 567, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 585, + "src": "796:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 566, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "796:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "787:16:1" + }, + "payable": false, + "returnParameters": { + "id": 571, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 570, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 585, + "src": "827:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 569, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "827:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "826:8:1" + }, + "scope": 636, + "src": "775:111:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 612, + "nodeType": "Block", + "src": "951:65:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 594, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 592, + "src": "961:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 595, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 587, + "src": "965:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 596, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 589, + "src": "969:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "965:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "961:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 599, + "nodeType": "ExpressionStatement", + "src": "961:9:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 601, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 587, + "src": "988:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "993:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "988:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 604, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 592, + "src": "998:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 605, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 587, + "src": "1002:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "998:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 607, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 589, + "src": "1007:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "998:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "988:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 600, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "980:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "980:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 611, + "nodeType": "ExpressionStatement", + "src": "980:29:1" + } + ] + }, + "documentation": null, + "id": 613, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 590, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 587, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 613, + "src": "904:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 586, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "904:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 589, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 613, + "src": "912:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 588, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "912:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "903:16:1" + }, + "payable": false, + "returnParameters": { + "id": 593, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 592, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 613, + "src": "943:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 591, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "943:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "942:8:1" + }, + "scope": 636, + "src": "891:125:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 634, + "nodeType": "Block", + "src": "1081:50:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 623, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 617, + "src": "1099:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1103:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1099:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 622, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "1091:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1091:14:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 627, + "nodeType": "ExpressionStatement", + "src": "1091:14:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 628, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 620, + "src": "1115:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 629, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 615, + "src": "1119:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 630, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 617, + "src": "1123:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1119:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1115:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 633, + "nodeType": "ExpressionStatement", + "src": "1115:9:1" + } + ] + }, + "documentation": null, + "id": 635, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 618, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 615, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 635, + "src": "1034:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 614, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1034:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 617, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 635, + "src": "1042:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 616, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1042:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1033:16:1" + }, + "payable": false, + "returnParameters": { + "id": 621, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 620, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 635, + "src": "1073:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 619, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1073:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1072:8:1" + }, + "scope": 636, + "src": "1021:110:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1092, + "src": "636:497:1" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 703, + "linearizedBaseContracts": [ + 703 + ], + "name": "ERC20Interface", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 641, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 637, + "nodeType": "ParameterList", + "parameters": [], + "src": "1445:2:1" + }, + "payable": false, + "returnParameters": { + "id": 640, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 639, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 641, + "src": "1473:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 638, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1473:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1472:6:1" + }, + "scope": 703, + "src": "1425:54:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 648, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 644, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 643, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 648, + "src": "1503:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 642, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1503:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1502:20:1" + }, + "payable": false, + "returnParameters": { + "id": 647, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 646, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 648, + "src": "1548:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 645, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1548:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1547:14:1" + }, + "scope": 703, + "src": "1484:78:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 657, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 653, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 650, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 657, + "src": "1586:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 649, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1586:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 652, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 657, + "src": "1606:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 651, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1606:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1585:37:1" + }, + "payable": false, + "returnParameters": { + "id": 656, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 655, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 657, + "src": "1648:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 654, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1648:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1647:16:1" + }, + "scope": 703, + "src": "1567:97:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 666, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 662, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 659, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 666, + "src": "1687:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1687:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 661, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 666, + "src": "1699:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 660, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1699:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1686:25:1" + }, + "payable": false, + "returnParameters": { + "id": 665, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 664, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 666, + "src": "1728:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 663, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1728:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1727:14:1" + }, + "scope": 703, + "src": "1669:73:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 675, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 671, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 668, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1764:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 667, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1764:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 670, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1781:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 669, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1781:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1763:30:1" + }, + "payable": false, + "returnParameters": { + "id": 674, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 673, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1810:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 672, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1810:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1809:14:1" + }, + "scope": 703, + "src": "1747:77:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 686, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 682, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 677, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 686, + "src": "1851:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 676, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1851:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 679, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 686, + "src": "1865:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 678, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1865:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 681, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 686, + "src": "1877:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 680, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1877:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1850:39:1" + }, + "payable": false, + "returnParameters": { + "id": 685, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 684, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 686, + "src": "1906:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 683, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1906:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1905:14:1" + }, + "scope": 703, + "src": "1829:91:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 694, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 693, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 688, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 694, + "src": "1941:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 687, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1941:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 690, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 694, + "src": "1963:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 689, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1963:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 692, + "indexed": false, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 694, + "src": "1983:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 691, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1983:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1940:55:1" + }, + "src": "1926:70:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 702, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 701, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 696, + "indexed": true, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 702, + "src": "2016:26:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 695, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2016:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 698, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 702, + "src": "2044:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 697, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2044:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 700, + "indexed": false, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 702, + "src": "2069:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 699, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2069:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2015:66:1" + }, + "src": "2001:81:1" + } + ], + "scope": 1092, + "src": "1395:689:1" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 715, + "linearizedBaseContracts": [ + 715 + ], + "name": "ApproveAndCallFallBack", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 714, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "receiveApproval", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 712, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 705, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 714, + "src": "2416:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 704, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2416:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 707, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 714, + "src": "2430:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 706, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2430:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 709, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 714, + "src": "2446:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 708, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2446:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 711, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 714, + "src": "2461:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 710, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2461:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2415:57:1" + }, + "payable": false, + "returnParameters": { + "id": 713, + "nodeType": "ParameterList", + "parameters": [], + "src": "2479:0:1" + }, + "scope": 715, + "src": "2391:89:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1092, + "src": "2353:129:1" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 784, + "linearizedBaseContracts": [ + 784 + ], + "name": "Owned", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 717, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 784, + "src": "2684:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 716, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2684:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 719, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 784, + "src": "2710:23:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 718, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2710:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 725, + "name": "OwnershipTransferred", + "nodeType": "EventDefinition", + "parameters": { + "id": 724, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 721, + "indexed": true, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 725, + "src": "2767:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 720, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2767:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 723, + "indexed": true, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 725, + "src": "2790:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 722, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2790:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2766:44:1" + }, + "src": "2740:71:1" + }, + { + "body": { + "id": 733, + "nodeType": "Block", + "src": "2838:35:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 728, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "2848:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 729, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "2856:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2856:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2848:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 732, + "nodeType": "ExpressionStatement", + "src": "2848:18:1" + } + ] + }, + "documentation": null, + "id": 734, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 726, + "nodeType": "ParameterList", + "parameters": [], + "src": "2828:2:1" + }, + "payable": false, + "returnParameters": { + "id": 727, + "nodeType": "ParameterList", + "parameters": [], + "src": "2838:0:1" + }, + "scope": 784, + "src": "2817:56:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 744, + "nodeType": "Block", + "src": "2898:56:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 737, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "2916:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2916:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 739, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "2930:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2916:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 736, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "2908:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2908:28:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 742, + "nodeType": "ExpressionStatement", + "src": "2908:28:1" + }, + { + "id": 743, + "nodeType": "PlaceholderStatement", + "src": "2946:1:1" + } + ] + }, + "documentation": null, + "id": 745, + "name": "onlyOwner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 735, + "nodeType": "ParameterList", + "parameters": [], + "src": "2898:0:1" + }, + "src": "2879:75:1", + "visibility": "internal" + }, + { + "body": { + "id": 756, + "nodeType": "Block", + "src": "3023:37:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 752, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "3033:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 753, + "name": "_newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 747, + "src": "3044:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3033:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 755, + "nodeType": "ExpressionStatement", + "src": "3033:20:1" + } + ] + }, + "documentation": null, + "id": 757, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 750, + "modifierName": { + "argumentTypes": null, + "id": 749, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "3013:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3013:9:1" + } + ], + "name": "transferOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 748, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 747, + "name": "_newOwner", + "nodeType": "VariableDeclaration", + "scope": 757, + "src": "2987:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 746, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2987:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2986:19:1" + }, + "payable": false, + "returnParameters": { + "id": 751, + "nodeType": "ParameterList", + "parameters": [], + "src": "3023:0:1" + }, + "scope": 784, + "src": "2960:100:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 782, + "nodeType": "Block", + "src": "3099:157:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 761, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "3117:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3117:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 763, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "3131:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3117:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 760, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "3109:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3109:31:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 766, + "nodeType": "ExpressionStatement", + "src": "3109:31:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 768, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "3176:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 769, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "3183:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 767, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 725, + "src": "3155:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3155:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 771, + "nodeType": "EmitStatement", + "src": "3150:42:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 772, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "3202:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 773, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "3210:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3202:16:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 775, + "nodeType": "ExpressionStatement", + "src": "3202:16:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 776, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "3228:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3247:1:1", + "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": 777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3239:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3239:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3228:21:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 781, + "nodeType": "ExpressionStatement", + "src": "3228:21:1" + } + ] + }, + "documentation": null, + "id": 783, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "acceptOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 758, + "nodeType": "ParameterList", + "parameters": [], + "src": "3089:2:1" + }, + "payable": false, + "returnParameters": { + "id": 759, + "nodeType": "ParameterList", + "parameters": [], + "src": "3099:0:1" + }, + "scope": 784, + "src": "3065:191:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1092, + "src": "2663:595:1" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 785, + "name": "ERC20Interface", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 703, + "src": "3528:14:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$703", + "typeString": "contract ERC20Interface" + } + }, + "id": 786, + "nodeType": "InheritanceSpecifier", + "src": "3528:14:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 787, + "name": "Owned", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 784, + "src": "3544:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Owned_$784", + "typeString": "contract Owned" + } + }, + "id": 788, + "nodeType": "InheritanceSpecifier", + "src": "3544:5:1" + } + ], + "contractDependencies": [ + 703, + 784 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 1091, + "linearizedBaseContracts": [ + 1091, + 784, + 703 + ], + "name": "TestToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 791, + "libraryName": { + "contractScope": null, + "id": 789, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 636, + "src": "3562:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$636", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "3556:24:1", + "typeName": { + "id": 790, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3575:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 793, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 1091, + "src": "3586:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 792, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3586:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 795, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 1091, + "src": "3612:19:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 794, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3612:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 797, + "name": "decimals", + "nodeType": "VariableDeclaration", + "scope": 1091, + "src": "3637:21:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 796, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3637:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 799, + "name": "_totalSupply", + "nodeType": "VariableDeclaration", + "scope": 1091, + "src": "3664:17:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 798, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3664:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 803, + "name": "balances", + "nodeType": "VariableDeclaration", + "scope": 1091, + "src": "3688:33:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 802, + "keyType": { + "id": 800, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3696:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3688:24:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 801, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3707:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 809, + "name": "allowed", + "nodeType": "VariableDeclaration", + "scope": 1091, + "src": "3727:52:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 808, + "keyType": { + "id": 804, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3735:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3727:44:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 807, + "keyType": { + "id": 805, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3754:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3746:24:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 806, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3765:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 848, + "nodeType": "Block", + "src": "3987:235:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 812, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "3997:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "544b4e", + "id": 813, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4006:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9ee187a325c80a9ca820b4f297a58770bf5a85fede3756f8e7e9d14ff37d7b66", + "typeString": "literal_string \"TKN\"" + }, + "value": "TKN" + }, + "src": "3997:14:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 815, + "nodeType": "ExpressionStatement", + "src": "3997:14:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 816, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 795, + "src": "4021:4:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "546f6b656e204578616d706c65", + "id": 817, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4028:15:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e57db44f555e20abcea99743d90b2c763b40df4478f8c8195ecabb23fc906e9a", + "typeString": "literal_string \"Token Example\"" + }, + "value": "Token Example" + }, + "src": "4021:22:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 819, + "nodeType": "ExpressionStatement", + "src": "4021:22:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 820, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 797, + "src": "4053:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3138", + "id": 821, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4064:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "src": "4053:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 823, + "nodeType": "ExpressionStatement", + "src": "4053:13:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 824, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 799, + "src": "4076:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 825, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4091:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 826, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4101:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 828, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 797, + "src": "4110:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 827, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4105:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint" + }, + "id": 829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4105:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4101:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4091:28:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4076:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 833, + "nodeType": "ExpressionStatement", + "src": "4076:43:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 834, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "4129:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 836, + "indexExpression": { + "argumentTypes": null, + "id": 835, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "4138:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4129:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 837, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 799, + "src": "4147:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4129:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 839, + "nodeType": "ExpressionStatement", + "src": "4129:30:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4191:1:1", + "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": 841, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4183:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 843, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4183:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 844, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "4195:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 845, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 799, + "src": "4202:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 840, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 694, + "src": "4174:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4174:41:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 847, + "nodeType": "EmitStatement", + "src": "4169:46:1" + } + ] + }, + "documentation": null, + "id": 849, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 810, + "nodeType": "ParameterList", + "parameters": [], + "src": "3977:2:1" + }, + "payable": false, + "returnParameters": { + "id": 811, + "nodeType": "ParameterList", + "parameters": [], + "src": "3987:0:1" + }, + "scope": 1091, + "src": "3966:256:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 863, + "nodeType": "Block", + "src": "4459:62:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 856, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "4493:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 860, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4510:1:1", + "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": 857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4502:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 859, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4502:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4493:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 854, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 799, + "src": "4476:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 585, + "src": "4476:16:1", + "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": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4476:38:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 853, + "id": 862, + "nodeType": "Return", + "src": "4469:45:1" + } + ] + }, + "documentation": null, + "id": 864, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 850, + "nodeType": "ParameterList", + "parameters": [], + "src": "4429:2:1" + }, + "payable": false, + "returnParameters": { + "id": 853, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 852, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "4453:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 851, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4453:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4452:6:1" + }, + "scope": 1091, + "src": "4409:112:1", + "stateMutability": "view", + "superFunction": 641, + "visibility": "public" + }, + { + "body": { + "id": 875, + "nodeType": "Block", + "src": "4816:44:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 871, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "4833:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 873, + "indexExpression": { + "argumentTypes": null, + "id": 872, + "name": "tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 866, + "src": "4842:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4833:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 870, + "id": 874, + "nodeType": "Return", + "src": "4826:27:1" + } + ] + }, + "documentation": null, + "id": 876, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 867, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 866, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 876, + "src": "4761:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 865, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4761:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4760:20:1" + }, + "payable": false, + "returnParameters": { + "id": 870, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 869, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 876, + "src": "4802:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 868, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4802:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4801:14:1" + }, + "scope": 1091, + "src": "4742:118:1", + "stateMutability": "view", + "superFunction": 648, + "visibility": "public" + }, + { + "body": { + "id": 918, + "nodeType": "Block", + "src": "5276:189:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 885, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "5286:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 888, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 886, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "5295:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5295:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5286:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 894, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 880, + "src": "5334:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 889, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "5309:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 892, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 890, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "5318:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5318:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5309:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 585, + "src": "5309:24:1", + "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": 895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5309:32:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5286:55:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 897, + "nodeType": "ExpressionStatement", + "src": "5286:55:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 898, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "5351:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 900, + "indexExpression": { + "argumentTypes": null, + "id": 899, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "5360:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5351:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 905, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 880, + "src": "5383:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 901, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "5366:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 903, + "indexExpression": { + "argumentTypes": null, + "id": 902, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "5375:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5366:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 563, + "src": "5366:16:1", + "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": 906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5366:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5351:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 908, + "nodeType": "ExpressionStatement", + "src": "5351:39:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 910, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "5414:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5414:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 912, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "5426:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 913, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 880, + "src": "5430:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 909, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 694, + "src": "5405:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5405:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 915, + "nodeType": "EmitStatement", + "src": "5400:37:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5454:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 884, + "id": 917, + "nodeType": "Return", + "src": "5447:11:1" + } + ] + }, + "documentation": null, + "id": 919, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 881, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 878, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 919, + "src": "5221:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 877, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5221:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 880, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 919, + "src": "5233:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 879, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5233:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5220:25:1" + }, + "payable": false, + "returnParameters": { + "id": 884, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 883, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 919, + "src": "5262:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 882, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5262:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5261:14:1" + }, + "scope": 1091, + "src": "5203:262:1", + "stateMutability": "nonpayable", + "superFunction": 666, + "visibility": "public" + }, + { + "body": { + "id": 946, + "nodeType": "Block", + "src": "6048:127:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 928, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "6058:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 932, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 929, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "6066:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6066:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6058:19:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 933, + "indexExpression": { + "argumentTypes": null, + "id": 931, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 921, + "src": "6078:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6058:28:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 934, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "6089:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6058:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 936, + "nodeType": "ExpressionStatement", + "src": "6058:37:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 938, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "6119:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6119:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 940, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 921, + "src": "6131:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 941, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "6140:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 937, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "6110:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6110:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 943, + "nodeType": "EmitStatement", + "src": "6105:42:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 944, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6164:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 927, + "id": 945, + "nodeType": "Return", + "src": "6157:11:1" + } + ] + }, + "documentation": null, + "id": 947, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 924, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 921, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 947, + "src": "5988:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 920, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5988:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 923, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 947, + "src": "6005:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 922, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6005:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5987:30:1" + }, + "payable": false, + "returnParameters": { + "id": 927, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 926, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 947, + "src": "6034:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 925, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6034:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6033:14:1" + }, + "scope": 1091, + "src": "5971:204:1", + "stateMutability": "nonpayable", + "superFunction": 675, + "visibility": "public" + }, + { + "body": { + "id": 1005, + "nodeType": "Block", + "src": "6798:246:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 958, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "6808:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 960, + "indexExpression": { + "argumentTypes": null, + "id": 959, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "6817:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6808:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 965, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 953, + "src": "6844:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 961, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "6825:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 963, + "indexExpression": { + "argumentTypes": null, + "id": 962, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "6834:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6825:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 585, + "src": "6825:18:1", + "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": 966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6825:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6808:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 968, + "nodeType": "ExpressionStatement", + "src": "6808:43:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 969, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "6861:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 973, + "indexExpression": { + "argumentTypes": null, + "id": 970, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "6869:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6861:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 974, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 971, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "6875:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6875:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6861:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 982, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 953, + "src": "6919:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 975, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "6889:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 977, + "indexExpression": { + "argumentTypes": null, + "id": 976, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "6897:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6889:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 980, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 978, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "6903:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6903:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6889:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 585, + "src": "6889:29:1", + "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": 983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6889:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6861:65:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 985, + "nodeType": "ExpressionStatement", + "src": "6861:65:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 986, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "6936:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 988, + "indexExpression": { + "argumentTypes": null, + "id": 987, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 951, + "src": "6945:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6936:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 993, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 953, + "src": "6968:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 989, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "6951:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 991, + "indexExpression": { + "argumentTypes": null, + "id": 990, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 951, + "src": "6960:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6951:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 563, + "src": "6951:16:1", + "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": 994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6951:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6936:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 996, + "nodeType": "ExpressionStatement", + "src": "6936:39:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 998, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "6999:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 999, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 951, + "src": "7005:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1000, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 953, + "src": "7009:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 997, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 694, + "src": "6990:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6990:26:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1002, + "nodeType": "EmitStatement", + "src": "6985:31:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1003, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7033:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 957, + "id": 1004, + "nodeType": "Return", + "src": "7026:11:1" + } + ] + }, + "documentation": null, + "id": 1006, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 954, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 949, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1006, + "src": "6729:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 948, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6729:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 951, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1006, + "src": "6743:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 950, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6743:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 953, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 1006, + "src": "6755:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 952, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6755:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6728:39:1" + }, + "payable": false, + "returnParameters": { + "id": 957, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 956, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1006, + "src": "6784:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 955, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6784:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6783:14:1" + }, + "scope": 1091, + "src": "6707:337:1", + "stateMutability": "nonpayable", + "superFunction": 686, + "visibility": "public" + }, + { + "body": { + "id": 1021, + "nodeType": "Block", + "src": "7418:52:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1015, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "7435:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 1017, + "indexExpression": { + "argumentTypes": null, + "id": 1016, + "name": "tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1008, + "src": "7443:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7435:19:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1019, + "indexExpression": { + "argumentTypes": null, + "id": 1018, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1010, + "src": "7455:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7435:28:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1014, + "id": 1020, + "nodeType": "Return", + "src": "7428:35:1" + } + ] + }, + "documentation": null, + "id": 1022, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1011, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1008, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 1022, + "src": "7344:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1007, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7344:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1010, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1022, + "src": "7364:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1009, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7364:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7343:37:1" + }, + "payable": false, + "returnParameters": { + "id": 1014, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1013, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 1022, + "src": "7402:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1012, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7402:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7401:16:1" + }, + "scope": 1091, + "src": "7325:145:1", + "stateMutability": "view", + "superFunction": 657, + "visibility": "public" + }, + { + "body": { + "id": 1062, + "nodeType": "Block", + "src": "7926:216:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1033, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "7936:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 1037, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1034, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "7944:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7944:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7936:19:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1038, + "indexExpression": { + "argumentTypes": null, + "id": 1036, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1024, + "src": "7956:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7936:28:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1039, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1026, + "src": "7967:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7936:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1041, + "nodeType": "ExpressionStatement", + "src": "7936:37:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1043, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "7997:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7997:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1045, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1024, + "src": "8009:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1046, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1026, + "src": "8018:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1042, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "7988:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7988:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1048, + "nodeType": "EmitStatement", + "src": "7983:42:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1053, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "8083:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8083:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1055, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1026, + "src": "8095:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1056, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1137, + "src": "8103:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TestToken_$1091", + "typeString": "contract TestToken" + } + }, + { + "argumentTypes": null, + "id": 1057, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1028, + "src": "8109:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_TestToken_$1091", + "typeString": "contract TestToken" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1050, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1024, + "src": "8058:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1049, + "name": "ApproveAndCallFallBack", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "8035:22:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ApproveAndCallFallBack_$715_$", + "typeString": "type(contract ApproveAndCallFallBack)" + } + }, + "id": 1051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8035:31:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ApproveAndCallFallBack_$715", + "typeString": "contract ApproveAndCallFallBack" + } + }, + "id": 1052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "receiveApproval", + "nodeType": "MemberAccess", + "referencedDeclaration": 714, + "src": "8035:47:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,address,bytes memory) external" + } + }, + "id": 1058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8035:79:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1059, + "nodeType": "ExpressionStatement", + "src": "8035:79:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1060, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8131:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1032, + "id": 1061, + "nodeType": "Return", + "src": "8124:11:1" + } + ] + }, + "documentation": null, + "id": 1063, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approveAndCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1029, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1024, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1063, + "src": "7854:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1023, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7854:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1026, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 1063, + "src": "7871:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1025, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7871:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1028, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1063, + "src": "7884:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1027, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7884:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7853:42:1" + }, + "payable": false, + "returnParameters": { + "id": 1032, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1031, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1063, + "src": "7912:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1030, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7912:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7911:14:1" + }, + "scope": 1091, + "src": "7830:312:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1069, + "nodeType": "Block", + "src": "8360:25:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1066, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1111, + 1112 + ], + "referencedDeclaration": 1111, + "src": "8370:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8370:8:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1068, + "nodeType": "ExpressionStatement", + "src": "8370:8:1" + } + ] + }, + "documentation": null, + "id": 1070, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1064, + "nodeType": "ParameterList", + "parameters": [], + "src": "8342:2:1" + }, + "payable": true, + "returnParameters": { + "id": 1065, + "nodeType": "ParameterList", + "parameters": [], + "src": "8360:0:1" + }, + "scope": 1091, + "src": "8333:52:1", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1089, + "nodeType": "Block", + "src": "8723:76:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1085, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "8778:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1086, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1074, + "src": "8785:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1082, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1072, + "src": "8755:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1081, + "name": "ERC20Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 703, + "src": "8740:14:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Interface_$703_$", + "typeString": "type(contract ERC20Interface)" + } + }, + "id": 1083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8740:28:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$703", + "typeString": "contract ERC20Interface" + } + }, + "id": 1084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 666, + "src": "8740:37:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8740:52:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1080, + "id": 1088, + "nodeType": "Return", + "src": "8733:59:1" + } + ] + }, + "documentation": null, + "id": 1090, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1077, + "modifierName": { + "argumentTypes": null, + "id": 1076, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "8690:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8690:9:1" + } + ], + "name": "transferAnyERC20Token", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1072, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 1090, + "src": "8648:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1071, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8648:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1074, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 1090, + "src": "8670:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1073, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8670:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8647:35:1" + }, + "payable": false, + "returnParameters": { + "id": 1080, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1079, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1090, + "src": "8709:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1078, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8709:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8708:14:1" + }, + "scope": 1091, + "src": "8617:182:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1092, + "src": "3506:5295:1" + } + ], + "src": "0:8801:1" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/test/TestToken.sol", + "exportedSymbols": { + "ApproveAndCallFallBack": [ + 715 + ], + "ERC20Interface": [ + 703 + ], + "Owned": [ + 784 + ], + "SafeMath": [ + 636 + ], + "TestToken": [ + 1091 + ] + }, + "id": 1092, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 541, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:1" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": null, + "fullyImplemented": true, + "id": 636, + "linearizedBaseContracts": [ + 636 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 562, + "nodeType": "Block", + "src": "719:51:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 550, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 548, + "src": "729:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 551, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "733:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 552, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 545, + "src": "737:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "733:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "729:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 555, + "nodeType": "ExpressionStatement", + "src": "729:9:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 557, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 548, + "src": "756:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 558, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "761:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "756:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 556, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "748:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "748:15:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 561, + "nodeType": "ExpressionStatement", + "src": "748:15:1" + } + ] + }, + "documentation": null, + "id": 563, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 546, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 543, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 563, + "src": "672:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 542, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "672:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 545, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 563, + "src": "680:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 544, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "680:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "671:16:1" + }, + "payable": false, + "returnParameters": { + "id": 549, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 548, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 563, + "src": "711:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 547, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "711:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "710:8:1" + }, + "scope": 636, + "src": "659:111:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 584, + "nodeType": "Block", + "src": "835:51:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 573, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 567, + "src": "853:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 574, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "858:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "853:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 572, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "845:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "845:15:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 577, + "nodeType": "ExpressionStatement", + "src": "845:15:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 578, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 570, + "src": "870:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 579, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "874:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 580, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 567, + "src": "878:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "874:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "870:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 583, + "nodeType": "ExpressionStatement", + "src": "870:9:1" + } + ] + }, + "documentation": null, + "id": 585, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 565, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 585, + "src": "788:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 564, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "788:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 567, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 585, + "src": "796:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 566, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "796:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "787:16:1" + }, + "payable": false, + "returnParameters": { + "id": 571, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 570, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 585, + "src": "827:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 569, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "827:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "826:8:1" + }, + "scope": 636, + "src": "775:111:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 612, + "nodeType": "Block", + "src": "951:65:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 594, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 592, + "src": "961:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 595, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 587, + "src": "965:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 596, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 589, + "src": "969:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "965:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "961:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 599, + "nodeType": "ExpressionStatement", + "src": "961:9:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 601, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 587, + "src": "988:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "993:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "988:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 604, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 592, + "src": "998:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 605, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 587, + "src": "1002:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "998:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 607, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 589, + "src": "1007:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "998:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "988:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 600, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "980:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "980:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 611, + "nodeType": "ExpressionStatement", + "src": "980:29:1" + } + ] + }, + "documentation": null, + "id": 613, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 590, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 587, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 613, + "src": "904:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 586, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "904:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 589, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 613, + "src": "912:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 588, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "912:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "903:16:1" + }, + "payable": false, + "returnParameters": { + "id": 593, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 592, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 613, + "src": "943:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 591, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "943:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "942:8:1" + }, + "scope": 636, + "src": "891:125:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 634, + "nodeType": "Block", + "src": "1081:50:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 623, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 617, + "src": "1099:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1103:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1099:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 622, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "1091:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1091:14:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 627, + "nodeType": "ExpressionStatement", + "src": "1091:14:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 628, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 620, + "src": "1115:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 629, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 615, + "src": "1119:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 630, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 617, + "src": "1123:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1119:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1115:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 633, + "nodeType": "ExpressionStatement", + "src": "1115:9:1" + } + ] + }, + "documentation": null, + "id": 635, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 618, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 615, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 635, + "src": "1034:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 614, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1034:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 617, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 635, + "src": "1042:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 616, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1042:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1033:16:1" + }, + "payable": false, + "returnParameters": { + "id": 621, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 620, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 635, + "src": "1073:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 619, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1073:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1072:8:1" + }, + "scope": 636, + "src": "1021:110:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1092, + "src": "636:497:1" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 703, + "linearizedBaseContracts": [ + 703 + ], + "name": "ERC20Interface", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 641, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 637, + "nodeType": "ParameterList", + "parameters": [], + "src": "1445:2:1" + }, + "payable": false, + "returnParameters": { + "id": 640, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 639, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 641, + "src": "1473:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 638, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1473:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1472:6:1" + }, + "scope": 703, + "src": "1425:54:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 648, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 644, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 643, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 648, + "src": "1503:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 642, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1503:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1502:20:1" + }, + "payable": false, + "returnParameters": { + "id": 647, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 646, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 648, + "src": "1548:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 645, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1548:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1547:14:1" + }, + "scope": 703, + "src": "1484:78:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 657, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 653, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 650, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 657, + "src": "1586:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 649, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1586:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 652, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 657, + "src": "1606:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 651, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1606:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1585:37:1" + }, + "payable": false, + "returnParameters": { + "id": 656, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 655, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 657, + "src": "1648:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 654, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1648:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1647:16:1" + }, + "scope": 703, + "src": "1567:97:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 666, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 662, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 659, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 666, + "src": "1687:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1687:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 661, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 666, + "src": "1699:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 660, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1699:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1686:25:1" + }, + "payable": false, + "returnParameters": { + "id": 665, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 664, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 666, + "src": "1728:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 663, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1728:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1727:14:1" + }, + "scope": 703, + "src": "1669:73:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 675, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 671, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 668, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1764:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 667, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1764:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 670, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1781:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 669, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1781:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1763:30:1" + }, + "payable": false, + "returnParameters": { + "id": 674, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 673, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1810:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 672, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1810:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1809:14:1" + }, + "scope": 703, + "src": "1747:77:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 686, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 682, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 677, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 686, + "src": "1851:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 676, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1851:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 679, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 686, + "src": "1865:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 678, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1865:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 681, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 686, + "src": "1877:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 680, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1877:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1850:39:1" + }, + "payable": false, + "returnParameters": { + "id": 685, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 684, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 686, + "src": "1906:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 683, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1906:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1905:14:1" + }, + "scope": 703, + "src": "1829:91:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 694, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 693, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 688, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 694, + "src": "1941:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 687, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1941:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 690, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 694, + "src": "1963:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 689, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1963:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 692, + "indexed": false, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 694, + "src": "1983:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 691, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1983:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1940:55:1" + }, + "src": "1926:70:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 702, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 701, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 696, + "indexed": true, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 702, + "src": "2016:26:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 695, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2016:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 698, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 702, + "src": "2044:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 697, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2044:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 700, + "indexed": false, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 702, + "src": "2069:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 699, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2069:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2015:66:1" + }, + "src": "2001:81:1" + } + ], + "scope": 1092, + "src": "1395:689:1" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 715, + "linearizedBaseContracts": [ + 715 + ], + "name": "ApproveAndCallFallBack", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 714, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "receiveApproval", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 712, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 705, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 714, + "src": "2416:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 704, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2416:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 707, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 714, + "src": "2430:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 706, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2430:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 709, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 714, + "src": "2446:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 708, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2446:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 711, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 714, + "src": "2461:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 710, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2461:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2415:57:1" + }, + "payable": false, + "returnParameters": { + "id": 713, + "nodeType": "ParameterList", + "parameters": [], + "src": "2479:0:1" + }, + "scope": 715, + "src": "2391:89:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1092, + "src": "2353:129:1" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 784, + "linearizedBaseContracts": [ + 784 + ], + "name": "Owned", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 717, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 784, + "src": "2684:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 716, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2684:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 719, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 784, + "src": "2710:23:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 718, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2710:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 725, + "name": "OwnershipTransferred", + "nodeType": "EventDefinition", + "parameters": { + "id": 724, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 721, + "indexed": true, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 725, + "src": "2767:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 720, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2767:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 723, + "indexed": true, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 725, + "src": "2790:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 722, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2790:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2766:44:1" + }, + "src": "2740:71:1" + }, + { + "body": { + "id": 733, + "nodeType": "Block", + "src": "2838:35:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 728, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "2848:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 729, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "2856:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2856:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2848:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 732, + "nodeType": "ExpressionStatement", + "src": "2848:18:1" + } + ] + }, + "documentation": null, + "id": 734, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 726, + "nodeType": "ParameterList", + "parameters": [], + "src": "2828:2:1" + }, + "payable": false, + "returnParameters": { + "id": 727, + "nodeType": "ParameterList", + "parameters": [], + "src": "2838:0:1" + }, + "scope": 784, + "src": "2817:56:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 744, + "nodeType": "Block", + "src": "2898:56:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 737, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "2916:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2916:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 739, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "2930:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2916:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 736, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "2908:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2908:28:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 742, + "nodeType": "ExpressionStatement", + "src": "2908:28:1" + }, + { + "id": 743, + "nodeType": "PlaceholderStatement", + "src": "2946:1:1" + } + ] + }, + "documentation": null, + "id": 745, + "name": "onlyOwner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 735, + "nodeType": "ParameterList", + "parameters": [], + "src": "2898:0:1" + }, + "src": "2879:75:1", + "visibility": "internal" + }, + { + "body": { + "id": 756, + "nodeType": "Block", + "src": "3023:37:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 752, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "3033:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 753, + "name": "_newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 747, + "src": "3044:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3033:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 755, + "nodeType": "ExpressionStatement", + "src": "3033:20:1" + } + ] + }, + "documentation": null, + "id": 757, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 750, + "modifierName": { + "argumentTypes": null, + "id": 749, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "3013:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3013:9:1" + } + ], + "name": "transferOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 748, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 747, + "name": "_newOwner", + "nodeType": "VariableDeclaration", + "scope": 757, + "src": "2987:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 746, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2987:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2986:19:1" + }, + "payable": false, + "returnParameters": { + "id": 751, + "nodeType": "ParameterList", + "parameters": [], + "src": "3023:0:1" + }, + "scope": 784, + "src": "2960:100:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 782, + "nodeType": "Block", + "src": "3099:157:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 761, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "3117:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3117:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 763, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "3131:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3117:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 760, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1109, + 1110 + ], + "referencedDeclaration": 1109, + "src": "3109:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3109:31:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 766, + "nodeType": "ExpressionStatement", + "src": "3109:31:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 768, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "3176:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 769, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "3183:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 767, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 725, + "src": "3155:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3155:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 771, + "nodeType": "EmitStatement", + "src": "3150:42:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 772, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "3202:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 773, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "3210:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3202:16:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 775, + "nodeType": "ExpressionStatement", + "src": "3202:16:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 776, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "3228:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3247:1:1", + "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": 777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3239:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3239:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3228:21:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 781, + "nodeType": "ExpressionStatement", + "src": "3228:21:1" + } + ] + }, + "documentation": null, + "id": 783, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "acceptOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 758, + "nodeType": "ParameterList", + "parameters": [], + "src": "3089:2:1" + }, + "payable": false, + "returnParameters": { + "id": 759, + "nodeType": "ParameterList", + "parameters": [], + "src": "3099:0:1" + }, + "scope": 784, + "src": "3065:191:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1092, + "src": "2663:595:1" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 785, + "name": "ERC20Interface", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 703, + "src": "3528:14:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$703", + "typeString": "contract ERC20Interface" + } + }, + "id": 786, + "nodeType": "InheritanceSpecifier", + "src": "3528:14:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 787, + "name": "Owned", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 784, + "src": "3544:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Owned_$784", + "typeString": "contract Owned" + } + }, + "id": 788, + "nodeType": "InheritanceSpecifier", + "src": "3544:5:1" + } + ], + "contractDependencies": [ + 703, + 784 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 1091, + "linearizedBaseContracts": [ + 1091, + 784, + 703 + ], + "name": "TestToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 791, + "libraryName": { + "contractScope": null, + "id": 789, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 636, + "src": "3562:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$636", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "3556:24:1", + "typeName": { + "id": 790, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3575:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 793, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 1091, + "src": "3586:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 792, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3586:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 795, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 1091, + "src": "3612:19:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 794, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3612:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 797, + "name": "decimals", + "nodeType": "VariableDeclaration", + "scope": 1091, + "src": "3637:21:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 796, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3637:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 799, + "name": "_totalSupply", + "nodeType": "VariableDeclaration", + "scope": 1091, + "src": "3664:17:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 798, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3664:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 803, + "name": "balances", + "nodeType": "VariableDeclaration", + "scope": 1091, + "src": "3688:33:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 802, + "keyType": { + "id": 800, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3696:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3688:24:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 801, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3707:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 809, + "name": "allowed", + "nodeType": "VariableDeclaration", + "scope": 1091, + "src": "3727:52:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 808, + "keyType": { + "id": 804, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3735:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3727:44:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 807, + "keyType": { + "id": 805, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3754:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3746:24:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 806, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3765:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 848, + "nodeType": "Block", + "src": "3987:235:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 812, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 793, + "src": "3997:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "544b4e", + "id": 813, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4006:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9ee187a325c80a9ca820b4f297a58770bf5a85fede3756f8e7e9d14ff37d7b66", + "typeString": "literal_string \"TKN\"" + }, + "value": "TKN" + }, + "src": "3997:14:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 815, + "nodeType": "ExpressionStatement", + "src": "3997:14:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 816, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 795, + "src": "4021:4:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "546f6b656e204578616d706c65", + "id": 817, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4028:15:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e57db44f555e20abcea99743d90b2c763b40df4478f8c8195ecabb23fc906e9a", + "typeString": "literal_string \"Token Example\"" + }, + "value": "Token Example" + }, + "src": "4021:22:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 819, + "nodeType": "ExpressionStatement", + "src": "4021:22:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 820, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 797, + "src": "4053:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3138", + "id": 821, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4064:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "src": "4053:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 823, + "nodeType": "ExpressionStatement", + "src": "4053:13:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 824, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 799, + "src": "4076:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "31303030303030", + "id": 825, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4091:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 826, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4101:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 828, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 797, + "src": "4110:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 827, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4105:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint" + }, + "id": 829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4105:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4101:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4091:28:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4076:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 833, + "nodeType": "ExpressionStatement", + "src": "4076:43:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 834, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "4129:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 836, + "indexExpression": { + "argumentTypes": null, + "id": 835, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "4138:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4129:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 837, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 799, + "src": "4147:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4129:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 839, + "nodeType": "ExpressionStatement", + "src": "4129:30:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4191:1:1", + "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": 841, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4183:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 843, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4183:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 844, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "4195:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 845, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 799, + "src": "4202:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 840, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 694, + "src": "4174:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4174:41:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 847, + "nodeType": "EmitStatement", + "src": "4169:46:1" + } + ] + }, + "documentation": null, + "id": 849, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 810, + "nodeType": "ParameterList", + "parameters": [], + "src": "3977:2:1" + }, + "payable": false, + "returnParameters": { + "id": 811, + "nodeType": "ParameterList", + "parameters": [], + "src": "3987:0:1" + }, + "scope": 1091, + "src": "3966:256:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 863, + "nodeType": "Block", + "src": "4459:62:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 856, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "4493:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 860, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4510:1:1", + "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": 857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4502:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 859, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4502:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4493:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 854, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 799, + "src": "4476:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 585, + "src": "4476:16:1", + "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": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4476:38:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 853, + "id": 862, + "nodeType": "Return", + "src": "4469:45:1" + } + ] + }, + "documentation": null, + "id": 864, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 850, + "nodeType": "ParameterList", + "parameters": [], + "src": "4429:2:1" + }, + "payable": false, + "returnParameters": { + "id": 853, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 852, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 864, + "src": "4453:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 851, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4453:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4452:6:1" + }, + "scope": 1091, + "src": "4409:112:1", + "stateMutability": "view", + "superFunction": 641, + "visibility": "public" + }, + { + "body": { + "id": 875, + "nodeType": "Block", + "src": "4816:44:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 871, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "4833:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 873, + "indexExpression": { + "argumentTypes": null, + "id": 872, + "name": "tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 866, + "src": "4842:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4833:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 870, + "id": 874, + "nodeType": "Return", + "src": "4826:27:1" + } + ] + }, + "documentation": null, + "id": 876, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 867, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 866, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 876, + "src": "4761:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 865, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4761:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4760:20:1" + }, + "payable": false, + "returnParameters": { + "id": 870, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 869, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 876, + "src": "4802:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 868, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4802:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4801:14:1" + }, + "scope": 1091, + "src": "4742:118:1", + "stateMutability": "view", + "superFunction": 648, + "visibility": "public" + }, + { + "body": { + "id": 918, + "nodeType": "Block", + "src": "5276:189:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 885, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "5286:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 888, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 886, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "5295:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5295:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5286:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 894, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 880, + "src": "5334:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 889, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "5309:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 892, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 890, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "5318:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5318:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5309:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 585, + "src": "5309:24:1", + "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": 895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5309:32:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5286:55:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 897, + "nodeType": "ExpressionStatement", + "src": "5286:55:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 898, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "5351:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 900, + "indexExpression": { + "argumentTypes": null, + "id": 899, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "5360:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5351:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 905, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 880, + "src": "5383:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 901, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "5366:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 903, + "indexExpression": { + "argumentTypes": null, + "id": 902, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "5375:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5366:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 563, + "src": "5366:16:1", + "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": 906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5366:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5351:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 908, + "nodeType": "ExpressionStatement", + "src": "5351:39:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 910, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "5414:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5414:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 912, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "5426:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 913, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 880, + "src": "5430:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 909, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 694, + "src": "5405:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5405:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 915, + "nodeType": "EmitStatement", + "src": "5400:37:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5454:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 884, + "id": 917, + "nodeType": "Return", + "src": "5447:11:1" + } + ] + }, + "documentation": null, + "id": 919, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 881, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 878, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 919, + "src": "5221:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 877, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5221:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 880, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 919, + "src": "5233:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 879, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5233:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5220:25:1" + }, + "payable": false, + "returnParameters": { + "id": 884, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 883, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 919, + "src": "5262:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 882, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5262:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5261:14:1" + }, + "scope": 1091, + "src": "5203:262:1", + "stateMutability": "nonpayable", + "superFunction": 666, + "visibility": "public" + }, + { + "body": { + "id": 946, + "nodeType": "Block", + "src": "6048:127:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 928, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "6058:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 932, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 929, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "6066:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6066:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6058:19:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 933, + "indexExpression": { + "argumentTypes": null, + "id": 931, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 921, + "src": "6078:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6058:28:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 934, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "6089:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6058:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 936, + "nodeType": "ExpressionStatement", + "src": "6058:37:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 938, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "6119:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6119:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 940, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 921, + "src": "6131:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 941, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "6140:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 937, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "6110:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6110:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 943, + "nodeType": "EmitStatement", + "src": "6105:42:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 944, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6164:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 927, + "id": 945, + "nodeType": "Return", + "src": "6157:11:1" + } + ] + }, + "documentation": null, + "id": 947, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 924, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 921, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 947, + "src": "5988:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 920, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5988:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 923, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 947, + "src": "6005:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 922, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6005:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5987:30:1" + }, + "payable": false, + "returnParameters": { + "id": 927, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 926, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 947, + "src": "6034:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 925, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6034:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6033:14:1" + }, + "scope": 1091, + "src": "5971:204:1", + "stateMutability": "nonpayable", + "superFunction": 675, + "visibility": "public" + }, + { + "body": { + "id": 1005, + "nodeType": "Block", + "src": "6798:246:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 958, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "6808:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 960, + "indexExpression": { + "argumentTypes": null, + "id": 959, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "6817:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6808:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 965, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 953, + "src": "6844:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 961, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "6825:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 963, + "indexExpression": { + "argumentTypes": null, + "id": 962, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "6834:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6825:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 585, + "src": "6825:18:1", + "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": 966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6825:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6808:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 968, + "nodeType": "ExpressionStatement", + "src": "6808:43:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 969, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "6861:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 973, + "indexExpression": { + "argumentTypes": null, + "id": 970, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "6869:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6861:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 974, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 971, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "6875:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6875:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6861:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 982, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 953, + "src": "6919:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 975, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "6889:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 977, + "indexExpression": { + "argumentTypes": null, + "id": 976, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "6897:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6889:13:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 980, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 978, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "6903:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6903:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6889:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 585, + "src": "6889:29:1", + "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": 983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6889:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6861:65:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 985, + "nodeType": "ExpressionStatement", + "src": "6861:65:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 986, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "6936:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 988, + "indexExpression": { + "argumentTypes": null, + "id": 987, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 951, + "src": "6945:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6936:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 993, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 953, + "src": "6968:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 989, + "name": "balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "6951:8:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 991, + "indexExpression": { + "argumentTypes": null, + "id": 990, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 951, + "src": "6960:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6951:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 563, + "src": "6951:16:1", + "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": 994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6951:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6936:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 996, + "nodeType": "ExpressionStatement", + "src": "6936:39:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 998, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "6999:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 999, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 951, + "src": "7005:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1000, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 953, + "src": "7009:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 997, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 694, + "src": "6990:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6990:26:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1002, + "nodeType": "EmitStatement", + "src": "6985:31:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1003, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7033:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 957, + "id": 1004, + "nodeType": "Return", + "src": "7026:11:1" + } + ] + }, + "documentation": null, + "id": 1006, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 954, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 949, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1006, + "src": "6729:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 948, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6729:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 951, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1006, + "src": "6743:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 950, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6743:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 953, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 1006, + "src": "6755:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 952, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6755:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6728:39:1" + }, + "payable": false, + "returnParameters": { + "id": 957, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 956, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1006, + "src": "6784:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 955, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6784:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6783:14:1" + }, + "scope": 1091, + "src": "6707:337:1", + "stateMutability": "nonpayable", + "superFunction": 686, + "visibility": "public" + }, + { + "body": { + "id": 1021, + "nodeType": "Block", + "src": "7418:52:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1015, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "7435:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 1017, + "indexExpression": { + "argumentTypes": null, + "id": 1016, + "name": "tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1008, + "src": "7443:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7435:19:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1019, + "indexExpression": { + "argumentTypes": null, + "id": 1018, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1010, + "src": "7455:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7435:28:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1014, + "id": 1020, + "nodeType": "Return", + "src": "7428:35:1" + } + ] + }, + "documentation": null, + "id": 1022, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1011, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1008, + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 1022, + "src": "7344:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1007, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7344:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1010, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1022, + "src": "7364:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1009, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7364:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7343:37:1" + }, + "payable": false, + "returnParameters": { + "id": 1014, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1013, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 1022, + "src": "7402:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1012, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7402:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7401:16:1" + }, + "scope": 1091, + "src": "7325:145:1", + "stateMutability": "view", + "superFunction": 657, + "visibility": "public" + }, + { + "body": { + "id": 1062, + "nodeType": "Block", + "src": "7926:216:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1033, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "7936:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 1037, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1034, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "7944:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7944:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7936:19:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1038, + "indexExpression": { + "argumentTypes": null, + "id": 1036, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1024, + "src": "7956:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7936:28:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1039, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1026, + "src": "7967:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7936:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1041, + "nodeType": "ExpressionStatement", + "src": "7936:37:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1043, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "7997:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7997:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1045, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1024, + "src": "8009:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1046, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1026, + "src": "8018:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1042, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "7988:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7988:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1048, + "nodeType": "EmitStatement", + "src": "7983:42:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1053, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "8083:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8083:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1055, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1026, + "src": "8095:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1056, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1137, + "src": "8103:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TestToken_$1091", + "typeString": "contract TestToken" + } + }, + { + "argumentTypes": null, + "id": 1057, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1028, + "src": "8109:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_TestToken_$1091", + "typeString": "contract TestToken" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1050, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1024, + "src": "8058:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1049, + "name": "ApproveAndCallFallBack", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "8035:22:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ApproveAndCallFallBack_$715_$", + "typeString": "type(contract ApproveAndCallFallBack)" + } + }, + "id": 1051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8035:31:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ApproveAndCallFallBack_$715", + "typeString": "contract ApproveAndCallFallBack" + } + }, + "id": 1052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "receiveApproval", + "nodeType": "MemberAccess", + "referencedDeclaration": 714, + "src": "8035:47:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,address,bytes memory) external" + } + }, + "id": 1058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8035:79:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1059, + "nodeType": "ExpressionStatement", + "src": "8035:79:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1060, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8131:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1032, + "id": 1061, + "nodeType": "Return", + "src": "8124:11:1" + } + ] + }, + "documentation": null, + "id": 1063, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approveAndCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1029, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1024, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1063, + "src": "7854:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1023, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7854:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1026, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 1063, + "src": "7871:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1025, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "7871:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1028, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1063, + "src": "7884:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1027, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7884:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7853:42:1" + }, + "payable": false, + "returnParameters": { + "id": 1032, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1031, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1063, + "src": "7912:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1030, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7912:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7911:14:1" + }, + "scope": 1091, + "src": "7830:312:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1069, + "nodeType": "Block", + "src": "8360:25:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1066, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1111, + 1112 + ], + "referencedDeclaration": 1111, + "src": "8370:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8370:8:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1068, + "nodeType": "ExpressionStatement", + "src": "8370:8:1" + } + ] + }, + "documentation": null, + "id": 1070, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1064, + "nodeType": "ParameterList", + "parameters": [], + "src": "8342:2:1" + }, + "payable": true, + "returnParameters": { + "id": 1065, + "nodeType": "ParameterList", + "parameters": [], + "src": "8360:0:1" + }, + "scope": 1091, + "src": "8333:52:1", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1089, + "nodeType": "Block", + "src": "8723:76:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1085, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "8778:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1086, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1074, + "src": "8785:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1082, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1072, + "src": "8755:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1081, + "name": "ERC20Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 703, + "src": "8740:14:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Interface_$703_$", + "typeString": "type(contract ERC20Interface)" + } + }, + "id": 1083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8740:28:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Interface_$703", + "typeString": "contract ERC20Interface" + } + }, + "id": 1084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 666, + "src": "8740:37:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8740:52:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1080, + "id": 1088, + "nodeType": "Return", + "src": "8733:59:1" + } + ] + }, + "documentation": null, + "id": 1090, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1077, + "modifierName": { + "argumentTypes": null, + "id": 1076, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "8690:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8690:9:1" + } + ], + "name": "transferAnyERC20Token", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1072, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 1090, + "src": "8648:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1071, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8648:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1074, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 1090, + "src": "8670:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1073, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8670:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8647:35:1" + }, + "payable": false, + "returnParameters": { + "id": 1080, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1079, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1090, + "src": "8709:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1078, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8709:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8708:14:1" + }, + "scope": 1091, + "src": "8617:182:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1092, + "src": "3506:5295:1" + } + ], + "src": "0:8801:1" + }, + "compiler": { + "name": "solc", + "version": "0.4.24+commit.e67f0147.Emscripten.clang" + }, + "networks": { + "1531736519464": { + "events": {}, + "links": {}, + "address": "0xc7a8e338efc11284d8d00251dfcdacb4c203756b", + "transactionHash": "0xaff97a755f2e7633c7f63f3409580fdf571961c6318ae6ec17f77287d80bb4e8" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-07-17T07:07:22.326Z" +} \ No newline at end of file diff --git a/src/assets/icons/icon_etherTokens.svg b/src/assets/icons/icon_etherTokens.svg new file mode 100644 index 0000000000..235beb548b --- /dev/null +++ b/src/assets/icons/icon_etherTokens.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + diff --git a/src/components/Stepper/Controls/index.jsx b/src/components/Stepper/Controls/index.jsx index ebcbd2cf51..fd96b62d80 100644 --- a/src/components/Stepper/Controls/index.jsx +++ b/src/components/Stepper/Controls/index.jsx @@ -6,16 +6,16 @@ type ControlProps = { next: string, onPrevious: () => void, firstPage: boolean, - submitting: boolean, + disabled: boolean, } const ControlButtons = ({ - next, firstPage, onPrevious, submitting, + next, firstPage, onPrevious, disabled, }: ControlProps) => ( @@ -37,16 +37,16 @@ type Props = { onPrevious: () => void, firstPage: boolean, lastPage: boolean, - submitting: boolean, + disabled: boolean, } const Controls = ({ - finishedTx, finishedButton, onPrevious, firstPage, lastPage, submitting, + finishedTx, finishedButton, onPrevious, firstPage, lastPage, disabled, }: Props) => ( finishedTx ? {finishedButton} : void, - onSubmit: (values: Object, form: FormApi, callback: ?(errors: ?Object) => void) => ?Object | Promise | void, + onSubmit: (values: Object) => Promise, } type State = { @@ -31,6 +31,7 @@ type State = { type PageProps = { children: Function, + prepareNextInitialProps: (values: Object) => {}, } class GnoStepper extends React.PureComponent { @@ -63,8 +64,10 @@ class GnoStepper extends React.PureComponent { })) } + getPageProps = (pages: React$Node): PageProps => React.Children.toArray(pages)[this.state.page].props + getActivePageFrom = (pages: React$Node) => { - const activePageProps = React.Children.toArray(pages)[this.state.page].props + const activePageProps = this.getPageProps(pages) const { children, ...props } = activePageProps return children(props) @@ -77,18 +80,28 @@ class GnoStepper extends React.PureComponent { return activePage.props.validate ? activePage.props.validate(values) : {} } - next = (values: Object) => + next = async (values: Object) => { + const activePageProps = this.getPageProps(this.props.children) + const { prepareNextInitialProps } = activePageProps + + let pageInitialProps + if (prepareNextInitialProps) { + pageInitialProps = await prepareNextInitialProps(values) + } + + const finalValues = { ...values, ...pageInitialProps } this.setState(state => ({ page: Math.min(state.page + 1, React.Children.count(this.props.children) - 1), - values, + values: finalValues, })) + } previous = () => this.setState(state => ({ page: Math.max(state.page - 1, 0), })) - handleSubmit = (values: Object) => { + handleSubmit = async (values: Object) => { const { children, onSubmit } = this.props const { page } = this.state const isLastPage = page === React.Children.count(children) - 1 @@ -101,7 +114,7 @@ class GnoStepper extends React.PureComponent { render() { const { - steps, children, finishedTransaction, finishedButton, classes, + steps, children, finishedTransaction, finishedButton, classes, disabledWhenValidating = false, } = this.props const { page, values } = this.state const activePage = this.getActivePageFrom(children) @@ -124,20 +137,24 @@ class GnoStepper extends React.PureComponent { validation={this.validate} render={activePage} > - {(submitting: boolean) => ( - - - - - - )} + {(submitting: boolean, validating: boolean) => { + const disabled = disabledWhenValidating ? submitting || validating : submitting + + return ( + + + + + + ) + }} ) diff --git a/src/components/forms/Field/index.jsx b/src/components/forms/Field/index.jsx index 4d923e61c4..e9179dda75 100644 --- a/src/components/forms/Field/index.jsx +++ b/src/components/forms/Field/index.jsx @@ -1,4 +1,8 @@ // @flow +import * as React from 'react' import { Field } from 'react-final-form' -export default Field +// $FlowFixMe +const GnoField = ({ ...props }): React.Element<*> => + +export default GnoField diff --git a/src/components/forms/GnoForm/index.jsx b/src/components/forms/GnoForm/index.jsx index 7dc29a354e..9a0a5e766d 100644 --- a/src/components/forms/GnoForm/index.jsx +++ b/src/components/forms/GnoForm/index.jsx @@ -1,10 +1,16 @@ // @flow import * as React from 'react' +import { type FormApi } from 'final-form' import { Form } from 'react-final-form' -import type { FormApi } from 'react-final-form' + +export type OnSubmit = ( + values: Object, + form: FormApi, + callback: ?(errors: ?Object) => ?Object +) => ?Object | Promise | void type Props = { - onSubmit: (values: Object, form: FormApi, callback: ?(errors: ?Object) => void) => ?Object | Promise | void, + onSubmit: OnSubmit, children: Function, padding: number, validation?: (values: Object) => Object | Promise, @@ -29,7 +35,7 @@ const GnoForm = ({ render={({ handleSubmit, ...rest }) => (
{render(rest)} - {children(rest.submitting, rest.submitSucceeded)} + {children(rest.submitting, rest.validating)}
)} /> diff --git a/src/components/forms/validator.js b/src/components/forms/validator.js index ba609f24a5..b921f1030f 100644 --- a/src/components/forms/validator.js +++ b/src/components/forms/validator.js @@ -1,7 +1,8 @@ // @flow import { getWeb3 } from '~/wallets/getWeb3' +import { type FieldValidator } from 'final-form' -type Field = boolean | string +type Field = boolean | string | null | typeof undefined export const required = (value: Field) => (value ? undefined : 'Required') @@ -19,6 +20,16 @@ export const greaterThan = (min: number) => (value: string) => { return `Should be greater than ${min}` } +const regexQuery = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,}))\.?)(?::\d{2,5})?(?:[/?#]\S*)?$/i +const url = new RegExp(regexQuery) +export const mustBeUrl = (value: string) => { + if (url.test(value)) { + return undefined + } + + return 'Please, provide a valid url' +} + export const minValue = (min: number) => (value: string) => { if (Number.isNaN(Number(value)) || Number.parseFloat(value) >= Number(min)) { return undefined @@ -48,15 +59,15 @@ export const ADDRESS_REPEATED_ERROR = 'Address already introduced' export const uniqueAddress = (addresses: string[]) => (value: string) => (addresses.includes(value) ? ADDRESS_REPEATED_ERROR : undefined) -export const composeValidators = (...validators: Function[]) => (value: Field) => +export const composeValidators = (...validators: Function[]): FieldValidator => (value: Field) => validators.reduce((error, validator) => error || validator(value), undefined) -export const inLimit = (limit: number, base: number, baseText: string) => (value: string) => { +export const inLimit = (limit: number, base: number, baseText: string, symbol: string = 'ETH') => (value: string) => { const amount = Number(value) const max = limit - base if (amount <= max) { return undefined } - return `Should not exceed ${max} ETH (amount to reach ${baseText})` + return `Should not exceed ${max} ${symbol} (amount to reach ${baseText})` } diff --git a/src/routes/index.js b/src/routes/index.js index 4bc05bb065..42b6f74cdc 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -4,13 +4,18 @@ import Loadable from 'react-loadable' import { Switch, Redirect, Route } from 'react-router-dom' import Loader from '~/components/Loader' import Welcome from './welcome/container' -import { SAFELIST_ADDRESS, OPEN_ADDRESS, SAFE_PARAM_ADDRESS, WELCOME_ADDRESS } from './routes' +import { SAFELIST_ADDRESS, OPEN_ADDRESS, SAFE_PARAM_ADDRESS, WELCOME_ADDRESS, SETTINS_ADDRESS } from './routes' const Safe = Loadable({ loader: () => import('./safe/container'), loading: Loader, }) +const Settings = Loadable({ + loader: () => import('./tokens/container'), + loading: Loader, +}) + const SafeList = Loadable({ loader: () => import('./safeList/container'), loading: Loader, @@ -22,6 +27,9 @@ const Open = Loadable({ }) const SAFE_ADDRESS = `${SAFELIST_ADDRESS}/:${SAFE_PARAM_ADDRESS}` +const SAFE_SETTINGS = `${SAFE_ADDRESS}${SETTINS_ADDRESS}` + +export const settingsUrlFrom = (safeAddress: string) => `${SAFELIST_ADDRESS}/${safeAddress}/settings` const Routes = () => ( @@ -30,6 +38,7 @@ const Routes = () => ( + ) diff --git a/src/routes/open/components/Layout.jsx b/src/routes/open/components/Layout.jsx index 44f8620ba0..d50bdbde16 100644 --- a/src/routes/open/components/Layout.jsx +++ b/src/routes/open/components/Layout.jsx @@ -1,6 +1,5 @@ // @flow import * as React from 'react' -import type { FormApi } from 'react-final-form' import Stepper from '~/components/Stepper' import Confirmation from '~/routes/open/components/FormConfirmation' import Review from '~/routes/open/components/ReviewInformation' @@ -21,8 +20,7 @@ type Props = { userAccount: string, safeAddress: string, safeTx: string, - onCallSafeContractSubmit: (values: Object, form: FormApi, callback: ?(errors: ?Object) => void) - => ?Object | Promise | void, + onCallSafeContractSubmit: (values: Object) => Promise, } const Layout = ({ diff --git a/src/routes/open/components/Layout.stories.js b/src/routes/open/components/Layout.stories.js index 4525f6847d..c3a6af9040 100644 --- a/src/routes/open/components/Layout.stories.js +++ b/src/routes/open/components/Layout.stories.js @@ -26,7 +26,7 @@ storiesOf('Routes /open', module) getProviderInfo() const provider = 'METAMASK' const userAccount = '0x03db1a8b26d08df23337e9276a36b474510f0023' - const onCallSafeContractSubmit = async (values: Object) => { + const onCallSafeContractSubmit = async (values: Object): Promise => { const accounts = getAccountsFrom(values) const numConfirmations = getThresholdFrom(values) const data = { diff --git a/src/routes/open/components/SafeForm/Confirmations/index.jsx b/src/routes/open/components/SafeForm/Confirmations/index.jsx index b757faa615..011157913c 100644 --- a/src/routes/open/components/SafeForm/Confirmations/index.jsx +++ b/src/routes/open/components/SafeForm/Confirmations/index.jsx @@ -1,6 +1,6 @@ // @flow import * as React from 'react' -import { Field } from 'react-final-form' +import Field from '~/components/forms/Field' import TextField from '~/components/forms/TextField' import { composeValidators, minValue, mustBeInteger, required } from '~/components/forms/validator' import Block from '~/components/layout/Block' diff --git a/src/routes/open/components/SafeForm/Confirmations/index.test.js b/src/routes/open/components/SafeForm/Confirmations/index.test.js index 31ee2b2e6c..3296dea30a 100644 --- a/src/routes/open/components/SafeForm/Confirmations/index.test.js +++ b/src/routes/open/components/SafeForm/Confirmations/index.test.js @@ -8,7 +8,7 @@ import { getProviderInfo } from '~/wallets/getWeb3' import Wrapper from '~/test/utils/Wrapper' import { CONFIRMATIONS_ERROR } from '~/routes/open/components/SafeForm' -const obSubmitMock = () => {} +const onSubmitMock = async (): Promise => {} describe('React DOM TESTS > Create Safe form', () => { let open @@ -25,7 +25,7 @@ describe('React DOM TESTS > Create Safe form', () => { userAccount="foo" safeAddress="" safeTx="" - onCallSafeContractSubmit={obSubmitMock} + onCallSafeContractSubmit={onSubmitMock} /> )) diff --git a/src/routes/open/container/Open.jsx b/src/routes/open/container/Open.jsx index 009eefa02a..0c0e0e5065 100644 --- a/src/routes/open/container/Open.jsx +++ b/src/routes/open/container/Open.jsx @@ -16,12 +16,12 @@ type Props = Actions & { userAccount: string, } -type State = { +export type OpenState = { safeAddress: string, safeTx: string, } -const createSafe = async (values: Object, userAccount: string, addSafe: AddSafe): Promise => { +export const createSafe = async (values: Object, userAccount: string, addSafe: AddSafe): Promise => { const accounts = getAccountsFrom(values) const numConfirmations = getThresholdFrom(values) const name = getSafeNameFrom(values) @@ -43,7 +43,7 @@ const createSafe = async (values: Object, userAccount: string, addSafe: AddSafe) return { safeAddress: safeContract.address, safeTx: safe } } -class Open extends React.Component { +class Open extends React.Component { constructor() { super() diff --git a/src/routes/routes.js b/src/routes/routes.js index ed52162771..4ab227a378 100644 --- a/src/routes/routes.js +++ b/src/routes/routes.js @@ -3,3 +3,4 @@ export const SAFE_PARAM_ADDRESS = 'address' export const SAFELIST_ADDRESS = '/safes' export const OPEN_ADDRESS = '/open' export const WELCOME_ADDRESS = '/welcome' +export const SETTINS_ADDRESS = '/settings' diff --git a/src/routes/safe/component/AddOwner/index.jsx b/src/routes/safe/component/AddOwner/index.jsx index ee31bcdd07..dcc3fb5346 100644 --- a/src/routes/safe/component/AddOwner/index.jsx +++ b/src/routes/safe/component/AddOwner/index.jsx @@ -5,7 +5,7 @@ import Stepper from '~/components/Stepper' import { connect } from 'react-redux' import { type Safe } from '~/routes/safe/store/model/safe' import { type Owner, makeOwner } from '~/routes/safe/store/model/owner' -import { getSafeEthereumInstance, createTransaction } from '~/routes/safe/component/AddTransaction/createTransactions' +import { getSafeEthereumInstance, createTransaction } from '~/wallets/createTransactions' import { setOwners } from '~/utils/localStorage' import AddOwnerForm, { NAME_PARAM, OWNER_ADDRESS_PARAM, INCREASE_PARAM } from './AddOwnerForm' import Review from './Review' @@ -35,6 +35,18 @@ const getOwnerAddressesFrom = (owners: List) => { return owners.map((owner: Owner) => owner.get('address')) } +export const addOwner = async (values: Object, safe: Safe, threshold: number, executor: string) => { + const nonce = Date.now() + const newThreshold = values[INCREASE_PARAM] ? threshold + 1 : threshold + const newOwnerAddress = values[OWNER_ADDRESS_PARAM] + const newOwnerName = values[NAME_PARAM] + const safeAddress = safe.get('address') + const gnosisSafe = await getSafeEthereumInstance(safeAddress) + const data = gnosisSafe.contract.addOwnerWithThreshold.getData(newOwnerAddress, newThreshold) + await createTransaction(safe, `Add Owner ${newOwnerName}`, safeAddress, 0, nonce, executor, data) + setOwners(safeAddress, safe.get('owners').push(makeOwner({ name: newOwnerName, address: newOwnerAddress }))) +} + class AddOwner extends React.Component { state = { done: false, @@ -45,15 +57,7 @@ class AddOwner extends React.Component { const { safe, threshold, userAddress, fetchTransactions, } = this.props - const nonce = Date.now() - const newThreshold = values[INCREASE_PARAM] ? threshold + 1 : threshold - const newOwnerAddress = values[OWNER_ADDRESS_PARAM] - const newOwnerName = values[NAME_PARAM] - const safeAddress = safe.get('address') - const gnosisSafe = await getSafeEthereumInstance(safeAddress) - const data = gnosisSafe.contract.addOwnerWithThreshold.getData(newOwnerAddress, newThreshold) - await createTransaction(safe, `Add Owner ${newOwnerName}`, safeAddress, 0, nonce, userAddress, data) - setOwners(safeAddress, safe.get('owners').push(makeOwner({ name: newOwnerName, address: newOwnerAddress }))) + await addOwner(values, safe, threshold, userAddress) fetchTransactions() this.setState({ done: true }) } catch (error) { diff --git a/src/routes/safe/component/AddTransaction/MultisigForm/MultisigForm.stories.js b/src/routes/safe/component/AddTransaction/MultisigForm/MultisigForm.stories.js deleted file mode 100644 index 6c65ab2683..0000000000 --- a/src/routes/safe/component/AddTransaction/MultisigForm/MultisigForm.stories.js +++ /dev/null @@ -1,29 +0,0 @@ -// @flow -import { storiesOf } from '@storybook/react' -import * as React from 'react' -import Stepper from '~/components/Stepper' -import styles from '~/components/layout/PageFrame/index.scss' -import MultisigForm from './index' - - -const FrameDecorator = story => ( -
- { story() } -
-) - -storiesOf('Components', module) - .addDecorator(FrameDecorator) - .add('MultisigForm', () => ( - } - onSubmit={() => {}} - steps={['Multisig TX Form', 'Review TX']} - onReset={() => {}} - > - - { MultisigForm } - - - )) diff --git a/src/routes/safe/component/AddTransaction/index.jsx b/src/routes/safe/component/AddTransaction/index.jsx deleted file mode 100644 index 8acf7df86c..0000000000 --- a/src/routes/safe/component/AddTransaction/index.jsx +++ /dev/null @@ -1,84 +0,0 @@ -// @flow -import * as React from 'react' -import { connect } from 'react-redux' -import Stepper from '~/components/Stepper' -import { sleep } from '~/utils/timer' -import { type Safe } from '~/routes/safe/store/model/safe' -import actions, { type Actions } from './actions' -import selector, { type SelectorProps } from './selector' -import { createTransaction, TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from './createTransactions' -import MultisigForm from './MultisigForm' -import ReviewTx from './ReviewTx' - -const getSteps = () => [ - 'Fill Mutlisig Tx form', 'Review Tx', -] - -type Props = SelectorProps & Actions & { - safe: Safe, - balance: number, - onReset: () => void, -} - -type State = { - done: boolean, -} - -export const SEE_TXS_BUTTON_TEXT = 'VISIT TXS' - -class AddTransaction extends React.Component { - state = { - done: false, - } - - onTransaction = async (values: Object) => { - try { - const { safe, userAddress } = this.props - const nonce = Date.now() - const destination = values[TX_DESTINATION_PARAM] - const value = values[TX_VALUE_PARAM] - const name = values[TX_NAME_PARAM] - await createTransaction(safe, name, destination, value, nonce, userAddress) - await sleep(1500) - this.props.fetchTransactions() - this.setState({ done: true }) - } catch (error) { - this.setState({ done: false }) - // eslint-disable-next-line - console.log('Error while creating multisig tx ' + error) - } - } - - onReset = () => { - this.setState({ done: false }) - this.props.onReset() // This is for show the TX list component - } - - render() { - const { done } = this.state - const { balance } = this.props - const steps = getSteps() - const finishedButton = - - return ( - - - - { MultisigForm } - - - { ReviewTx } - - - - ) - } -} - -export default connect(selector, actions)(AddTransaction) diff --git a/src/routes/safe/component/AddTransaction/test/transactions.builder.js b/src/routes/safe/component/AddTransaction/test/transactions.builder.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/routes/safe/component/EditDailyLimit/index.jsx b/src/routes/safe/component/EditDailyLimit/index.jsx index d5e9f5870f..fed1ef4eaf 100644 --- a/src/routes/safe/component/EditDailyLimit/index.jsx +++ b/src/routes/safe/component/EditDailyLimit/index.jsx @@ -2,7 +2,7 @@ import * as React from 'react' import Stepper from '~/components/Stepper' import { connect } from 'react-redux' -import { createTransaction } from '~/routes/safe/component/AddTransaction/createTransactions' +import { createTransaction } from '~/wallets/createTransactions' import { getEditDailyLimitData, getDailyLimitAddress } from '~/routes/safe/component/Withdraw/withdraw' import { type Safe } from '~/routes/safe/store/model/safe' import EditDailyLimitForm, { EDIT_DAILY_LIMIT_PARAM } from './EditDailyLimitForm' diff --git a/src/routes/safe/component/Layout.jsx b/src/routes/safe/component/Layout.jsx index d818ec841b..231731cf63 100644 --- a/src/routes/safe/component/Layout.jsx +++ b/src/routes/safe/component/Layout.jsx @@ -7,11 +7,11 @@ import GnoSafe from './Safe' type Props = SelectorProps const Layout = ({ - safe, balance, provider, userAddress, + safe, activeTokens, provider, userAddress, }: Props) => ( { safe - ? + ? : } diff --git a/src/routes/safe/component/Layout.stories.js b/src/routes/safe/component/Layout.stories.js index 97ec777ab8..08bd8423e9 100644 --- a/src/routes/safe/component/Layout.stories.js +++ b/src/routes/safe/component/Layout.stories.js @@ -1,8 +1,10 @@ // @flow import { storiesOf } from '@storybook/react' import * as React from 'react' +import { List } from 'immutable' import styles from '~/components/layout/PageFrame/index.scss' import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' +import { makeToken } from '~/routes/tokens/store/model/token' import Component from './Layout' @@ -12,6 +14,15 @@ const FrameDecorator = story => ( ) +const ethBalance = makeToken({ + address: '0', + name: 'Ether', + symbol: 'ETH', + decimals: 18, + logoUrl: 'assets/icons/icon_etherTokens.svg', + funds: '2', +}) + storiesOf('Routes /safe:address', module) .addDecorator(FrameDecorator) .add('Safe undefined being connected', () => ( @@ -19,7 +30,7 @@ storiesOf('Routes /safe:address', module) userAddress="foo" safe={undefined} provider="METAMASK" - balance="0" + activeTokens={List([])} fetchBalance={() => {}} /> )) @@ -28,7 +39,7 @@ storiesOf('Routes /safe:address', module) userAddress="foo" safe={undefined} provider="" - balance="0" + activeTokens={List([])} fetchBalance={() => {}} /> )) @@ -40,7 +51,7 @@ storiesOf('Routes /safe:address', module) userAddress="foo" safe={safe} provider="METAMASK" - balance="2" + activeTokens={List([]).push(ethBalance)} fetchBalance={() => {}} /> ) @@ -53,7 +64,7 @@ storiesOf('Routes /safe:address', module) userAddress="foo" safe={safe} provider="METAMASK" - balance="2" + activeTokens={List([]).push(ethBalance)} fetchBalance={() => {}} /> ) diff --git a/src/routes/safe/component/RemoveOwner/index.jsx b/src/routes/safe/component/RemoveOwner/index.jsx index c35d4da72a..25af2595bd 100644 --- a/src/routes/safe/component/RemoveOwner/index.jsx +++ b/src/routes/safe/component/RemoveOwner/index.jsx @@ -3,7 +3,7 @@ import * as React from 'react' import Stepper from '~/components/Stepper' import { connect } from 'react-redux' import { type Safe } from '~/routes/safe/store/model/safe' -import { getSafeEthereumInstance, createTransaction } from '~/routes/safe/component/AddTransaction/createTransactions' +import { getSafeEthereumInstance, createTransaction } from '~/wallets/createTransactions' import RemoveOwnerForm, { DECREASE_PARAM } from './RemoveOwnerForm' import Review from './Review' import selector, { type SelectorProps } from './selector' @@ -27,11 +27,32 @@ type State = { const SENTINEL_ADDRESS = '0x0000000000000000000000000000000000000001' export const REMOVE_OWNER_RESET_BUTTON_TEXT = 'RESET' -const initialValuesFrom = (decreaseMandatory: boolean = false) => ({ +export const initialValuesFrom = (decreaseMandatory: boolean = false) => ({ [DECREASE_PARAM]: decreaseMandatory, }) -const shouldDecrease = (numOwners: number, threshold: number) => threshold === numOwners +export const shouldDecrease = (numOwners: number, threshold: number) => threshold === numOwners + +export const removeOwner = async ( + values: Object, + safe: Safe, + threshold: number, + userToRemove: string, + name: string, + executor: string, +) => { + const nonce = Date.now() + const newThreshold = values[DECREASE_PARAM] ? threshold - 1 : threshold + const safeAddress = safe.get('address') + const gnosisSafe = await getSafeEthereumInstance(safeAddress) + const storedOwners = await gnosisSafe.getOwners() + const index = storedOwners.findIndex(ownerAddress => ownerAddress === userToRemove) + const prevAddress = index === 0 ? SENTINEL_ADDRESS : storedOwners[index - 1] + const data = gnosisSafe.contract.removeOwner.getData(prevAddress, userToRemove, newThreshold) + const text = name || userToRemove + + return createTransaction(safe, `Remove Owner ${text}`, safeAddress, 0, nonce, executor, data) +} class RemoveOwner extends React.Component { state = { @@ -43,19 +64,7 @@ class RemoveOwner extends React.Component { const { safe, threshold, executor, fetchTransactions, userToRemove, name, } = this.props - const nonce = Date.now() - const newThreshold = values[DECREASE_PARAM] ? threshold - 1 : threshold - const safeAddress = safe.get('address') - const gnosisSafe = await getSafeEthereumInstance(safeAddress) - - const storedOwners = await gnosisSafe.getOwners() - const index = storedOwners.findIndex(ownerAddress => ownerAddress === userToRemove) - const prevAddress = index === 0 ? SENTINEL_ADDRESS : storedOwners[index - 1] - const data = gnosisSafe.contract.removeOwner.getData(prevAddress, userToRemove, newThreshold) - - const text = name || userToRemove - await createTransaction(safe, `Remove Owner ${text}`, safeAddress, 0, nonce, executor, data) - + await removeOwner(values, safe, threshold, userToRemove, name, executor) fetchTransactions() this.setState({ done: true }) } catch (error) { diff --git a/src/routes/safe/component/Safe/Balance.jsx b/src/routes/safe/component/Safe/Balance.jsx deleted file mode 100644 index da30168813..0000000000 --- a/src/routes/safe/component/Safe/Balance.jsx +++ /dev/null @@ -1,21 +0,0 @@ -// @flow -import * as React from 'react' -import ListItem from '@material-ui/core/ListItem' -import ListItemText from '@material-ui/core/ListItemText' -import Avatar from '@material-ui/core/Avatar' -import AccountBalance from '@material-ui/icons/AccountBalance' - -type Props = { - balance: string, -} - -const Balance = ({ balance }: Props) => ( - - - - - - -) - -export default Balance diff --git a/src/routes/safe/component/Safe/BalanceInfo.jsx b/src/routes/safe/component/Safe/BalanceInfo.jsx new file mode 100644 index 0000000000..10399168aa --- /dev/null +++ b/src/routes/safe/component/Safe/BalanceInfo.jsx @@ -0,0 +1,90 @@ +// @flow +import * as React from 'react' +import classNames from 'classnames' +import Link from '~/components/layout/Link' +import AccountBalance from '@material-ui/icons/AccountBalance' +import Settings from '@material-ui/icons/Settings' +import Avatar from '@material-ui/core/Avatar' +import Collapse from '@material-ui/core/Collapse' +import IconButton from '@material-ui/core/IconButton' +import List from '@material-ui/core/List' +import Img from '~/components/layout/Img' +import ListItem from '@material-ui/core/ListItem' +import ListItemIcon from '@material-ui/core/ListItemIcon' +import ListItemText from '@material-ui/core/ListItemText' +import { withStyles } from '@material-ui/core/styles' +import ExpandLess from '@material-ui/icons/ExpandLess' +import ExpandMore from '@material-ui/icons/ExpandMore' +import { Map } from 'immutable' +import Button from '~/components/layout/Button' +import openHoc, { type Open } from '~/components/hoc/OpenHoc' +import { type WithStyles } from '~/theme/mui' +import { type Token } from '~/routes/tokens/store/model/token' +import { settingsUrlFrom } from '~/routes' + +type Props = Open & WithStyles & { + safeAddress: string, + tokens: Map, + onMoveFunds: (token: Token) => void, +} + +const styles = { + nested: { + paddingLeft: '40px', + }, +} + +export const MOVE_FUNDS_BUTTON_TEXT = 'Move' + +const BalanceComponent = openHoc(({ + open, toggle, tokens, classes, onMoveFunds, safeAddress, +}: Props) => { + const hasBalances = tokens.count() > 0 + const settingsUrl = settingsUrlFrom(safeAddress) + + return ( + + + + + + + + + + + + + {open + ? + : + } + + + + + {tokens.valueSeq().map((token: Token) => { + const symbol = token.get('symbol') + const name = token.get('name') + const disabled = Number(token.get('funds')) === 0 + const onMoveFundsClick = () => onMoveFunds(token) + + return ( + + + {name} + + + + + ) + })} + + + + ) +}) + +export default withStyles(styles)(BalanceComponent) diff --git a/src/routes/safe/component/Safe/DailyLimit.jsx b/src/routes/safe/component/Safe/DailyLimit.jsx index fca2616eb4..53fdae2e71 100644 --- a/src/routes/safe/component/Safe/DailyLimit.jsx +++ b/src/routes/safe/component/Safe/DailyLimit.jsx @@ -11,7 +11,7 @@ type Props = { dailyLimit: DailyLimit, onWithdraw: () => void, onEditDailyLimit: () => void, - balance: string, + balance: number, } export const EDIT_WITHDRAW = 'Edit' export const WITHDRAW_BUTTON_TEXT = 'Withdraw' @@ -26,7 +26,7 @@ const DailyLimitComponent = ({ const limit = dailyLimit.get('value') const spentToday = dailyLimit.get('spentToday') - const disabled = spentToday >= limit || Number(balance) === 0 + const disabled = spentToday >= limit || balance === 0 const text = `${limit} ETH (spent today: ${spentToday} ETH)` return ( diff --git a/src/routes/safe/component/Safe/MultisigTx.jsx b/src/routes/safe/component/Safe/MultisigTx.jsx index e41973d016..88a004d51c 100644 --- a/src/routes/safe/component/Safe/MultisigTx.jsx +++ b/src/routes/safe/component/Safe/MultisigTx.jsx @@ -7,37 +7,20 @@ import Button from '~/components/layout/Button' import ListItemText from '~/components/List/ListItemText' type Props = { - balance: string, - onAddTx: () => void, onSeeTxs: () => void, } -export const ADD_MULTISIG_BUTTON_TEXT = 'Add' export const SEE_MULTISIG_BUTTON_TEXT = 'TXs' -const addStyle = { - marginRight: '10px', -} - -const DailyLimitComponent = ({ balance, onAddTx, onSeeTxs }: Props) => { - const text = `Available ${balance} ETH` - const disabled = Number(balance) <= 0 +const DailyLimitComponent = ({ onSeeTxs }: Props) => { + const text = 'See multisig txs executed on this Safe' return ( - - + - ) diff --git a/src/routes/safe/component/Transactions/index.jsx b/src/routes/safe/component/Transactions/index.jsx index 10c3be1f2c..34e2e18d2d 100644 --- a/src/routes/safe/component/Transactions/index.jsx +++ b/src/routes/safe/component/Transactions/index.jsx @@ -9,7 +9,6 @@ import selector, { type SelectorProps } from './selector' import actions, { type Actions } from './actions' type Props = SelectorProps & Actions & { - onAddTx: () => void, safeName: string, safeAddress: string, @@ -25,14 +24,14 @@ class Transactions extends React.Component { } render() { - const { transactions, onAddTx, safeName } = this.props + const { transactions, safeName } = this.props const hasTransactions = transactions.count() > 0 return ( { hasTransactions ? transactions.map((tx: Transaction) => ) - : + : } ) diff --git a/src/routes/safe/component/Transactions/processTransactions.js b/src/routes/safe/component/Transactions/processTransactions.js index 5db6165f39..0ef47b5894 100644 --- a/src/routes/safe/component/Transactions/processTransactions.js +++ b/src/routes/safe/component/Transactions/processTransactions.js @@ -7,7 +7,7 @@ import { makeTransaction, type Transaction, type TransactionProps } from '~/rout import { getGnosisSafeContract } from '~/wallets/safeContracts' import { getWeb3 } from '~/wallets/getWeb3' import { sameAddress } from '~/wallets/ethAddresses' -import { EXECUTED_CONFIRMATION_HASH } from '~/routes/safe/component/AddTransaction/createTransactions' +import { EXECUTED_CONFIRMATION_HASH } from '~/wallets/createTransactions' import { checkReceiptStatus, calculateGasOf, calculateGasPrice } from '~/wallets/ethTransactions' export const updateTransaction = ( diff --git a/src/routes/safe/component/Withdraw/withdraw.js b/src/routes/safe/component/Withdraw/withdraw.js index 8048649745..ecbe982880 100644 --- a/src/routes/safe/component/Withdraw/withdraw.js +++ b/src/routes/safe/component/Withdraw/withdraw.js @@ -1,10 +1,12 @@ // @flow +import { List } from 'immutable' import { getWeb3 } from '~/wallets/getWeb3' import { getGnosisSafeContract, getCreateDailyLimitExtensionContract } from '~/wallets/safeContracts' import { type DailyLimitProps } from '~/routes/safe/store/model/dailyLimit' -import { checkReceiptStatus, calculateGasOf, calculateGasPrice } from '~/wallets/ethTransactions' +import { checkReceiptStatus, calculateGasOf, calculateGasPrice, EMPTY_DATA } from '~/wallets/ethTransactions' import { type Safe } from '~/routes/safe/store/model/safe' -import { buildExecutedConfirmationFrom, storeTransaction } from '~/routes/safe/component/AddTransaction/createTransactions' +import { buildExecutedConfirmationFrom, storeTransaction } from '~/wallets/createTransactions' +import { type Confirmation } from '~/routes/safe/store/model/confirmation' export const LIMIT_POSITION = 0 export const SPENT_TODAY_POS = 1 @@ -44,7 +46,7 @@ export const getDailyLimitAddress = async (safeAddress: string) => { return dailyLimitModule.address } -export const getEditDailyLimitData = async (safeAddress: string, token: string, dailyLimit: string) => { +export const getEditDailyLimitData = async (safeAddress: string, token: number, dailyLimit: number) => { const web3 = getWeb3() const dailyLimitModule = await getDailyLimitModuleFrom(safeAddress) const dailyLimitInWei = web3.toWei(dailyLimit, 'ether') @@ -70,7 +72,7 @@ const withdraw = async (values: Object, safe: Safe, userAccount: string): Promis const nonce = Date.now() const executedConfirmations: List = buildExecutedConfirmationFrom(safe.get('owners'), userAccount) - return storeTransaction(`Withdraw movement of ${valueInEth}`, nonce, destination, valueInEth, userAccount, executedConfirmations, txHash.tx, safeAddress, safe.get('threshold'), '0x') + return storeTransaction(`Withdraw movement of ${valueInEth}`, nonce, destination, valueInEth, userAccount, executedConfirmations, txHash.tx, safeAddress, safe.get('threshold'), EMPTY_DATA) } export default withdraw diff --git a/src/routes/safe/component/Withdraw/withdraw.test.js b/src/routes/safe/component/Withdraw/withdraw.test.js index c6ca86e04a..46cd0e085f 100644 --- a/src/routes/safe/component/Withdraw/withdraw.test.js +++ b/src/routes/safe/component/Withdraw/withdraw.test.js @@ -1,9 +1,10 @@ // @flow import { aNewStore } from '~/store' -import { addEtherTo } from '~/test/utils/etherMovements' +import { addEtherTo } from '~/test/utils/tokenMovements' import { aDeployedSafe, executeWithdrawOn } from '~/routes/safe/store/test/builder/deployedSafe.builder' import { buildMathPropsFrom } from '~/test/utils/buildReactRouterProps' import { safeSelector } from '~/routes/safe/store/selectors/index' +import { type Match } from 'react-router-dom' describe('Safe Blockchain Test', () => { let store @@ -21,10 +22,12 @@ describe('Safe Blockchain Test', () => { // WHEN const match: Match = buildMathPropsFrom(safeAddress) const safe = safeSelector(store.getState(), { match }) + if (!safe) throw new Error() + await executeWithdrawOn(safe, value) await executeWithdrawOn(safe, value) // THEN - expect(executeWithdrawOn(safeAddress, value)).rejects.toThrow('VM Exception while processing transaction: revert') + expect(executeWithdrawOn(safe, value)).rejects.toThrow('VM Exception while processing transaction: revert') }) }) diff --git a/src/routes/safe/container/actions.js b/src/routes/safe/container/actions.js index 6ffe7123e7..7924354bf3 100644 --- a/src/routes/safe/container/actions.js +++ b/src/routes/safe/container/actions.js @@ -1,13 +1,13 @@ // @flow import fetchSafe from '~/routes/safe/store/actions/fetchSafe' -import fetchBalance from '~/routes/safe/store/actions/fetchBalance' +import { fetchTokens } from '~/routes/tokens/store/actions/fetchTokens' export type Actions = { fetchSafe: typeof fetchSafe, - fetchBalance: typeof fetchBalance, + fetchTokens: typeof fetchTokens, } export default { fetchSafe, - fetchBalance, + fetchTokens, } diff --git a/src/routes/safe/container/index.jsx b/src/routes/safe/container/index.jsx index 4346d852c3..b980ec2a02 100644 --- a/src/routes/safe/container/index.jsx +++ b/src/routes/safe/container/index.jsx @@ -11,17 +11,32 @@ type Props = Actions & SelectorProps & { granted: boolean, } +const TIMEOUT = process.env.NODE_ENV === 'test' ? 1500 : 15000 + class SafeView extends React.PureComponent { componentDidMount() { this.intervalId = setInterval(() => { - const { safe, fetchSafe, fetchBalance } = this.props - if (!safe) { return } - const safeAddress: string = safe.get('address') - fetchBalance(safeAddress) - if (safe) { - fetchSafe(safe) + const { + safe, fetchTokens, fetchSafe, + } = this.props + if (!safe) { + return } - }, 1500) + const safeAddress = safe.get('address') + fetchTokens(safeAddress) + fetchSafe(safe) + }, TIMEOUT) + } + + componentDidUpdate(prevProps) { + if (prevProps.safe) { + return + } + + if (this.props.safe) { + const safeAddress = this.props.safe.get('address') + this.props.fetchTokens(safeAddress) + } } componentWillUnmount() { @@ -32,13 +47,13 @@ class SafeView extends React.PureComponent { render() { const { - safe, provider, balance, granted, userAddress, + safe, provider, activeTokens, granted, userAddress, } = this.props return ( { granted - ? + ? : } diff --git a/src/routes/safe/container/selector.js b/src/routes/safe/container/selector.js index 1ce3d69bb2..fe1f8997dc 100644 --- a/src/routes/safe/container/selector.js +++ b/src/routes/safe/container/selector.js @@ -1,17 +1,19 @@ // @flow import { List } from 'immutable' import { createSelector, createStructuredSelector, type Selector } from 'reselect' -import { balanceSelector, safeSelector, type RouterProps, type SafeSelectorProps } from '~/routes/safe/store/selectors' +import { safeSelector, type RouterProps, type SafeSelectorProps } from '~/routes/safe/store/selectors' import { providerNameSelector, userAccountSelector } from '~/wallets/store/selectors/index' import { type Safe } from '~/routes/safe/store/model/safe' import { type Owner } from '~/routes/safe/store/model/owner' import { type GlobalState } from '~/store/index' import { sameAddress } from '~/wallets/ethAddresses' +import { activeTokensSelector } from '~/routes/tokens/store/selectors' +import { type Token } from '~/routes/tokens/store/model/token' export type SelectorProps = { safe: SafeSelectorProps, provider: string, - balance: string, + activeTokens: List, userAddress: string, } @@ -39,7 +41,7 @@ export const grantedSelector: Selector = crea export default createStructuredSelector({ safe: safeSelector, provider: providerNameSelector, - balance: balanceSelector, + activeTokens: activeTokensSelector, granted: grantedSelector, userAddress: userAccountSelector, }) diff --git a/src/routes/safe/store/actions/addBalance.js b/src/routes/safe/store/actions/addBalance.js deleted file mode 100644 index 7051769be4..0000000000 --- a/src/routes/safe/store/actions/addBalance.js +++ /dev/null @@ -1,19 +0,0 @@ -// @flow -import { createAction } from 'redux-actions' - -export const ADD_BALANCE = 'ADD_BALANCE' - -type BalanceProps = { - safeAddress: string, - funds: string, -} - -const addBalance = createAction( - ADD_BALANCE, - (safeAddress: string, funds: string): BalanceProps => ({ - safeAddress, - funds, - }), -) - -export default addBalance diff --git a/src/routes/safe/store/actions/fetchBalance.js b/src/routes/safe/store/actions/fetchBalance.js deleted file mode 100644 index 430682d861..0000000000 --- a/src/routes/safe/store/actions/fetchBalance.js +++ /dev/null @@ -1,11 +0,0 @@ -// @flow -import type { Dispatch as ReduxDispatch } from 'redux' -import { getBalanceInEtherOf } from '~/wallets/getWeb3' -import { type GlobalState } from '~/store/index' -import addBalance from './addBalance' - -export default (safeAddress: string) => async (dispatch: ReduxDispatch) => { - const balance = await getBalanceInEtherOf(safeAddress) - - return dispatch(addBalance(safeAddress, balance)) -} diff --git a/src/routes/safe/store/actions/fetchSafe.js b/src/routes/safe/store/actions/fetchSafe.js index 9e9a48ff65..7f41f8b937 100644 --- a/src/routes/safe/store/actions/fetchSafe.js +++ b/src/routes/safe/store/actions/fetchSafe.js @@ -37,7 +37,14 @@ export const buildSafe = async (storedSafe: Object) => { } export default (safe: Safe) => async (dispatch: ReduxDispatch) => { - const safeRecord = await buildSafe(safe.toJSON()) + try { + const safeRecord = await buildSafe(safe.toJSON()) - return dispatch(updateSafe(safeRecord)) + return dispatch(updateSafe(safeRecord)) + } catch (err) { + // eslint-disable-next-line + console.log("Error while updating safe information") + + return Promise.resolve() + } } diff --git a/src/routes/safe/store/actions/fetchSafes.js b/src/routes/safe/store/actions/fetchSafes.js index 196c1b404d..45633a2221 100644 --- a/src/routes/safe/store/actions/fetchSafes.js +++ b/src/routes/safe/store/actions/fetchSafes.js @@ -11,15 +11,23 @@ const buildSafesFrom = async (loadedSafes: Object): Promise> = const safes = Map() const keys = Object.keys(loadedSafes) - const safeRecords = await Promise.all(keys.map((address: string) => buildSafe(loadedSafes[address]))) + try { + const safeRecords = await Promise.all(keys.map((address: string) => buildSafe(loadedSafes[address]))) - return safes.withMutations(async (map) => { - safeRecords.forEach((safe: Safe) => map.set(safe.get('address'), safe)) - }) + return safes.withMutations(async (map) => { + safeRecords.forEach((safe: Safe) => map.set(safe.get('address'), safe)) + }) + } catch (err) { + // eslint-disable-next-line + console.log("Error while fetching safes information") + + return Map() + } } export default () => async (dispatch: ReduxDispatch) => { const storedSafes = load(SAFES_KEY) + const safes = storedSafes ? await buildSafesFrom(storedSafes) : Map() return dispatch(updateSafes(safes)) diff --git a/src/routes/safe/store/reducer/balances.js b/src/routes/safe/store/reducer/balances.js deleted file mode 100644 index 518db1501b..0000000000 --- a/src/routes/safe/store/reducer/balances.js +++ /dev/null @@ -1,13 +0,0 @@ -// @flow -import { Map } from 'immutable' -import { handleActions, type ActionType } from 'redux-actions' -import addBalance, { ADD_BALANCE } from '~/routes/safe/store/actions/addBalance' - -export const BALANCE_REDUCER_ID = 'balances' - -export type State = Map - -export default handleActions({ - [ADD_BALANCE]: (state: State, action: ActionType): State => - state.set(action.payload.safeAddress, action.payload.funds), -}, Map()) diff --git a/src/routes/safe/store/selectors/index.js b/src/routes/safe/store/selectors/index.js index 8e18c2e63b..7bbdd8b27d 100644 --- a/src/routes/safe/store/selectors/index.js +++ b/src/routes/safe/store/selectors/index.js @@ -6,7 +6,6 @@ import { type GlobalState } from '~/store/index' import { SAFE_PARAM_ADDRESS } from '~/routes/routes' import { type Safe } from '~/routes/safe/store/model/safe' import { safesMapSelector } from '~/routes/safeList/store/selectors' -import { BALANCE_REDUCER_ID } from '~/routes/safe/store/reducer/balances' import { type State as TransactionsState, TRANSACTIONS_REDUCER_ID } from '~/routes/safe/store/reducer/transactions' import { type Transaction } from '~/routes/safe/store/model/transaction' import { type Confirmation } from '~/routes/safe/store/model/confirmation' @@ -25,14 +24,12 @@ type TransactionProps = { const safePropAddressSelector = (state: GlobalState, props: SafeProps) => props.safeAddress -const safeParamAddressSelector = (state: GlobalState, props: RouterProps) => props.match.params[SAFE_PARAM_ADDRESS] || '' - -const balancesSelector = (state: GlobalState) => state[BALANCE_REDUCER_ID] - const transactionsSelector = (state: GlobalState): TransactionsState => state[TRANSACTIONS_REDUCER_ID] const oneTransactionSelector = (state: GlobalState, props: TransactionProps) => props.transaction +export const safeParamAddressSelector = (state: GlobalState, props: RouterProps) => props.match.params[SAFE_PARAM_ADDRESS] || '' + export const safeTransactionsSelector: Selector> = createSelector( transactionsSelector, safePropAddressSelector, @@ -81,18 +78,6 @@ export const safeSelector: Selector }, ) -export const balanceSelector: Selector = createSelector( - balancesSelector, - safeParamAddressSelector, - (balances: Map, address: string) => { - if (!address) { - return '0' - } - - return balances.get(address) || '0' - }, -) - export default createStructuredSelector({ safe: safeSelector, }) diff --git a/src/routes/safe/store/test/balance.reducer.js b/src/routes/safe/store/test/balance.reducer.js deleted file mode 100644 index e97dd51a4b..0000000000 --- a/src/routes/safe/store/test/balance.reducer.js +++ /dev/null @@ -1,44 +0,0 @@ -// @flow -import { BALANCE_REDUCER_ID } from '~/routes/safe/store/reducer/balances' -import fetchBalance from '~/routes/safe/store/actions/fetchBalance' -import { aNewStore } from '~/store' -import { addEtherTo } from '~/test/utils/etherMovements' -import { aDeployedSafe } from './builder/deployedSafe.builder' - -const balanceReducerTests = () => { - describe('Safe Actions[fetchBalance]', () => { - let store - beforeEach(async () => { - store = aNewStore() - }) - - it('reducer should return 0 to just deployed safe', async () => { - // GIVEN - const address = await aDeployedSafe(store) - - // WHEN - await store.dispatch(fetchBalance(address)) - - // THEN - const balances = store.getState()[BALANCE_REDUCER_ID] - expect(balances).not.toBe(undefined) - expect(balances.get(address)).toBe('0') - }) - - it('reducer should return 1.3456 ETH as funds to safe with 1.3456 ETH', async () => { - // GIVEN - const address = await aDeployedSafe(store) - - // WHEN - await addEtherTo(address, '1.3456') - await store.dispatch(fetchBalance(address)) - - // THEN - const balances = store.getState()[BALANCE_REDUCER_ID] - expect(balances).not.toBe(undefined) - expect(balances.get(address)).toBe('1.3456') - }) - }) -} - -export default balanceReducerTests diff --git a/src/routes/safe/store/test/balance.selector.js b/src/routes/safe/store/test/balance.selector.js index 31e75c8696..aa1c95c547 100644 --- a/src/routes/safe/store/test/balance.selector.js +++ b/src/routes/safe/store/test/balance.selector.js @@ -1,5 +1,6 @@ // @flow -import addBalance from '~/routes/safe/store/actions/addBalance' +/* +import addBalances from '~/routes/safe/store/actions/addBalances' import { aNewStore } from '~/store' import { buildMathPropsFrom } from '~/test/utils/buildReactRouterProps' import { balanceSelector } from '../selectors' @@ -26,7 +27,7 @@ const balanceSelectorTests = () => { const store = aNewStore() // WHEN - await store.dispatch(addBalance('bar', '1')) + await store.dispatch(addBalances('bar', '1')) const balance = balanceSelector(store.getState(), { match }) // THEN @@ -40,7 +41,7 @@ const balanceSelectorTests = () => { const store = aNewStore() // WHEN - await store.dispatch(addBalance(safeAddress, '1.3456')) + await store.dispatch(addBalances(safeAddress, '1.3456')) const balance = balanceSelector(store.getState(), { match }) // THEN @@ -50,3 +51,4 @@ const balanceSelectorTests = () => { } export default balanceSelectorTests +*/ diff --git a/src/routes/safe/store/test/confirmations.selector.js b/src/routes/safe/store/test/confirmations.selector.js index 3f1f924df0..e10239856f 100644 --- a/src/routes/safe/store/test/confirmations.selector.js +++ b/src/routes/safe/store/test/confirmations.selector.js @@ -29,7 +29,7 @@ const grantedSelectorTests = () => { const reduxStore = { safes: Map(), providers: makeProvider(), - balances: Map(), + tokens: Map(), transactions: Map(), } @@ -67,7 +67,7 @@ const grantedSelectorTests = () => { const reduxStore = { safes: Map(), providers: makeProvider(), - balances: Map(), + tokens: Map(), transactions: Map(), } @@ -82,7 +82,7 @@ const grantedSelectorTests = () => { const reduxStore = { safes: Map(), providers: makeProvider(), - balances: Map(), + tokens: Map(), transactions: Map(), } diff --git a/src/routes/safe/store/test/granted.selector.js b/src/routes/safe/store/test/granted.selector.js index ff52fe155f..cf51cd682c 100644 --- a/src/routes/safe/store/test/granted.selector.js +++ b/src/routes/safe/store/test/granted.selector.js @@ -26,7 +26,7 @@ const grantedSelectorTests = () => { const reduxStore = { [SAFE_REDUCER_ID]: map, providers: makeProvider(provider), - balances: undefined, + tokens: undefined, transactions: undefined, } @@ -47,7 +47,7 @@ const grantedSelectorTests = () => { const reduxStore = { [SAFE_REDUCER_ID]: map, providers: makeProvider(provider), - balances: undefined, + tokens: undefined, transactions: undefined, } @@ -68,7 +68,7 @@ const grantedSelectorTests = () => { const reduxStore = { [SAFE_REDUCER_ID]: map, providers: makeProvider(provider), - balances: undefined, + tokens: undefined, transactions: undefined, } diff --git a/src/routes/safe/store/test/safe.selector.js b/src/routes/safe/store/test/safe.selector.js index 22c027ae5f..f8f8b9313a 100644 --- a/src/routes/safe/store/test/safe.selector.js +++ b/src/routes/safe/store/test/safe.selector.js @@ -14,7 +14,7 @@ const safeSelectorTests = () => { const reduxStore = { [SAFE_REDUCER_ID]: Map(), providers: undefined, - balances: undefined, + tokens: undefined, transactions: undefined, } const match: Match = buildMathPropsFrom('fooAddress') @@ -38,7 +38,7 @@ const safeSelectorTests = () => { const reduxStore = { [SAFE_REDUCER_ID]: map, providers: undefined, - balances: undefined, + tokens: undefined, transactions: undefined, } diff --git a/src/routes/safe/store/test/safe.spec.js b/src/routes/safe/store/test/safe.spec.js index 0db061e1ee..b228324268 100644 --- a/src/routes/safe/store/test/safe.spec.js +++ b/src/routes/safe/store/test/safe.spec.js @@ -1,7 +1,6 @@ // @flow -import balanceReducerTests from './balance.reducer' import safeReducerTests from './safe.reducer' -import balanceSelectorTests from './balance.selector' +// import balanceSelectorTests from './balance.selector' import safeSelectorTests from './safe.selector' import grantedSelectorTests from './granted.selector' import confirmationsSelectorTests from './confirmations.selector' @@ -10,13 +9,12 @@ import transactionsSelectorTests from './transactions.selector' describe('Safe Test suite', () => { // ACTIONS AND REDUCERS safeReducerTests() - balanceReducerTests() // SAFE SELECTOR safeSelectorTests() // BALANCE SELECTOR - balanceSelectorTests() + // balanceSelectorTests() // GRANTED SELECTOR grantedSelectorTests() diff --git a/src/routes/safe/store/test/transactions.selector.js b/src/routes/safe/store/test/transactions.selector.js index 5897ffd8fd..e45063f299 100644 --- a/src/routes/safe/store/test/transactions.selector.js +++ b/src/routes/safe/store/test/transactions.selector.js @@ -14,7 +14,7 @@ const grantedSelectorTests = () => { const reduxStore = { [SAFE_REDUCER_ID]: Map(), providers: makeProvider(), - balances: undefined, + tokens: undefined, transactions: Map(), } @@ -46,7 +46,7 @@ const grantedSelectorTests = () => { const reduxStore = { [SAFE_REDUCER_ID]: Map(), providers: makeProvider(), - balances: undefined, + tokens: undefined, transactions: Map({ fooAddress: List([transaction]) }), } @@ -81,7 +81,7 @@ const grantedSelectorTests = () => { const reduxStore = { [SAFE_REDUCER_ID]: Map(), providers: makeProvider(), - balances: undefined, + tokens: undefined, transactions: Map({ fooAddress: List([transaction]) }), } @@ -113,7 +113,7 @@ const grantedSelectorTests = () => { const reduxStore = { [SAFE_REDUCER_ID]: Map(), providers: makeProvider(), - balances: undefined, + tokens: undefined, transactions: Map({ fooAddress: List([transaction]) }), } diff --git a/src/routes/safe/test/Safe.multisig.1owners1threshold.test.js b/src/routes/safe/test/Safe.multisig.1owners1threshold.test.js deleted file mode 100644 index 017cebe757..0000000000 --- a/src/routes/safe/test/Safe.multisig.1owners1threshold.test.js +++ /dev/null @@ -1,103 +0,0 @@ -// @flow -import * as React from 'react' -import TestUtils from 'react-dom/test-utils' -import { Provider } from 'react-redux' -import { ConnectedRouter } from 'react-router-redux' -import Button from '~/components/layout/Button' -import { aNewStore, history } from '~/store' -import { addEtherTo } from '~/test/utils/etherMovements' -import { aDeployedSafe } from '~/routes/safe/store/test/builder/deployedSafe.builder' -import { SAFELIST_ADDRESS } from '~/routes/routes' -import SafeView from '~/routes/safe/component/Safe' -import AppRoutes from '~/routes' -import AddTransactionComponent, { SEE_TXS_BUTTON_TEXT } from '~/routes/safe/component/AddTransaction' -import TransactionsComponent from '~/routes/safe/component/Transactions' -import TransactionComponent from '~/routes/safe/component/Transactions/Transaction' -import { getBalanceInEtherOf } from '~/wallets/getWeb3' -import { sleep } from '~/utils/timer' -import { ADD_MULTISIG_BUTTON_TEXT } from '~/routes/safe/component/Safe/MultisigTx' -import { safeTransactionsSelector } from '~/routes/safe/store/selectors/index' -import { MOVE_FUNDS_INDEX } from '~/test/builder/safe.dom.utils' - -describe('React DOM TESTS > Withdraw funds from safe', () => { - let SafeDom - let store - let address - beforeEach(async () => { - // create store - store = aNewStore() - // deploy safe updating store - address = await aDeployedSafe(store) - // navigate to SAFE route - history.push(`${SAFELIST_ADDRESS}/${address}`) - SafeDom = TestUtils.renderIntoDocument(( - - - - - - )) - }) - - it('should execute one transaction if safe has only one owner', async () => { - // add funds to safe - await addEtherTo(address, '0.1') - const Safe = TestUtils.findRenderedComponentWithType(SafeDom, SafeView) - - // $FlowFixMe - const buttons = TestUtils.scryRenderedDOMComponentsWithTag(Safe, 'button') - const addTxButton = buttons[MOVE_FUNDS_INDEX] - expect(addTxButton.getElementsByTagName('span')[0].innerHTML).toEqual(ADD_MULTISIG_BUTTON_TEXT) - - await sleep(1800) // Give time to enable Add button - TestUtils.Simulate.click(addTxButton) - await sleep(1800) // Give time to render the form - const AddTransaction = TestUtils.findRenderedComponentWithType(SafeDom, AddTransactionComponent) - - // $FlowFixMe - const inputs = TestUtils.scryRenderedDOMComponentsWithTag(AddTransaction, 'input') - const name = inputs[0] - const destination = inputs[1] - const amountInEth = inputs[2] - TestUtils.Simulate.change(name, { target: { value: 'Buying betteries' } }) - TestUtils.Simulate.change(amountInEth, { target: { value: '0.01' } }) - TestUtils.Simulate.change(destination, { target: { value: store.getState().providers.account } }) - - // $FlowFixMe - const form = TestUtils.findRenderedDOMComponentWithTag(AddTransaction, 'form') - - TestUtils.Simulate.submit(form) // fill the form - TestUtils.Simulate.submit(form) // confirming data - await sleep(4000) - - const safeBalance = await getBalanceInEtherOf(address) - expect(safeBalance).toBe('0.09') - - // $FlowFixMe - const addTransactionButtons = TestUtils.scryRenderedComponentsWithType(AddTransaction, Button) - expect(addTransactionButtons.length).toBe(1) - const visitTxsButton = addTransactionButtons[0] - - expect(visitTxsButton.props.children).toEqual(SEE_TXS_BUTTON_TEXT) - - // NOW it is time to check the just executed transaction - TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(visitTxsButton, 'button')[0]) - - const Transactions = TestUtils.findRenderedComponentWithType(SafeDom, TransactionsComponent) - if (!Transactions) throw new Error() - const Transaction = TestUtils.findRenderedComponentWithType(Transactions, TransactionComponent) - if (!Transaction) throw new Error() - - const paragraphs = TestUtils.scryRenderedDOMComponentsWithTag(Transaction, 'p') - expect(paragraphs[2].innerHTML).toBe('Already executed') - TestUtils.Simulate.click(paragraphs[2]) // expanded - await sleep(1000) // Time to expand - const paragraphsExpanded = TestUtils.scryRenderedDOMComponentsWithTag(Transaction, 'p') - const txHashParagraph = paragraphsExpanded[3] - - const transactions = safeTransactionsSelector(store.getState(), { safeAddress: address }) - const batteryTx = transactions.get(0) - if (!batteryTx) throw new Error() - expect(txHashParagraph.innerHTML).toBe(batteryTx.get('tx')) - }) -}) diff --git a/src/routes/safe/test/Safe.multisig.3owners1threshold.test.js b/src/routes/safe/test/Safe.multisig.3owners1threshold.test.js deleted file mode 100644 index e4b26fa08b..0000000000 --- a/src/routes/safe/test/Safe.multisig.3owners1threshold.test.js +++ /dev/null @@ -1,62 +0,0 @@ -// @flow -import * as React from 'react' -import TestUtils from 'react-dom/test-utils' -import { Provider } from 'react-redux' -import { ConnectedRouter } from 'react-router-redux' -import { aNewStore, history } from '~/store' -import { aDeployedSafe } from '~/routes/safe/store/test/builder/deployedSafe.builder' -import { SAFELIST_ADDRESS } from '~/routes/routes' -import AppRoutes from '~/routes' -import AddTransactionComponent from '~/routes/safe/component/AddTransaction' -import { createMultisigTxFilling, addFundsTo, checkBalanceOf, listTxsOf, getListItemsFrom, expandTransactionOf, getTransactionFromReduxStore, confirmOwners } from '~/routes/safe/test/testMultisig' -import { sleep } from '~/utils/timer' - -const renderSafe = localStore => ( - TestUtils.renderIntoDocument(( - - - - - - )) -) - -describe('React DOM TESTS > Multisig transactions from safe [3 owners & 1 threshold] ', () => { - let SafeDom - let store - let address - beforeEach(async () => { - // create store - store = aNewStore() - // deploy safe updating store - address = await aDeployedSafe(store, 10, 1, 3) - // navigate to SAFE route - history.push(`${SAFELIST_ADDRESS}/${address}`) - SafeDom = renderSafe(store) - }) - - it('should execute transaction straight away', async () => { - await addFundsTo(SafeDom, address) - await checkBalanceOf(address, '0.1') - await createMultisigTxFilling(SafeDom, AddTransactionComponent, store) - await checkBalanceOf(address, '0.09') - await listTxsOf(SafeDom) - await sleep(2500) - - await expandTransactionOf(SafeDom, 3, 1) - await confirmOwners(SafeDom, 'Adolfo 1 Eth Account [Confirmed]', 'Adolfo 2 Eth Account [Not confirmed]', 'Adolfo 3 Eth Account [Not confirmed]') - - const listItems = getListItemsFrom(SafeDom) - - const status = listItems[2].props.secondary - expect(status).toBe('Already executed') - - const confirmed = listItems[3].props.secondary - const tx = getTransactionFromReduxStore(store, address) - if (!tx) throw new Error() - expect(confirmed).toBe(tx.get('tx')) - - const ownerTx = listItems[6].props.secondary - expect(ownerTx).toBe('Confirmation hash: EXECUTED') - }) -}) diff --git a/src/routes/safe/test/Safe.multisig.3owners3threshold.test.js b/src/routes/safe/test/Safe.multisig.3owners3threshold.test.js deleted file mode 100644 index ac7a8459b3..0000000000 --- a/src/routes/safe/test/Safe.multisig.3owners3threshold.test.js +++ /dev/null @@ -1,104 +0,0 @@ -// @flow -import * as React from 'react' -import TestUtils from 'react-dom/test-utils' -import { Provider } from 'react-redux' -import { ConnectedRouter } from 'react-router-redux' -import { aNewStore, history } from '~/store' -import { aDeployedSafe } from '~/routes/safe/store/test/builder/deployedSafe.builder' -import { SAFELIST_ADDRESS } from '~/routes/routes' -import AppRoutes from '~/routes' -import { getWeb3 } from '~/wallets/getWeb3' -import { sleep } from '~/utils/timer' -import { promisify } from '~/utils/promisify' -import AddTransactionComponent from '~/routes/safe/component/AddTransaction' -import { processTransaction } from '~/routes/safe/component/Transactions/processTransactions' -import { confirmationsTransactionSelector } from '~/routes/safe/store/selectors/index' -import fetchTransactions from '~/routes/safe/store/actions/fetchTransactions' -import { createMultisigTxFilling, addFundsTo, checkBalanceOf, listTxsOf, getListItemsFrom, expandTransactionOf, getTransactionFromReduxStore, confirmOwners } from '~/routes/safe/test/testMultisig' - -const renderSafe = localStore => ( - TestUtils.renderIntoDocument(( - - - - - - )) -) - -describe('React DOM TESTS > Multisig transactions from safe [3 owners & 3 threshold] ', () => { - let SafeDom - let store - let address - let accounts - beforeEach(async () => { - // create store - store = aNewStore() - // deploy safe updating store - address = await aDeployedSafe(store, 10, 3, 3) - // navigate to SAFE route - history.push(`${SAFELIST_ADDRESS}/${address}`) - SafeDom = renderSafe(store) - accounts = await promisify(cb => getWeb3().eth.getAccounts(cb)) - }) - - - const getAlreadyConfirmed = () => { - const tx = getTransactionFromReduxStore(store, address) - if (!tx) throw new Error() - const confirmed = confirmationsTransactionSelector(store.getState(), { transaction: tx }) - - return confirmed - } - - const makeConfirmation = async (executor) => { - const alreadyConfirmed = getAlreadyConfirmed() - const tx = getTransactionFromReduxStore(store, address) - if (!tx) throw new Error() - await processTransaction(address, tx, alreadyConfirmed, executor) - await sleep(800) - store.dispatch(fetchTransactions()) - sleep(1800) - SafeDom = renderSafe(store) - sleep(1800) - await listTxsOf(SafeDom) - sleep(800) - await expandTransactionOf(SafeDom, 3, 3) - sleep(800) - } - - it('should execute transaction after 2 owners have confirmed and the last one executed correctly', async () => { - await addFundsTo(SafeDom, address) - await createMultisigTxFilling(SafeDom, AddTransactionComponent, store) - - await checkBalanceOf(address, '0.1') - await listTxsOf(SafeDom) - sleep(1400) - const listItems = getListItemsFrom(SafeDom) - - const status = listItems[2].props.secondary - expect(status).toBe('1 of the 3 confirmations needed') - - const confirmed = listItems[3].props.secondary - expect(confirmed).toBe('Waiting for the rest of confirmations') - - await expandTransactionOf(SafeDom, 3, 3) - await confirmOwners(SafeDom, 'Adolfo 1 Eth Account [Confirmed]', 'Adolfo 2 Eth Account [Not confirmed]', 'Adolfo 3 Eth Account [Not confirmed]') - - await makeConfirmation(accounts[1]) - await confirmOwners(SafeDom, 'Adolfo 1 Eth Account [Confirmed]', 'Adolfo 2 Eth Account [Confirmed]', 'Adolfo 3 Eth Account [Not confirmed]') - - await makeConfirmation(accounts[2]) - await confirmOwners(SafeDom, 'Adolfo 1 Eth Account [Confirmed]', 'Adolfo 2 Eth Account [Confirmed]', 'Adolfo 3 Eth Account [Confirmed]') - - const listItemsExecuted = getListItemsFrom(SafeDom) - - const statusExecuted = listItemsExecuted[2].props.secondary - expect(statusExecuted).toBe('Already executed') - - const confirmedExecuted = listItemsExecuted[3].props.secondary - const tx = getTransactionFromReduxStore(store, address) - if (!tx) throw new Error() - expect(confirmedExecuted).toBe(tx.get('tx')) - }) -}) diff --git a/src/routes/safe/test/Safe.owners.test.js b/src/routes/safe/test/Safe.owners.test.js deleted file mode 100644 index b904754117..0000000000 --- a/src/routes/safe/test/Safe.owners.test.js +++ /dev/null @@ -1,187 +0,0 @@ -// @flow -import { aNewStore } from '~/store' -import { aDeployedSafe } from '~/routes/safe/store/test/builder/deployedSafe.builder' -import { getWeb3 } from '~/wallets/getWeb3' -import { sleep } from '~/utils/timer' -import { type Match } from 'react-router-dom' -import { promisify } from '~/utils/promisify' -import { processTransaction } from '~/routes/safe/component/Transactions/processTransactions' -import { confirmationsTransactionSelector, safeSelector, safeTransactionsSelector } from '~/routes/safe/store/selectors/index' -import { getTransactionFromReduxStore } from '~/routes/safe/test/testMultisig' -import { buildMathPropsFrom } from '~/test/utils/buildReactRouterProps' -import { createTransaction } from '~/routes/safe/component/AddTransaction/createTransactions' -import fetchTransactions from '~/routes/safe/store/actions/fetchTransactions' -import { type GlobalState } from '~/store/index' -import { type Safe } from '~/routes/safe/store/model/safe' -import { type Transaction } from '~/routes/safe/store/model/transaction' -import { getGnosisSafeInstanceAt } from '~/wallets/safeContracts' - -const getSafeFrom = (state: GlobalState, safeAddress: string): Safe => { - const match: Match = buildMathPropsFrom(safeAddress) - const safe = safeSelector(state, { match }) - if (!safe) throw new Error() - - return safe -} - -describe('React DOM TESTS > Add and remove owners', () => { - const assureExecuted = (transaction: Transaction) => { - expect(transaction.get('tx')).not.toBe(null) - expect(transaction.get('tx')).not.toBe(undefined) - expect(transaction.get('tx')).not.toBe('') - } - - const assureThresholdIs = async (gnosisSafe, threshold: number) => { - const safeThreshold = await gnosisSafe.getThreshold() - expect(Number(safeThreshold)).toEqual(threshold) - } - - const assureOwnersAre = async (gnosisSafe, ...owners) => { - const safeOwners = await gnosisSafe.getOwners() - expect(safeOwners.length).toEqual(owners.length) - for (let i = 0; i < owners.length; i += 1) { - expect(safeOwners[i]).toBe(owners[i]) - } - } - - it('adds owner without increasing the threshold', async () => { - // GIVEN - const numOwners = 2 - const threshold = 1 - const store = aNewStore() - const address = await aDeployedSafe(store, 10, threshold, numOwners) - const accounts = await promisify(cb => getWeb3().eth.getAccounts(cb)) - const safe = getSafeFrom(store.getState(), address) - const gnosisSafe = await getGnosisSafeInstanceAt(address) - - // WHEN - await assureThresholdIs(gnosisSafe, 1) - await assureOwnersAre(gnosisSafe, accounts[0], accounts[1]) - const nonce = Date.now() - const accountIndex = 5 - const data = gnosisSafe.contract.addOwnerWithThreshold.getData(accounts[accountIndex], 1) - await createTransaction(safe, `Add Owner with index ${accountIndex}`, address, 0, nonce, accounts[0], data) - await sleep(1500) - await store.dispatch(fetchTransactions()) - - // THEN - const transactions = safeTransactionsSelector(store.getState(), { safeAddress: address }) - expect(transactions.count()).toBe(1) - const tx = transactions.get(0) - if (!tx) throw new Error() - assureExecuted(tx) - await assureOwnersAre(gnosisSafe, accounts[5], accounts[0], accounts[1]) - await assureThresholdIs(gnosisSafe, 1) - }) - - it('adds owner increasing the threshold', async () => { - // GIVEN - const numOwners = 2 - const threshold = 1 - const store = aNewStore() - const address = await aDeployedSafe(store, 10, threshold, numOwners) - const accounts = await promisify(cb => getWeb3().eth.getAccounts(cb)) - const safe = getSafeFrom(store.getState(), address) - const gnosisSafe = await getGnosisSafeInstanceAt(address) - - // WHEN - await assureThresholdIs(gnosisSafe, 1) - await assureOwnersAre(gnosisSafe, accounts[0], accounts[1]) - const nonce = Date.now() - const accountIndex = 5 - const data = gnosisSafe.contract.addOwnerWithThreshold.getData(accounts[accountIndex], 2) - await createTransaction(safe, `Add Owner with index ${accountIndex}`, address, 0, nonce, accounts[0], data) - await sleep(1500) - await store.dispatch(fetchTransactions()) - - // THEN - const transactions = safeTransactionsSelector(store.getState(), { safeAddress: address }) - expect(transactions.count()).toBe(1) - const tx = transactions.get(0) - if (!tx) throw new Error() - assureExecuted(tx) - await assureOwnersAre(gnosisSafe, accounts[accountIndex], accounts[0], accounts[1]) - await assureThresholdIs(gnosisSafe, 2) - }) - - const processOwnerModification = async (store, safeAddress, executor) => { - const tx = getTransactionFromReduxStore(store, safeAddress) - if (!tx) throw new Error() - const confirmed = confirmationsTransactionSelector(store.getState(), { transaction: tx }) - const data = tx.get('data') - expect(data).not.toBe(null) - expect(data).not.toBe(undefined) - expect(data).not.toBe('') - - await processTransaction(safeAddress, tx, confirmed, executor) - await sleep(1800) - } - - it('remove owner without decreasing the threshold', async () => { - // GIVEN - const numOwners = 3 - const threshold = 2 - const store = aNewStore() - const address = await aDeployedSafe(store, 10, threshold, numOwners) - const accounts = await promisify(cb => getWeb3().eth.getAccounts(cb)) - const safe = getSafeFrom(store.getState(), address) - const gnosisSafe = await getGnosisSafeInstanceAt(address) - - // WHEN - await assureThresholdIs(gnosisSafe, 2) - await assureOwnersAre(gnosisSafe, accounts[0], accounts[1], accounts[2]) - const nonce = Date.now() - const accountIndex = 2 - const data = gnosisSafe.contract.removeOwner.getData(accounts[accountIndex - 1], accounts[accountIndex], 2) - await createTransaction(safe, `Remove owner Address 3 ${nonce}`, address, 0, nonce, accounts[0], data) - await sleep(1500) - await assureOwnersAre(gnosisSafe, accounts[0], accounts[1], accounts[2]) - await store.dispatch(fetchTransactions()) - - - processOwnerModification(store, address, accounts[1]) - await sleep(3000) - await store.dispatch(fetchTransactions()) - await sleep(3000) - const tx = getTransactionFromReduxStore(store, address) - if (!tx) throw new Error() - const txHash = tx.get('tx') - expect(txHash).not.toBe('') - await assureThresholdIs(gnosisSafe, 2) - await assureOwnersAre(gnosisSafe, accounts[0], accounts[1]) - }) - - it('remove owner decreasing the threshold', async () => { - // GIVEN - const numOwners = 2 - const threshold = 2 - const store = aNewStore() - const address = await aDeployedSafe(store, 10, threshold, numOwners) - const accounts = await promisify(cb => getWeb3().eth.getAccounts(cb)) - const safe = getSafeFrom(store.getState(), address) - const gnosisSafe = await getGnosisSafeInstanceAt(address) - - // WHEN - await assureThresholdIs(gnosisSafe, 2) - await assureOwnersAre(gnosisSafe, accounts[0], accounts[1]) - const nonce = Date.now() - const accountIndex = 1 - const data = gnosisSafe.contract.removeOwner.getData(accounts[accountIndex - 1], accounts[accountIndex], 1) - await createTransaction(safe, `Remove owner Address 2 ${nonce}`, address, 0, nonce, accounts[0], data) - await sleep(1500) - await assureOwnersAre(gnosisSafe, accounts[0], accounts[1]) - await store.dispatch(fetchTransactions()) - - - processOwnerModification(store, address, accounts[1]) - await sleep(3000) - await store.dispatch(fetchTransactions()) - await sleep(3000) - const tx = getTransactionFromReduxStore(store, address) - if (!tx) throw new Error() - const txHash = tx.get('tx') - expect(txHash).not.toBe('') - await assureThresholdIs(gnosisSafe, 1) - await assureOwnersAre(gnosisSafe, accounts[0]) - }) -}) diff --git a/src/routes/safe/test/Safe.threshold.test.js b/src/routes/safe/test/Safe.threshold.test.js index 7ce99d2d1d..8aa01a6dc1 100644 --- a/src/routes/safe/test/Safe.threshold.test.js +++ b/src/routes/safe/test/Safe.threshold.test.js @@ -9,7 +9,7 @@ import { processTransaction } from '~/routes/safe/component/Transactions/process import { confirmationsTransactionSelector, safeSelector, safeTransactionsSelector } from '~/routes/safe/store/selectors/index' import { getTransactionFromReduxStore } from '~/routes/safe/test/testMultisig' import { buildMathPropsFrom } from '~/test/utils/buildReactRouterProps' -import { createTransaction } from '~/routes/safe/component/AddTransaction/createTransactions' +import { createTransaction } from '~/wallets/createTransactions' import { getGnosisSafeContract } from '~/wallets/safeContracts' import fetchTransactions from '~/routes/safe/store/actions/fetchTransactions' diff --git a/src/routes/safe/test/Safe.withdraw.test.js b/src/routes/safe/test/Safe.withdraw.test.js deleted file mode 100644 index d708a83ef4..0000000000 --- a/src/routes/safe/test/Safe.withdraw.test.js +++ /dev/null @@ -1,125 +0,0 @@ -// @flow -import * as React from 'react' -import TestUtils from 'react-dom/test-utils' -import { Provider } from 'react-redux' -import { ConnectedRouter } from 'react-router-redux' -import Button from '~/components/layout/Button' -import { aNewStore, history } from '~/store' -import { addEtherTo } from '~/test/utils/etherMovements' -import { aDeployedSafe, executeWithdrawOn } from '~/routes/safe/store/test/builder/deployedSafe.builder' -import { SAFELIST_ADDRESS } from '~/routes/routes' -import SafeView from '~/routes/safe/component/Safe' -import AppRoutes from '~/routes' -import { WITHDRAW_BUTTON_TEXT } from '~/routes/safe/component/Safe/DailyLimit' -import WithdrawComponent, { SEE_TXS_BUTTON_TEXT } from '~/routes/safe/component/Withdraw' -import { getBalanceInEtherOf } from '~/wallets/getWeb3' -import { sleep } from '~/utils/timer' -import { getDailyLimitFrom } from '~/routes/safe/component/Withdraw/withdraw' -import { type DailyLimitProps } from '~/routes/safe/store/model/dailyLimit' -import { ADD_MULTISIG_BUTTON_TEXT } from '~/routes/safe/component/Safe/MultisigTx' -import { WITHDRAW_INDEX, MOVE_FUNDS_INDEX } from '~/test/builder/safe.dom.utils' -import { buildMathPropsFrom } from '~/test/utils/buildReactRouterProps' -import { safeSelector } from '~/routes/safe/store/selectors/index' - -describe('React DOM TESTS > Withdraw funds from safe', () => { - let SafeDom - let store - let address - beforeEach(async () => { - // create store - store = aNewStore() - // deploy safe updating store - address = await aDeployedSafe(store) - // navigate to SAFE route - history.push(`${SAFELIST_ADDRESS}/${address}`) - SafeDom = TestUtils.renderIntoDocument(( - - - - - - )) - }) - - it('should withdraw funds under dailyLimit without needing confirmations', async () => { - // add funds to safe - await addEtherTo(address, '0.1') - await sleep(3000) - const Safe = TestUtils.findRenderedComponentWithType(SafeDom, SafeView) - - // $FlowFixMe - const buttons = TestUtils.scryRenderedDOMComponentsWithTag(Safe, 'button') - const addWithdrawButton = buttons[WITHDRAW_INDEX] - expect(addWithdrawButton.getElementsByTagName('span')[0].innerHTML).toEqual(WITHDRAW_BUTTON_TEXT) - TestUtils.Simulate.click(addWithdrawButton) - await sleep(4000) - const Withdraw = TestUtils.findRenderedComponentWithType(SafeDom, WithdrawComponent) - - // $FlowFixMe - const inputs = TestUtils.scryRenderedDOMComponentsWithTag(Withdraw, 'input') - const amountInEth = inputs[0] - const toAddress = inputs[1] - TestUtils.Simulate.change(amountInEth, { target: { value: '0.01' } }) - TestUtils.Simulate.change(toAddress, { target: { value: store.getState().providers.account } }) - - // $FlowFixMe - const form = TestUtils.findRenderedDOMComponentWithTag(Withdraw, 'form') - - TestUtils.Simulate.submit(form) // fill the form - TestUtils.Simulate.submit(form) // confirming data - await sleep(6000) - - const safeBalance = await getBalanceInEtherOf(address) - expect(safeBalance).toBe('0.09') - - // $FlowFixMe - const withdrawButtons = TestUtils.scryRenderedComponentsWithType(Withdraw, Button) - const visitTxsButton = withdrawButtons[0] - expect(visitTxsButton.props.children).toEqual(SEE_TXS_BUTTON_TEXT) - }) - - it('spentToday dailyLimitModule property is updated correctly', async () => { - // add funds to safe - await addEtherTo(address, '0.1') - - const match: Match = buildMathPropsFrom(address) - const safe = safeSelector(store.getState(), { match }) - await executeWithdrawOn(safe, 0.01) - await executeWithdrawOn(safe, 0.01) - - const ethAddress = 0 - const dailyLimit: DailyLimitProps = await getDailyLimitFrom(address, ethAddress) - - // THEN - expect(dailyLimit.value).toBe(0.5) - expect(dailyLimit.spentToday).toBe(0.02) - }) - - it('add multisig txs button disabled when balance is 0', async () => { - const Safe = TestUtils.findRenderedComponentWithType(SafeDom, SafeView) - // $FlowFixMe - const buttons = TestUtils.scryRenderedDOMComponentsWithTag(Safe, 'button') - const addTxButton = buttons[MOVE_FUNDS_INDEX] - expect(addTxButton.getElementsByTagName('span')[0].innerHTML).toEqual(ADD_MULTISIG_BUTTON_TEXT) - expect(addTxButton.hasAttribute('disabled')).toBe(true) - - await addEtherTo(address, '0.1') - await sleep(1800) - - expect(addTxButton.hasAttribute('disabled')).toBe(false) - }) - - it('Withdraw button disabled when balance is 0', async () => { - const Safe = TestUtils.findRenderedComponentWithType(SafeDom, SafeView) - // $FlowFixMe - const buttons = TestUtils.scryRenderedDOMComponentsWithTag(Safe, 'button') - const addWithdrawButton = buttons[WITHDRAW_INDEX] - expect(addWithdrawButton.getElementsByTagName('span')[0].innerHTML).toEqual(WITHDRAW_BUTTON_TEXT) - expect(addWithdrawButton.hasAttribute('disabled')).toBe(true) - - await addEtherTo(address, '0.1') - await sleep(1800) - - expect(addWithdrawButton.hasAttribute('disabled')).toBe(false) - }) -}) diff --git a/src/routes/safe/test/testMultisig.js b/src/routes/safe/test/testMultisig.js index d8bf4c87ba..2f9f165546 100644 --- a/src/routes/safe/test/testMultisig.js +++ b/src/routes/safe/test/testMultisig.js @@ -1,114 +1,9 @@ // @flow -import TestUtils from 'react-dom/test-utils' -import { sleep } from '~/utils/timer' -import { getBalanceInEtherOf } from '~/wallets/getWeb3' -import { ADD_MULTISIG_BUTTON_TEXT, SEE_MULTISIG_BUTTON_TEXT } from '~/routes/safe/component/Safe/MultisigTx' -import { addEtherTo } from '~/test/utils/etherMovements' -import SafeView from '~/routes/safe/component/Safe' -import TransactionsComponent from '~/routes/safe/component/Transactions' -import TransactionComponent from '~/routes/safe/component/Transactions/Transaction' import { safeTransactionsSelector } from '~/routes/safe/store/selectors/index' import { type GlobalState } from '~/store/index' -import ListItemText from '~/components/List/ListItemText' -import { MOVE_FUNDS_INDEX, LIST_TXS_INDEX } from '~/test/builder/safe.dom.utils' - -export const createMultisigTxFilling = async ( - SafeDom: React$Component, - AddTransactionComponent: React$ElementType, - store: Store, -) => { - // Get AddTransaction form component - const AddTransaction = TestUtils.findRenderedComponentWithType(SafeDom, AddTransactionComponent) - - // $FlowFixMe - const inputs = TestUtils.scryRenderedDOMComponentsWithTag(AddTransaction, 'input') - const name = inputs[0] - const destination = inputs[1] - const amountInEth = inputs[2] - TestUtils.Simulate.change(name, { target: { value: 'Buying betteries' } }) - TestUtils.Simulate.change(amountInEth, { target: { value: '0.01' } }) - TestUtils.Simulate.change(destination, { target: { value: store.getState().providers.account } }) - - // $FlowFixMe - const form = TestUtils.findRenderedDOMComponentWithTag(AddTransaction, 'form') - - TestUtils.Simulate.submit(form) // fill the form - TestUtils.Simulate.submit(form) // confirming data - return sleep(4000) -} - -export const checkBalanceOf = async (addressToTest: string, value: string) => { - const safeBalance = await getBalanceInEtherOf(addressToTest) - expect(safeBalance).toBe(value) -} - -export const addFundsTo = async (SafeDom: React$Component, destination: string) => { - // add funds to safe - await addEtherTo(destination, '0.1') - const Safe = TestUtils.findRenderedComponentWithType(SafeDom, SafeView) - - // $FlowFixMe - const buttons = TestUtils.scryRenderedDOMComponentsWithTag(Safe, 'button') - const addTxButton = buttons[MOVE_FUNDS_INDEX] - expect(addTxButton.getElementsByTagName('span')[0].innerHTML).toEqual(ADD_MULTISIG_BUTTON_TEXT) - - await sleep(1800) // Give time to enable Add button - TestUtils.Simulate.click(addTxButton) -} - -export const listTxsOf = (SafeDom: React$Component) => { - const Safe = TestUtils.findRenderedComponentWithType(SafeDom, SafeView) - - // $FlowFixMe - const buttons = TestUtils.scryRenderedDOMComponentsWithTag(Safe, 'button') - const seeTx = buttons[LIST_TXS_INDEX] - expect(seeTx.getElementsByTagName('span')[0].innerHTML).toEqual(SEE_MULTISIG_BUTTON_TEXT) - TestUtils.Simulate.click(seeTx) -} - -export const getListItemsFrom = (SafeDom: React$Component) => { - const Transactions = TestUtils.findRenderedComponentWithType(SafeDom, TransactionsComponent) - if (!Transactions) throw new Error() - const Transaction = TestUtils.findRenderedComponentWithType(Transactions, TransactionComponent) - if (!Transaction) throw new Error() - - return TestUtils.scryRenderedComponentsWithType(Transaction, ListItemText) -} - -export const expandTransactionOf = async ( - SafeDom: React$Component, - numOwners: number, - safeThreshold: number, -) => { - const listItems = getListItemsFrom(SafeDom) - TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(listItems[2], 'p')[0]) // expanded - await sleep(2500) // Time to expand - const listItemsExpanded = getListItemsFrom(SafeDom) - const threshold = listItemsExpanded[5] - expect(threshold.props.secondary).toContain(`confirmation${safeThreshold === 1 ? '' : 's'} needed`) - TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(threshold, 'p')[0]) // expanded - await sleep(2500) // Time to expand - expect(listItemsExpanded.length).toBe(listItems.length + numOwners) -} export const getTransactionFromReduxStore = (store: Store, address: string, index: number = 0) => { const transactions = safeTransactionsSelector(store.getState(), { safeAddress: address }) return transactions.get(index) } - -export const confirmOwners = async (SafeDom: React$Component, ...statusses: string[]) => { - const Transactions = TestUtils.findRenderedComponentWithType(SafeDom, TransactionsComponent) - if (!Transactions) throw new Error() - const Transaction = TestUtils.findRenderedComponentWithType(Transactions, TransactionComponent) - if (!Transaction) throw new Error() - - const listItems = TestUtils.scryRenderedComponentsWithType(Transaction, ListItemText) - - for (let i = 0; i < statusses.length; i += 1) { - const ownerIndex = i + 6 - const ownerParagraph = listItems[ownerIndex].props.primary - - expect(statusses[i]).toEqual(ownerParagraph) - } -} diff --git a/src/routes/safeList/store/test/safes.selector.js b/src/routes/safeList/store/test/safes.selector.js index b5946457d0..a5f2023053 100644 --- a/src/routes/safeList/store/test/safes.selector.js +++ b/src/routes/safeList/store/test/safes.selector.js @@ -21,7 +21,7 @@ const safesListSelectorTests = () => { const reduxStore = { [PROVIDER_REDUCER_ID]: walletRecord, [SAFE_REDUCER_ID]: Map(), - balances: undefined, + tokens: undefined, transactions: undefined, } const emptyList = List([]) @@ -42,7 +42,7 @@ const safesListSelectorTests = () => { const reduxStore = { [PROVIDER_REDUCER_ID]: walletRecord, [SAFE_REDUCER_ID]: map, - balances: undefined, + tokens: undefined, transactions: undefined, } @@ -62,7 +62,7 @@ const safesListSelectorTests = () => { const reduxStore = { [PROVIDER_REDUCER_ID]: walletRecord, [SAFE_REDUCER_ID]: map, - balances: undefined, + tokens: undefined, transactions: undefined, } @@ -83,7 +83,7 @@ const safesListSelectorTests = () => { const reduxStore = { [SAFE_REDUCER_ID]: map, [PROVIDER_REDUCER_ID]: walletRecord, - balances: undefined, + tokens: undefined, transactions: undefined, } @@ -105,7 +105,7 @@ const safesListSelectorTests = () => { const reduxStore = { [SAFE_REDUCER_ID]: map, [PROVIDER_REDUCER_ID]: walletRecord, - balances: undefined, + tokens: undefined, transactions: undefined, } diff --git a/src/routes/tokens/component/AddToken/AddTokenForm.stories.js b/src/routes/tokens/component/AddToken/AddTokenForm.stories.js new file mode 100644 index 0000000000..d0b4443e9f --- /dev/null +++ b/src/routes/tokens/component/AddToken/AddTokenForm.stories.js @@ -0,0 +1,18 @@ +// @flow +import { storiesOf } from '@storybook/react' +import * as React from 'react' +import { List } from 'immutable' +import styles from '~/components/layout/PageFrame/index.scss' +import AddTokenForm from './index' + +const FrameDecorator = story => ( +
+ { story() } +
+) +storiesOf('Components', module) + .addDecorator(FrameDecorator) + .add('AddTokenForm', () => ( + // $FlowFixMe + + )) diff --git a/src/routes/tokens/component/AddToken/FirstPage.jsx b/src/routes/tokens/component/AddToken/FirstPage.jsx new file mode 100644 index 0000000000..05535ff153 --- /dev/null +++ b/src/routes/tokens/component/AddToken/FirstPage.jsx @@ -0,0 +1,56 @@ +// @flow +import * as React from 'react' +import Field from '~/components/forms/Field' +import TextField from '~/components/forms/TextField' +import { composeValidators, required, mustBeEthereumAddress, uniqueAddress } from '~/components/forms/validator' +import Block from '~/components/layout/Block' +import Heading from '~/components/layout/Heading' +import { promisify } from '~/utils/promisify' +import { getWeb3 } from '~/wallets/getWeb3' +import { EMPTY_DATA } from '~/wallets/ethTransactions' +import { getStandardTokenContract } from '~/routes/tokens/store/actions/fetchTokens' + +type Props = { + addresses: string[], +} + +export const TOKEN_ADRESS_PARAM = 'tokenAddress' + +export const token = async (tokenAddress: string) => { + const code = await promisify(cb => getWeb3().eth.getCode(tokenAddress, cb)) + const isDeployed = code !== EMPTY_DATA + + if (!isDeployed) { + return 'Specified address is not deployed on the current network' + } + + const erc20Token = await getStandardTokenContract() + const instance = await erc20Token.at(tokenAddress) + const supply = await instance.totalSupply() + + if (Number(supply) === 0) { + return 'Specified address is not a valid standard token' + } + + return undefined +} + +const FirstPage = ({ addresses }: Props) => () => ( + + + Add Custom ERC20 Token + + + + + +) + +export default FirstPage diff --git a/src/routes/tokens/component/AddToken/Review/index.jsx b/src/routes/tokens/component/AddToken/Review/index.jsx new file mode 100644 index 0000000000..56cc619f81 --- /dev/null +++ b/src/routes/tokens/component/AddToken/Review/index.jsx @@ -0,0 +1,45 @@ +// @flow +import * as React from 'react' +import CircularProgress from '@material-ui/core/CircularProgress' +import Block from '~/components/layout/Block' +import Bold from '~/components/layout/Bold' +import Heading from '~/components/layout/Heading' +import Paragraph from '~/components/layout/Paragraph' +import { TOKEN_ADRESS_PARAM } from '~/routes/tokens/component/AddToken/FirstPage' +import { TOKEN_LOGO_URL_PARAM, TOKEN_NAME_PARAM, TOKEN_SYMBOL_PARAM, TOKEN_DECIMALS_PARAM } from '~/routes/tokens/component/AddToken/SecondPage' + +type FormProps = { + values: Object, + submitting: boolean, +} + +const spinnerStyle = { + minHeight: '50px', +} + +const Review = () => ({ values, submitting }: FormProps) => ( + + Review ERC20 Token operation + + Token address: {values[TOKEN_ADRESS_PARAM]} + + + Token name: {values[TOKEN_NAME_PARAM]} + + + Token symbol: {values[TOKEN_SYMBOL_PARAM]} + + + Token decimals: {values[TOKEN_DECIMALS_PARAM]} + + + Token logo: {values[TOKEN_LOGO_URL_PARAM]} + + + { submitting && } + + +) + + +export default Review diff --git a/src/routes/tokens/component/AddToken/SecondPage.jsx b/src/routes/tokens/component/AddToken/SecondPage.jsx new file mode 100644 index 0000000000..1223e0a99c --- /dev/null +++ b/src/routes/tokens/component/AddToken/SecondPage.jsx @@ -0,0 +1,62 @@ +// @flow +import * as React from 'react' +import Field from '~/components/forms/Field' +import TextField from '~/components/forms/TextField' +import { composeValidators, required, mustBeInteger, mustBeUrl } from '~/components/forms/validator' +import Block from '~/components/layout/Block' +import Heading from '~/components/layout/Heading' + +export const TOKEN_NAME_PARAM = 'tokenName' +export const TOKEN_SYMBOL_PARAM = 'tokenSymbol' +export const TOKEN_DECIMALS_PARAM = 'tokenDecimals' +export const TOKEN_LOGO_URL_PARAM = 'tokenLogo' + +const SecondPage = () => () => ( + + + Complete Custom Token information + + + + + + + + + + + + + + +) + +export default SecondPage diff --git a/src/routes/tokens/component/AddToken/index.jsx b/src/routes/tokens/component/AddToken/index.jsx new file mode 100644 index 0000000000..7943508047 --- /dev/null +++ b/src/routes/tokens/component/AddToken/index.jsx @@ -0,0 +1,128 @@ +// @flow +import * as React from 'react' +import Stepper from '~/components/Stepper' +import { getHumanFriendlyToken } from '~/routes/tokens/store/actions/fetchTokens' +import FirstPage, { TOKEN_ADRESS_PARAM } from '~/routes/tokens/component/AddToken/FirstPage' +import SecondPage, { TOKEN_SYMBOL_PARAM, TOKEN_DECIMALS_PARAM, TOKEN_LOGO_URL_PARAM, TOKEN_NAME_PARAM } from '~/routes/tokens/component/AddToken/SecondPage' +import { makeToken, type Token } from '~/routes/tokens/store/model/token' +import addTokenAction from '~/routes/tokens/store/actions/addToken' +import { getWeb3 } from '~/wallets/getWeb3' +import { promisify } from '~/utils/promisify' +import { EMPTY_DATA } from '~/wallets/ethTransactions' +import Review from './Review' + +export const getSteps = () => [ + 'Fill Add Token Form', 'Check optional attributes', 'Review Information', +] + +type Props = { + tokens: string[], + safeAddress: string, + addToken: typeof addTokenAction, +} + +type State = { + done: boolean, +} + +export const ADD_TOKEN_RESET_BUTTON_TEXT = 'RESET' + +export const addTokenFnc = async (values: Object, addToken: typeof addTokenAction, safeAddress: string) => { + const address = values[TOKEN_ADRESS_PARAM] + const name = values[TOKEN_NAME_PARAM] + const symbol = values[TOKEN_SYMBOL_PARAM] + const decimals = values[TOKEN_DECIMALS_PARAM] + const logo = values[TOKEN_LOGO_URL_PARAM] + + const token: Token = makeToken({ + address, + name, + symbol, + decimals: Number(decimals), + logoUrl: logo, + status: true, + removable: true, + }) + + return addToken(safeAddress, token) +} + +class AddToken extends React.Component { + state = { + done: false, + } + + onAddToken = async (values: Object) => { + const { addToken, safeAddress } = this.props + + const result = addTokenFnc(values, addToken, safeAddress) + this.setState({ done: true }) + + return result + } + + onReset = () => { + this.setState({ done: false }) + } + + fetchInitialPropsSecondPage = async (values: Object) => { + const tokenAddress = values[TOKEN_ADRESS_PARAM] + const erc20Token = await getHumanFriendlyToken() + const instance = await erc20Token.at(tokenAddress) + + const dataName = await instance.contract.name.getData() + const nameResult = await promisify(cb => getWeb3().eth.call({ to: tokenAddress, data: dataName }, cb)) + const hasName = nameResult !== EMPTY_DATA + + const dataSymbol = await instance.contract.symbol.getData() + const symbolResult = await promisify(cb => getWeb3().eth.call({ to: tokenAddress, data: dataSymbol }, cb)) + const hasSymbol = symbolResult !== EMPTY_DATA + + const dataDecimals = await instance.contract.decimals.getData() + const decimalsResult = await promisify(cb => getWeb3().eth.call({ to: tokenAddress, data: dataDecimals }, cb)) + const hasDecimals = decimalsResult !== EMPTY_DATA + + + const name = hasName ? await instance.name() : undefined + const symbol = hasSymbol ? await instance.symbol() : undefined + const decimals = hasDecimals ? `${await instance.decimals()}` : undefined + + return ({ + [TOKEN_SYMBOL_PARAM]: symbol, + [TOKEN_DECIMALS_PARAM]: decimals, + [TOKEN_NAME_PARAM]: name, + }) + } + + render() { + const { tokens, safeAddress } = this.props + const { done } = this.state + const steps = getSteps() + const finishedButton = + + return ( + + + + { FirstPage } + + + { SecondPage } + + + { Review } + + + + ) + } +} + +export default AddToken diff --git a/src/routes/tokens/component/Layout.jsx b/src/routes/tokens/component/Layout.jsx new file mode 100644 index 0000000000..9fdaa86782 --- /dev/null +++ b/src/routes/tokens/component/Layout.jsx @@ -0,0 +1,126 @@ +// @flow +import MuiList from '@material-ui/core/List' +import * as React from 'react' +import Block from '~/components/layout/Block' +import Col from '~/components/layout/Col' +import AccountBalanceWallet from '@material-ui/icons/AccountBalanceWallet' +import AddCircle from '@material-ui/icons/AddCircle' +import Link from '~/components/layout/Link' +import Bold from '~/components/layout/Bold' +import Img from '~/components/layout/Img' +import IconButton from '@material-ui/core/IconButton' +import Paragraph from '~/components/layout/Paragraph' +import Row from '~/components/layout/Row' +import { type Token } from '~/routes/tokens/store/model/token' +import { type SelectorProps } from '~/routes/tokens/container/selector' +import { type Actions } from '~/routes/tokens/container/actions' +import { SAFELIST_ADDRESS } from '~/routes/routes' +import AddToken from '~/routes/tokens/component/AddToken' +import RemoveToken from '~/routes/tokens/component/RemoveToken' +import TokenComponent from './Token' + +const safeIcon = require('~/routes/safe/component/Safe/assets/gnosis_safe.svg') + +type TokenProps = SelectorProps & Actions + +type State = { + component: React$Node, +} + +const listStyle = { + width: '100%', + paddingBottom: 0, +} + +class TokenLayout extends React.PureComponent { + state = { + component: undefined, + } + + onAddToken = () => { + const { addresses, safeAddress, addToken } = this.props + + this.setState({ + component: , + }) + } + + onReset = () => { + this.setState({ component: undefined }) + } + + onRemoveToken = (token: Token) => { + const { safeAddress, removeToken } = this.props + + this.setState({ + component: , + }) + } + + onEnableToken = (token: Token) => { + const { enableToken, safe } = this.props + const safeAddress = safe.get('address') + + enableToken(safeAddress, token) + } + + onDisableToken = (token: Token) => { + const { disableToken, safe } = this.props + const safeAddress = safe.get('address') + + disableToken(safeAddress, token) + } + + render() { + const { safe, safeAddress, tokens } = this.props + const { component } = this.state + const name = safe ? safe.get('name') : '' + + return ( + + + + {tokens.map((token: Token) => ( + + ))} + + + + + + + + + + + + {name} + + + + + { component || Safe Icon } + + + + + ) + } +} + +export default TokenLayout diff --git a/src/routes/tokens/component/RemoveToken/Review.jsx b/src/routes/tokens/component/RemoveToken/Review.jsx new file mode 100644 index 0000000000..c955fb5b97 --- /dev/null +++ b/src/routes/tokens/component/RemoveToken/Review.jsx @@ -0,0 +1,38 @@ +// @flow +import * as React from 'react' +import CircularProgress from '@material-ui/core/CircularProgress' +import Block from '~/components/layout/Block' +import Bold from '~/components/layout/Bold' +import Heading from '~/components/layout/Heading' +import Paragraph from '~/components/layout/Paragraph' + +type Props = { + name: string, + funds: string, + symbol: string, +} + +type FormProps = { + submitting: boolean, +} + +const spinnerStyle = { + minHeight: '50px', +} + +const Review = ({ name, funds, symbol }: Props) => ({ submitting }: FormProps) => ( + + Remove CUSTOM ERC 20 Token + + You are about to remove the custom token: {name} + + + {`You have ${funds} ${symbol} in your wallet`} + + + { submitting && } + + +) + +export default Review diff --git a/src/routes/tokens/component/RemoveToken/index.jsx b/src/routes/tokens/component/RemoveToken/index.jsx new file mode 100644 index 0000000000..427be33adc --- /dev/null +++ b/src/routes/tokens/component/RemoveToken/index.jsx @@ -0,0 +1,73 @@ +// @flow +import * as React from 'react' +import { type Token } from '~/routes/tokens/store/model/token' +import Stepper from '~/components/Stepper' +import RemoveTokenAction from '~/routes/tokens/store/actions/removeToken' +import Review from '~/routes/tokens/component/RemoveToken/Review' + +const getSteps = () => [ + 'Review remove token operation', +] + +type Props = { + token: Token, + safeAddress: string, + removeTokenAction: typeof RemoveTokenAction, + onReset: () => void, +} + +type State = { + done: boolean, +} + +export const REMOVE_TOKEN_RESET_BUTTON_TEXT = 'RESET' + +export const removeToken = async (safeAddress: string, token: Token, removeTokenAction: typeof RemoveTokenAction) => + removeTokenAction(safeAddress, token) + +class RemoveToken extends React.PureComponent { + state = { + done: false, + } + + onRemoveReset = () => { + this.setState({ done: false }, this.props.onReset()) + } + + executeRemoveOperation = async () => { + try { + const { token, safeAddress, removeTokenAction } = this.props + await removeToken(safeAddress, token, removeTokenAction) + this.setState({ done: true }) + } catch (error) { + this.setState({ done: false }) + // eslint-disable-next-line + console.log('Error while removing owner ' + error) + } + } + + render() { + const { done } = this.state + const { token } = this.props + const finishedButton = + const steps = getSteps() + + return ( + + + + { Review } + + + + ) + } +} + +export default RemoveToken diff --git a/src/routes/tokens/component/Token/index.jsx b/src/routes/tokens/component/Token/index.jsx new file mode 100644 index 0000000000..99515ef325 --- /dev/null +++ b/src/routes/tokens/component/Token/index.jsx @@ -0,0 +1,96 @@ +// @flow +import * as React from 'react' +import { type Token } from '~/routes/tokens/store/model/token' +import { withStyles } from '@material-ui/core/styles' +import Block from '~/components/layout/Block' +import Checkbox from '@material-ui/core/Checkbox' +import Card from '@material-ui/core/Card' +import CardContent from '@material-ui/core/CardContent' +import CardMedia from '@material-ui/core/CardMedia' +import Typography from '@material-ui/core/Typography' +import { isEther } from '~/utils/tokens' +import Delete from '@material-ui/icons/Delete' +import IconButton from '@material-ui/core/IconButton' +import { type WithStyles } from '~/theme/mui' + +type Props = WithStyles & { + token: Token, + onRemove: (token: Token)=> void, + onEnableToken: (token: Token) => void, + onDisableToken: (token: Token) => void, +} + +type State = { + checked: boolean, +} + +const styles = () => ({ + card: { + display: 'flex', + }, + details: { + display: 'flex', + flexDirection: 'column', + }, + content: { + flex: '1 0 auto', + }, + cover: { + width: 150, + margin: 10, + backgroundSize: '50%', + }, +}) + +class TokenComponent extends React.PureComponent { + state = { + checked: this.props.token.get('status'), + } + + onRemoveClick = () => this.props.onRemove(this.props.token) + + handleChange = (e: SyntheticInputEvent) => { + const { checked } = e.target + + const callback = checked ? this.props.onEnableToken : this.props.onDisableToken + this.setState(() => ({ checked }), () => callback(this.props.token)) + } + + render() { + const { classes, token } = this.props + const name = token.get('name') + const symbol = token.get('symbol') + const disabled = isEther(symbol) + + return ( + + + + {name} + + + {symbol} + { token.get('removable') && + + + + } + + + + + + ) + } +} + +export default withStyles(styles, { withTheme: true })(TokenComponent) diff --git a/src/routes/tokens/container/actions.js b/src/routes/tokens/container/actions.js new file mode 100644 index 0000000000..74e84ea893 --- /dev/null +++ b/src/routes/tokens/container/actions.js @@ -0,0 +1,21 @@ +// @flow +import addToken from '~/routes/tokens/store/actions/addToken' +import removeToken from '~/routes/tokens/store/actions/removeToken' +import enableToken from '~/routes/tokens/store/actions/enableToken' +import disableToken from '~/routes/tokens/store/actions/disableToken' +import { fetchTokens } from '~/routes/tokens/store/actions/fetchTokens' + +export type Actions = { + enableToken: typeof enableToken, + disableToken: typeof disableToken, + addToken: typeof addToken, + removeToken: typeof removeToken, +} + +export default { + addToken, + removeToken, + enableToken, + disableToken, + fetchTokens, +} diff --git a/src/routes/tokens/container/index.jsx b/src/routes/tokens/container/index.jsx new file mode 100644 index 0000000000..f3fa0b2323 --- /dev/null +++ b/src/routes/tokens/container/index.jsx @@ -0,0 +1,45 @@ +// @flow +import * as React from 'react' +import { connect } from 'react-redux' +import Page from '~/components/layout/Page' +import Layout from '~/routes/tokens/component/Layout' +import { fetchTokens } from '~/routes/tokens/store/actions/fetchTokens' +import selector, { type SelectorProps } from './selector' +import actions, { type Actions } from './actions' + +type Props = Actions & SelectorProps & { + fetchTokens: typeof fetchTokens, +} + +class TokensView extends React.PureComponent { + componentDidUpdate() { + const { safeAddress } = this.props + + if (this.props.tokens.count() === 0) { + this.props.fetchTokens(safeAddress) + } + } + + render() { + const { + tokens, addresses, safe, safeAddress, disableToken, enableToken, addToken, removeToken, + } = this.props + + return ( + + + + ) + } +} + +export default connect(selector, actions)(TokensView) diff --git a/src/routes/tokens/container/selector.js b/src/routes/tokens/container/selector.js new file mode 100644 index 0000000000..1865d4e1cc --- /dev/null +++ b/src/routes/tokens/container/selector.js @@ -0,0 +1,21 @@ +// @flow +import { List } from 'immutable' +import { createStructuredSelector } from 'reselect' +import { tokenListSelector, tokenAddressesSelector } from '~/routes/tokens/store/selectors' +import { type Safe } from '~/routes/safe/store/model/safe' +import { safeSelector, safeParamAddressSelector } from '~/routes/safe/store/selectors' +import { type Token } from '~/routes/tokens/store/model/token' + +export type SelectorProps = { + tokens: List, + addresses: List, + safe: Safe, + safeAddress: string, +} + +export default createStructuredSelector({ + safe: safeSelector, + safeAddress: safeParamAddressSelector, + tokens: tokenListSelector, + addresses: tokenAddressesSelector, +}) diff --git a/src/routes/tokens/store/actions/addToken.js b/src/routes/tokens/store/actions/addToken.js new file mode 100644 index 0000000000..273447ca85 --- /dev/null +++ b/src/routes/tokens/store/actions/addToken.js @@ -0,0 +1,20 @@ +// @flow +import { createAction } from 'redux-actions' +import { type Token } from '~/routes/tokens/store/model/token' + +export const ADD_TOKEN = 'ADD_TOKEN' + +type AddTokenProps = { + safeAddress: string, + token: Token, +} + +const addToken = createAction( + ADD_TOKEN, + (safeAddress: string, token: Token): AddTokenProps => ({ + safeAddress, + token, + }), +) + +export default addToken diff --git a/src/routes/tokens/store/actions/addTokens.js b/src/routes/tokens/store/actions/addTokens.js new file mode 100644 index 0000000000..28705a89e1 --- /dev/null +++ b/src/routes/tokens/store/actions/addTokens.js @@ -0,0 +1,21 @@ +// @flow +import { Map } from 'immutable' +import { createAction } from 'redux-actions' +import { type Token } from '~/routes/tokens/store/model/token' + +export const ADD_TOKENS = 'ADD_TOKENS' + +type TokenProps = { + safeAddress: string, + tokens: Map, +} + +const addTokens = createAction( + ADD_TOKENS, + (safeAddress: string, tokens: Map): TokenProps => ({ + safeAddress, + tokens, + }), +) + +export default addTokens diff --git a/src/routes/tokens/store/actions/disableToken.js b/src/routes/tokens/store/actions/disableToken.js new file mode 100644 index 0000000000..08abba2ae5 --- /dev/null +++ b/src/routes/tokens/store/actions/disableToken.js @@ -0,0 +1,15 @@ +// @flow +import { createAction } from 'redux-actions' +import { type Token } from '~/routes/tokens/store/model/token' + +export const DISABLE_TOKEN = 'DISABLE_TOKEN' + +const disableToken = createAction( + DISABLE_TOKEN, + (safeAddress: string, token: Token) => ({ + safeAddress, + address: token.get('address'), + }), +) + +export default disableToken diff --git a/src/routes/tokens/store/actions/enableToken.js b/src/routes/tokens/store/actions/enableToken.js new file mode 100644 index 0000000000..99d7ff9561 --- /dev/null +++ b/src/routes/tokens/store/actions/enableToken.js @@ -0,0 +1,15 @@ +// @flow +import { createAction } from 'redux-actions' +import { type Token } from '~/routes/tokens/store/model/token' + +export const ENABLE_TOKEN = 'ENABLE_TOKEN' + +const enableToken = createAction( + ENABLE_TOKEN, + (safeAddress: string, token: Token) => ({ + safeAddress, + address: token.get('address'), + }), +) + +export default enableToken diff --git a/src/routes/tokens/store/actions/fetchTokens.js b/src/routes/tokens/store/actions/fetchTokens.js new file mode 100644 index 0000000000..60c409796d --- /dev/null +++ b/src/routes/tokens/store/actions/fetchTokens.js @@ -0,0 +1,85 @@ +// @flow +import { List, Map } from 'immutable' +import contract from 'truffle-contract' +import type { Dispatch as ReduxDispatch } from 'redux' +import StandardToken from '@gnosis.pm/util-contracts/build/contracts/StandardToken.json' +import HumanFriendlyToken from '@gnosis.pm/util-contracts/build/contracts/HumanFriendlyToken.json' +import { getWeb3 } from '~/wallets/getWeb3' +import { type GlobalState } from '~/store/index' +import { makeToken, type Token, type TokenProps } from '~/routes/tokens/store/model/token' +import { ensureOnce } from '~/utils/singleton' +import { getActiveTokenAddresses, getTokens } from '~/utils/localStorage/tokens' +import { getSafeEthToken } from '~/utils/tokens' +import { enhancedFetch } from '~/utils/fetch' +import addTokens from './addTokens' + +const createStandardTokenContract = async () => { + const web3 = getWeb3() + const erc20Token = await contract(StandardToken) + erc20Token.setProvider(web3.currentProvider) + + return erc20Token +} +const createHumanFriendlyTokenContract = async () => { + const web3 = getWeb3() + const humanErc20Token = await contract(HumanFriendlyToken) + humanErc20Token.setProvider(web3.currentProvider) + + return humanErc20Token +} + +export const getHumanFriendlyToken = ensureOnce(createHumanFriendlyTokenContract) + +export const getStandardTokenContract = ensureOnce(createStandardTokenContract) + +export const calculateBalanceOf = async (tokenAddress: string, address: string, decimals: number) => { + const erc20Token = await getStandardTokenContract() + + return erc20Token.at(tokenAddress) + .then(instance => instance.balanceOf(address).then(funds => funds.div(10 ** decimals).toString())) + .catch(() => '0') +} + +export const fetchTokensData = async () => { + const url = 'https://gist.githubusercontent.com/rmeissner/98911fcf74b0ea9731e2dae2441c97a4/raw/' + const errMsg = 'Error querying safe balances' + return enhancedFetch(url, errMsg) +} + +export const fetchTokens = (safeAddress: string) => + async (dispatch: ReduxDispatch) => { + const tokens: List = getActiveTokenAddresses(safeAddress) + const ethBalance = await getSafeEthToken(safeAddress) + const customTokens = getTokens(safeAddress) + const json = await exports.fetchTokensData() + + try { + const balancesRecords = await Promise.all(json.map(async (item: TokenProps) => { + const status = tokens.includes(item.address) + const funds = status ? await calculateBalanceOf(item.address, safeAddress, item.decimals) : '0' + + return makeToken({ ...item, status, funds }) + })) + + const customTokenRecords = await Promise.all(customTokens.map(async (item: TokenProps) => { + const status = tokens.includes(item.address) + const funds = status ? await calculateBalanceOf(item.address, safeAddress, item.decimals) : '0' + + return makeToken({ ...item, status, funds }) + })) + + const balances: Map = Map().withMutations((map) => { + balancesRecords.forEach(record => map.set(record.get('address'), record)) + customTokenRecords.forEach(record => map.set(record.get('address'), record)) + + map.set(ethBalance.get('address'), ethBalance) + }) + + return dispatch(addTokens(safeAddress, balances)) + } catch (err) { + // eslint-disable-next-line + console.log("Error fetching token balances... " + err) + + return Promise.resolve() + } + } diff --git a/src/routes/tokens/store/actions/removeToken.js b/src/routes/tokens/store/actions/removeToken.js new file mode 100644 index 0000000000..d94a84d40a --- /dev/null +++ b/src/routes/tokens/store/actions/removeToken.js @@ -0,0 +1,20 @@ +// @flow +import { createAction } from 'redux-actions' +import { type Token } from '~/routes/tokens/store/model/token' + +export const REMOVE_TOKEN = 'REMOVE_TOKEN' + +type RemoveTokenProps = { + safeAddress: string, + token: Token, +} + +const removeToken = createAction( + REMOVE_TOKEN, + (safeAddress: string, token: Token): RemoveTokenProps => ({ + safeAddress, + token, + }), +) + +export default removeToken diff --git a/src/routes/tokens/store/model/token.js b/src/routes/tokens/store/model/token.js new file mode 100644 index 0000000000..713a68e3ab --- /dev/null +++ b/src/routes/tokens/store/model/token.js @@ -0,0 +1,27 @@ +// @flow +import { Record } from 'immutable' +import type { RecordFactory, RecordOf } from 'immutable' + +export type TokenProps = { + address: string, + name: string, + symbol: string, + decimals: number, + logoUrl: string, + funds: string, + status: boolean, + removable: boolean, +} + +export const makeToken: RecordFactory = Record({ + address: '', + name: '', + symbol: '', + decimals: 0, + logoUrl: '', + funds: '0', + status: true, + removable: false, +}) + +export type Token = RecordOf diff --git a/src/routes/tokens/store/reducer/tokens.js b/src/routes/tokens/store/reducer/tokens.js new file mode 100644 index 0000000000..a37cb29865 --- /dev/null +++ b/src/routes/tokens/store/reducer/tokens.js @@ -0,0 +1,73 @@ +// @flow +import { List, Map } from 'immutable' +import { handleActions, type ActionType } from 'redux-actions' +import addToken, { ADD_TOKEN } from '~/routes/tokens/store/actions/addToken' +import removeToken, { REMOVE_TOKEN } from '~/routes/tokens/store/actions/removeToken' +import addTokens, { ADD_TOKENS } from '~/routes/tokens/store/actions/addTokens' +import { type Token } from '~/routes/tokens/store/model/token' +import disableToken, { DISABLE_TOKEN } from '~/routes/tokens/store/actions/disableToken' +import enableToken, { ENABLE_TOKEN } from '~/routes/tokens/store/actions/enableToken' +import { setActiveTokenAddresses, getActiveTokenAddresses, setToken, removeTokenFromStorage } from '~/utils/localStorage/tokens' +import { ensureOnce } from '~/utils/singleton' +import { calculateActiveErc20TokensFrom } from '~/utils/tokens' + +export const TOKEN_REDUCER_ID = 'tokens' + +export type State = Map> + +const setTokensOnce = ensureOnce(setActiveTokenAddresses) + +const removeFromActiveTokens = (safeAddress: string, tokenAddress: string) => { + const activeTokens = getActiveTokenAddresses(safeAddress) + const index = activeTokens.indexOf(tokenAddress) + setActiveTokenAddresses(safeAddress, activeTokens.delete(index)) +} + +export default handleActions({ + [ADD_TOKENS]: (state: State, action: ActionType): State => { + const { safeAddress, tokens } = action.payload + + const activeAddresses: List = calculateActiveErc20TokensFrom(tokens.toList()) + setTokensOnce(safeAddress, activeAddresses) + + return state.update(safeAddress, (prevSafe: Map) => { + if (!prevSafe) { + return tokens + } + + return prevSafe.equals(tokens) ? prevSafe : tokens + }) + }, + [ADD_TOKEN]: (state: State, action: ActionType): State => { + const { safeAddress, token } = action.payload + + const tokenAddress = token.get('address') + const activeTokens = getActiveTokenAddresses(safeAddress) + setActiveTokenAddresses(safeAddress, activeTokens.push(tokenAddress)) + setToken(safeAddress, token) + return state.setIn([safeAddress, tokenAddress], token) + }, + [REMOVE_TOKEN]: (state: State, action: ActionType): State => { + const { safeAddress, token } = action.payload + + const tokenAddress = token.get('address') + removeFromActiveTokens(safeAddress, tokenAddress) + removeTokenFromStorage(safeAddress, token) + return state.removeIn([safeAddress, tokenAddress]) + }, + [DISABLE_TOKEN]: (state: State, action: ActionType): State => { + const { address, safeAddress } = action.payload + + removeFromActiveTokens(safeAddress, address) + + return state.setIn([safeAddress, address, 'status'], false) + }, + [ENABLE_TOKEN]: (state: State, action: ActionType): State => { + const { address, safeAddress } = action.payload + + const activeTokens = getActiveTokenAddresses(safeAddress) + setActiveTokenAddresses(safeAddress, activeTokens.push(address)) + + return state.setIn([safeAddress, address, 'status'], true) + }, +}, Map()) diff --git a/src/routes/tokens/store/selectors/index.js b/src/routes/tokens/store/selectors/index.js new file mode 100644 index 0000000000..2339dcb51e --- /dev/null +++ b/src/routes/tokens/store/selectors/index.js @@ -0,0 +1,41 @@ +// @flow +import { List, Map } from 'immutable' +import { createSelector, type Selector } from 'reselect' +import { safeParamAddressSelector, type RouterProps } from '~/routes/safe/store/selectors' +import { type GlobalState } from '~/store' +import { TOKEN_REDUCER_ID } from '~/routes/tokens/store/reducer/tokens' +import { type Token } from '~/routes/tokens/store/model/token' + +const balancesSelector = (state: GlobalState) => state[TOKEN_REDUCER_ID] + +export const tokensSelector: Selector> = createSelector( + balancesSelector, + safeParamAddressSelector, + (tokens: Map>, address: string) => { + if (!address) { + return Map() + } + + return tokens.get(address) || Map() + }, +) + +export const tokenListSelector = createSelector( + tokensSelector, + (tokens: Map) => tokens.toList(), +) + +export const activeTokensSelector = createSelector( + tokenListSelector, + (tokens: List) => tokens.filter((token: Token) => token.get('status')), +) + +export const tokenAddressesSelector = createSelector( + tokenListSelector, + (balances: List) => { + const addresses = List().withMutations(list => + balances.map(token => list.push(token.address))) + + return addresses + }, +) diff --git a/src/store/index.js b/src/store/index.js index c968b44d79..48924c8a9f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,7 +5,7 @@ import { combineReducers, createStore, applyMiddleware, compose, type Reducer, t import thunk from 'redux-thunk' import provider, { PROVIDER_REDUCER_ID, type State as ProviderState } from '~/wallets/store/reducer/provider' import safe, { SAFE_REDUCER_ID, type State as SafeState } from '~/routes/safe/store/reducer/safe' -import balances, { BALANCE_REDUCER_ID, type State as BalancesState } from '~/routes/safe/store/reducer/balances' +import tokens, { TOKEN_REDUCER_ID, type State as TokensState } from '~/routes/tokens/store/reducer/tokens' import transactions, { type State as TransactionsState, transactionsInitialState, TRANSACTIONS_REDUCER_ID } from '~/routes/safe/store/reducer/transactions' export const history = createBrowserHistory() @@ -20,7 +20,7 @@ const finalCreateStore = composeEnhancers(applyMiddleware( export type GlobalState = { providers: ProviderState, safes: SafeState, - balances: BalancesState, + tokens: TokensState, transactions: TransactionsState, } @@ -28,7 +28,7 @@ const reducers: Reducer = combineReducers({ routing: routerReducer, [PROVIDER_REDUCER_ID]: provider, [SAFE_REDUCER_ID]: safe, - [BALANCE_REDUCER_ID]: balances, + [TOKEN_REDUCER_ID]: tokens, [TRANSACTIONS_REDUCER_ID]: transactions, }) diff --git a/src/test/Layout.test.js b/src/test/Layout.test.js deleted file mode 100644 index 49aa8a74d0..0000000000 --- a/src/test/Layout.test.js +++ /dev/null @@ -1,74 +0,0 @@ -// @flow -import TestUtils from 'react-dom/test-utils' -import { store } from '~/store' -import { - FIELD_NAME, - FIELD_OWNERS, - FIELD_CONFIRMATIONS, - FIELD_DAILY_LIMIT, - getOwnerNameBy, - getOwnerAddressBy, -} from '~/routes/open/components/fields' -import { DEPLOYED_COMPONENT_ID } from '~/routes/open/components/FormConfirmation' -import { sleep } from '~/utils/timer' -import { getProviderInfo } from '~/wallets/getWeb3' -import { renderSafe } from '~/routes/safe/store/test/builder/deployedSafe.builder' - -describe('React DOM TESTS > Create Safe form', () => { - let open - let provider - beforeEach(async () => { - provider = await getProviderInfo() - open = await renderSafe(store) - }) - - it('should create a 1 owner safe after rendering correctly the form', async () => { - const inputs = TestUtils.scryRenderedDOMComponentsWithTag(open, 'input') - const fieldName = inputs[0] - expect(fieldName.name).toEqual(FIELD_NAME) - - const fieldOwners = inputs[1] - expect(fieldOwners.name).toEqual(FIELD_OWNERS) - - const fieldConfirmations = inputs[2] - expect(fieldConfirmations.name).toEqual(FIELD_CONFIRMATIONS) - - const dailyLimitConfirmations = inputs[3] - expect(dailyLimitConfirmations.name).toEqual(FIELD_DAILY_LIMIT) - - TestUtils.Simulate.change(fieldOwners, { target: { value: '1' } }) - const inputsExpanded = TestUtils.scryRenderedDOMComponentsWithTag(open, 'input') - - const ownerName = inputsExpanded[2] - expect(ownerName.name).toEqual(getOwnerNameBy(0)) - const ownerAddress = inputsExpanded[3] - expect(ownerAddress.name).toEqual(getOwnerAddressBy(0)) - expect(ownerAddress.value).toEqual(provider.account) - - // WHEN - TestUtils.Simulate.change(fieldName, { target: { value: 'Adolfo Safe' } }) - TestUtils.Simulate.change(fieldConfirmations, { target: { value: '1' } }) - TestUtils.Simulate.change(ownerName, { target: { value: 'Adolfo Eth Account' } }) - TestUtils.Simulate.change(dailyLimitConfirmations, { target: { value: '10' } }) - - const form = TestUtils.findRenderedDOMComponentWithTag(open, 'form') - // One submit per step when creating a safe - TestUtils.Simulate.submit(form) // fill the form - TestUtils.Simulate.submit(form) // confirming data - TestUtils.Simulate.submit(form) // Executing transaction - - // giving some time to the component for updating its state with safe - // before destroying its context - await sleep(9000) - - // THEN - const deployed = TestUtils.findRenderedDOMComponentWithClass(open, DEPLOYED_COMPONENT_ID) - - if (deployed) { - const transaction = JSON.parse(deployed.getElementsByTagName('pre')[0].innerHTML) - delete transaction.receipt.logsBloom - // eslint-disable-next-line - // console.log(transaction) - } - }) -}) diff --git a/src/test/builder/safe.dom.builder.js b/src/test/builder/safe.dom.builder.js index 03f0f5e720..02aa2f8223 100644 --- a/src/test/builder/safe.dom.builder.js +++ b/src/test/builder/safe.dom.builder.js @@ -1,129 +1,40 @@ // @flow -import * as React from 'react' import { type Store } from 'redux' import TestUtils from 'react-dom/test-utils' -import { Provider } from 'react-redux' -import { ConnectedRouter } from 'react-router-redux' -import { DEPLOYED_COMPONENT_ID } from '~/routes/open/components/FormConfirmation' -import Open from '~/routes/open/container/Open' import SafeView from '~/routes/safe/component/Safe' -import { aNewStore, history, type GlobalState } from '~/store' +import { aNewStore, type GlobalState } from '~/store' import { sleep } from '~/utils/timer' -import { getProviderInfo, getWeb3 } from '~/wallets/getWeb3' -import addProvider from '~/wallets/store/actions/addProvider' -import { makeProvider } from '~/wallets/store/model/provider' -import AppRoutes from '~/routes' -import { SAFELIST_ADDRESS } from '~/routes/routes' +import { getWeb3 } from '~/wallets/getWeb3' import { promisify } from '~/utils/promisify' -import { addEtherTo } from '~/test/utils/etherMovements' - -const fillOpenSafeForm = async (localStore: Store) => { - const provider = await getProviderInfo() - const walletRecord = makeProvider(provider) - localStore.dispatch(addProvider(walletRecord)) - - return ( - TestUtils.renderIntoDocument(( - - - - - - )) - ) -} - -const deploySafe = async (safe: React$Component<{}>, dailyLimit: string, threshold: number, numOwners: number) => { - expect(threshold).toBeLessThanOrEqual(numOwners) - const inputs = TestUtils.scryRenderedDOMComponentsWithTag(safe, 'input') - const fieldName = inputs[0] - const fieldOwners = inputs[1] - const fieldConfirmations = inputs[2] - const fieldDailyLimit = inputs[3] - - const web3 = getWeb3() - const accounts = await promisify(cb => web3.eth.getAccounts(cb)) - TestUtils.Simulate.change(fieldOwners, { target: { value: `${numOwners}` } }) - await sleep(1500) - const inputsExpanded = TestUtils.scryRenderedDOMComponentsWithTag(safe, 'input') - expect(inputsExpanded.length).toBe((numOwners * 2) + 4) // 2 per owner + name, dailyLimit, confirmations, numOwners - - for (let i = 0; i < numOwners; i += 1) { - const nameIndex = (i * 2) + 2 - const addressIndex = (i * 2) + 3 - const ownerName = inputsExpanded[nameIndex] - const account = inputsExpanded[addressIndex] - - TestUtils.Simulate.change(ownerName, { target: { value: `Adolfo ${i + 1} Eth Account` } }) - TestUtils.Simulate.change(account, { target: { value: accounts[i] } }) - } - - TestUtils.Simulate.change(fieldName, { target: { value: 'Adolfo Safe' } }) - TestUtils.Simulate.change(fieldConfirmations, { target: { value: `${threshold}` } }) - - TestUtils.Simulate.change(fieldDailyLimit, { target: { value: dailyLimit } }) - - const form = TestUtils.findRenderedDOMComponentWithTag(safe, 'form') - - TestUtils.Simulate.submit(form) // fill the form - TestUtils.Simulate.submit(form) // confirming data - TestUtils.Simulate.submit(form) // Executing transaction - - // giving some time to the component for updating its state with safe - // before destroying its context - await sleep(15000) - - // THEN - const deployed = TestUtils.findRenderedDOMComponentWithClass(safe, DEPLOYED_COMPONENT_ID) - if (!deployed) { - throw new Error() - } - - const transactionHash = JSON.parse(deployed.getElementsByTagName('pre')[0].innerHTML) - delete transactionHash.receipt.logsBloom - - return transactionHash -} - -const aDeployedSafe = async ( - specificStore: Store, - dailyLimit?: number = 0.5, - threshold?: number = 1, - numOwners?: number = 1, -) => { - const safe: React$Component<{}> = await fillOpenSafeForm(specificStore) - const deployedSafe = await deploySafe(safe, `${dailyLimit}`, threshold, numOwners) - - return deployedSafe.logs[1].args.proxy -} +import { addEtherTo } from '~/test/utils/tokenMovements' +import { aMinedSafe } from '~/test/builder/safe.redux.builder' +import { travelToSafe } from '~/test/builder/safe.dom.utils' +import { MOVE_FUNDS_BUTTON_TEXT } from '~/routes/safe/component/Safe/BalanceInfo' export type DomSafe = { address: string, safeButtons: Element[], safe: React$Component, accounts: string[], + store: Store, } +export const filterMoveButtonsFrom = (buttons: Element[]) => + buttons.filter(button => button.getElementsByTagName('span')[0].innerHTML !== MOVE_FUNDS_BUTTON_TEXT) + export const renderSafeInDom = async ( - owners: number, - threshold: number, + owners: number = 1, + threshold: number = 1, dailyLimit: number = 0.5, ): Promise => { // create store const store = aNewStore() // deploy safe updating store - const address = await aDeployedSafe(store, dailyLimit, threshold, owners) + const address = await aMinedSafe(store, owners, threshold, dailyLimit) // have available accounts const accounts = await promisify(cb => getWeb3().eth.getAccounts(cb)) // navigate to SAFE route - history.push(`${SAFELIST_ADDRESS}/${address}`) - const SafeDom = TestUtils.renderIntoDocument(( - - - - - - )) + const SafeDom = travelToSafe(store, address) // add funds to safe await addEtherTo(address, '0.1') @@ -134,8 +45,9 @@ export const renderSafeInDom = async ( const Safe = TestUtils.findRenderedComponentWithType(SafeDom, SafeView) // $FlowFixMe const buttons = TestUtils.scryRenderedDOMComponentsWithTag(Safe, 'button') + const filteredButtons = filterMoveButtonsFrom(buttons) return { - address, safeButtons: buttons, safe: SafeDom, accounts, store, + address, safeButtons: filteredButtons, safe: SafeDom, accounts, store, } } diff --git a/src/test/builder/safe.dom.utils.js b/src/test/builder/safe.dom.utils.js index 27aedd6de1..3b50c0d67b 100644 --- a/src/test/builder/safe.dom.utils.js +++ b/src/test/builder/safe.dom.utils.js @@ -1,24 +1,33 @@ // @flow +import * as React from 'react' import TestUtils from 'react-dom/test-utils' import ListItemText from '~/components/List/ListItemText/index' import { SEE_MULTISIG_BUTTON_TEXT } from '~/routes/safe/component/Safe/MultisigTx' import fetchTransactions from '~/routes/safe/store/actions/fetchTransactions' import { sleep } from '~/utils/timer' - -export const EXPAND_OWNERS_INDEX = 0 -export const ADD_OWNERS_INDEX = 1 -export const EDIT_THRESHOLD_INDEX = 2 -export const EDIT_INDEX = 3 -export const WITHDRAW_INDEX = 4 -export const MOVE_FUNDS_INDEX = 5 +import { Provider } from 'react-redux' +import { ConnectedRouter } from 'react-router-redux' +import AppRoutes from '~/routes' +import { SAFELIST_ADDRESS, SETTINS_ADDRESS } from '~/routes/routes' +import { history, type GlobalState } from '~/store' +import { EMPTY_DATA } from '~/wallets/ethTransactions' + +export const EXPAND_BALANCE_INDEX = 0 +export const EXPAND_OWNERS_INDEX = 1 +export const ADD_OWNERS_INDEX = 2 +export const EDIT_THRESHOLD_INDEX = 3 +export const EDIT_INDEX = 4 +export const WITHDRAW_INDEX = 5 export const LIST_TXS_INDEX = 6 -export const listTxsClickingOn = async (seeTxsButton: Element) => { +export const listTxsClickingOn = async (store: Store, seeTxsButton: Element) => { + await store.dispatch(fetchTransactions()) + await sleep(1200) expect(seeTxsButton.getElementsByTagName('span')[0].innerHTML).toEqual(SEE_MULTISIG_BUTTON_TEXT) TestUtils.Simulate.click(seeTxsButton) // give some time to expand the transactions - await sleep(1500) + await sleep(800) } export const checkMinedTx = (Transaction: React$Component, name: string) => { @@ -34,7 +43,7 @@ export const checkMinedTx = (Transaction: React$Component, name: strin expect(hashParagraph).not.toBe('') expect(hashParagraph).not.toBe(undefined) expect(hashParagraph).not.toBe(null) - expect(hashParagraph).toContain('0x') + expect(hashParagraph).toContain(EMPTY_DATA) } export const getListItemsFrom = (Transaction: React$Component) => @@ -79,7 +88,30 @@ export const checkPendingTx = async ( } } -export const refreshTransactions = async (store) => { +export const refreshTransactions = async (store: Store) => { await store.dispatch(fetchTransactions()) await sleep(1500) } + +const createDom = (store: Store): React$Component<{}> => ( + TestUtils.renderIntoDocument(( + + + + + + )) +) + +export const travelToSafe = (store: Store, address: string): React$Component<{}> => { + history.push(`${SAFELIST_ADDRESS}/${address}`) + + return createDom(store) +} + +export const travelToTokens = (store: Store, address: string): React$Component<{}> => { + const url = `${SAFELIST_ADDRESS}/${address}${SETTINS_ADDRESS}` + history.push(url) + + return createDom(store) +} diff --git a/src/test/builder/safe.redux.builder.js b/src/test/builder/safe.redux.builder.js new file mode 100644 index 0000000000..9c4679810b --- /dev/null +++ b/src/test/builder/safe.redux.builder.js @@ -0,0 +1,115 @@ +// @flow +import { makeSafe, type Safe } from '~/routes/safe/store/model/safe' +import { buildOwnersFrom, buildDailyLimitFrom } from '~/routes/safe/store/actions' +import { FIELD_NAME, FIELD_CONFIRMATIONS, FIELD_OWNERS, getOwnerNameBy, getOwnerAddressBy, FIELD_DAILY_LIMIT } from '~/routes/open/components/fields' +import { getWeb3, getProviderInfo } from '~/wallets/getWeb3' +import { promisify } from '~/utils/promisify' +import addSafe from '~/routes/safe/store/actions/addSafe' +import { createSafe, type OpenState } from '~/routes/open/container/Open' +import { type GlobalState } from '~/store/index' +import { makeProvider } from '~/wallets/store/model/provider' +import addProvider from '~/wallets/store/actions/addProvider' + +class SafeBuilder { + safe: Safe + + constructor() { + this.safe = makeSafe() + } + + withAddress(address: string) { + this.safe = this.safe.set('address', address) + return this + } + + withName(name: string) { + this.safe = this.safe.set('name', name) + return this + } + + withConfirmations(confirmations: number) { + this.safe = this.safe.set('threshold', confirmations) + return this + } + + withDailyLimit(limit: number, spentToday: number = 0) { + const dailyLimit = buildDailyLimitFrom(limit, spentToday) + this.safe = this.safe.set('dailyLimit', dailyLimit) + return this + } + + withOwner(names: string[], adresses: string[]) { + const owners = buildOwnersFrom(names, adresses) + this.safe = this.safe.set('owners', owners) + return this + } + + get() { + return this.safe + } +} + +const aSafe = () => new SafeBuilder() + +export class SafeFactory { + static oneOwnerSafe = (ownerAddress: string = '0x03db1a8b26d08df23337e9276a36b474510f0023') => aSafe() + .withAddress('0x03db1a8b26d08df23337e9276a36b474510f0025') + .withName('Adol ICO Safe') + .withConfirmations(1) + .withDailyLimit(10) + .withOwner(['Adol Metamask'], [ownerAddress]) + .get() + + static twoOwnersSafe = (firstOwner: string = '0x03db1a8b26d08df23337e9276a36b474510f0023', secondOwner: string = '0x03db1a8b26d08df23337e9276a36b474510f0024') => aSafe() + .withAddress('0x03db1a8b26d08df23337e9276a36b474510f0026') + .withName('Adol & Tobias Safe') + .withConfirmations(2) + .withOwner( + ['Adol Metamask', 'Tobias Metamask'], + [firstOwner, secondOwner], + ) + .withDailyLimit(10, 1.34) + .get() + + static dailyLimitSafe = (dailyLimit: number, spentToday: number) => aSafe() + .withAddress('0x03db1a8b26d08df23337e9276a36b474510f0027') + .withName('Adol & Tobias Safe') + .withConfirmations(2) + .withOwner( + ['Adol Metamask', 'Tobias Metamask'], + ['0x03db1a8b26d08df23337e9276a36b474510f0023', '0x03db1a8b26d08df23337e9276a36b474510f0024'], + ) + .withDailyLimit(dailyLimit, spentToday) + .get() +} + +export const aMinedSafe = async ( + store: Store, + owners: number = 1, + threshold: number = 1, + dailyLimit: number = 0.5, +): Promise => { + const provider = await getProviderInfo() + const walletRecord = makeProvider(provider) + store.dispatch(addProvider(walletRecord)) + + const accounts = await promisify(cb => getWeb3().eth.getAccounts(cb)) + const form = { + [FIELD_NAME]: 'Safe Name', + [FIELD_CONFIRMATIONS]: `${threshold}`, + [FIELD_OWNERS]: `${owners}`, + [FIELD_DAILY_LIMIT]: `${dailyLimit}`, + } + + for (let i = 0; i < owners; i += 1) { + form[getOwnerNameBy(i)] = `Adol ${i + 1} Eth Account` + form[getOwnerAddressBy(i)] = accounts[i] + } + + const addSafeFn: any = (...args) => store.dispatch(addSafe(...args)) + const openSafeProps: OpenState = await createSafe(form, accounts[0], addSafeFn) + + return openSafeProps.safeAddress +} + +export default aSafe diff --git a/src/test/builder/tokens.dom.utils.js b/src/test/builder/tokens.dom.utils.js new file mode 100644 index 0000000000..3c46152e8a --- /dev/null +++ b/src/test/builder/tokens.dom.utils.js @@ -0,0 +1,29 @@ +// @flow +import * as TestUtils from 'react-dom/test-utils' +import { travelToTokens } from '~/test/builder/safe.dom.utils' +import { sleep } from '~/utils/timer' +import { type Token } from '~/routes/tokens/store/model/token' + +export const enableFirstToken = async (store: Store, safeAddress: string) => { + const TokensDom = await travelToTokens(store, safeAddress) + await sleep(400) + + // WHEN + const inputs = TestUtils.scryRenderedDOMComponentsWithTag(TokensDom, 'input') + + const ethTokenInput = inputs[2] + expect(ethTokenInput.hasAttribute('disabled')).toBe(true) + const firstTokenInput = inputs[0] + expect(firstTokenInput.hasAttribute('disabled')).toBe(false) + TestUtils.Simulate.change(firstTokenInput, { target: { checked: 'true' } }) +} + +export const testToken = (token: Token | typeof undefined, symbol: string, status: boolean, funds?: string) => { + if (!token) throw new Error() + expect(token.get('symbol')).toBe(symbol) + expect(token.get('status')).toBe(status) + if (funds) { + expect(token.get('funds')).toBe(funds) + } +} + diff --git a/src/test/safe.dom.create.test.js b/src/test/safe.dom.create.test.js new file mode 100644 index 0000000000..e3ed3d4b68 --- /dev/null +++ b/src/test/safe.dom.create.test.js @@ -0,0 +1,107 @@ +// @flow +import * as React from 'react' +import { type Store } from 'redux' +import TestUtils from 'react-dom/test-utils' +import { Provider } from 'react-redux' +import { ConnectedRouter } from 'react-router-redux' +import { DEPLOYED_COMPONENT_ID } from '~/routes/open/components/FormConfirmation' +import Open from '~/routes/open/container/Open' +import { aNewStore, history, type GlobalState } from '~/store' +import { sleep } from '~/utils/timer' +import { getProviderInfo, getWeb3 } from '~/wallets/getWeb3' +import addProvider from '~/wallets/store/actions/addProvider' +import { makeProvider } from '~/wallets/store/model/provider' +import { promisify } from '~/utils/promisify' + +const fillOpenSafeForm = async (localStore: Store) => { + const provider = await getProviderInfo() + const walletRecord = makeProvider(provider) + localStore.dispatch(addProvider(walletRecord)) + + return ( + TestUtils.renderIntoDocument(( + + + + + + )) + ) +} + +const deploySafe = async (safe: React$Component<{}>, dailyLimit: string, threshold: number, numOwners: number) => { + expect(threshold).toBeLessThanOrEqual(numOwners) + const inputs = TestUtils.scryRenderedDOMComponentsWithTag(safe, 'input') + const fieldName = inputs[0] + const fieldOwners = inputs[1] + const fieldConfirmations = inputs[2] + const fieldDailyLimit = inputs[3] + + const web3 = getWeb3() + const accounts = await promisify(cb => web3.eth.getAccounts(cb)) + TestUtils.Simulate.change(fieldOwners, { target: { value: `${numOwners}` } }) + await sleep(1500) + const inputsExpanded = TestUtils.scryRenderedDOMComponentsWithTag(safe, 'input') + expect(inputsExpanded.length).toBe((numOwners * 2) + 4) // 2 per owner + name, dailyLimit, confirmations, numOwners + + for (let i = 0; i < numOwners; i += 1) { + const nameIndex = (i * 2) + 2 + const addressIndex = (i * 2) + 3 + const ownerName = inputsExpanded[nameIndex] + const account = inputsExpanded[addressIndex] + + TestUtils.Simulate.change(ownerName, { target: { value: `Adolfo ${i + 1} Eth Account` } }) + TestUtils.Simulate.change(account, { target: { value: accounts[i] } }) + } + + TestUtils.Simulate.change(fieldName, { target: { value: 'Adolfo Safe' } }) + TestUtils.Simulate.change(fieldConfirmations, { target: { value: `${threshold}` } }) + + TestUtils.Simulate.change(fieldDailyLimit, { target: { value: dailyLimit } }) + + const form = TestUtils.findRenderedDOMComponentWithTag(safe, 'form') + + TestUtils.Simulate.submit(form) // fill the form + TestUtils.Simulate.submit(form) // confirming data + TestUtils.Simulate.submit(form) // Executing transaction + + // giving some time to the component for updating its state with safe + // before destroying its context + await sleep(12000) + + // THEN + const deployed = TestUtils.findRenderedDOMComponentWithClass(safe, DEPLOYED_COMPONENT_ID) + if (!deployed) { + throw new Error() + } + + const transactionHash = JSON.parse(deployed.getElementsByTagName('pre')[0].innerHTML) + delete transactionHash.receipt.logsBloom + + return transactionHash +} + +const aDeployedSafe = async ( + specificStore: Store, + dailyLimit?: number = 0.5, + threshold?: number = 1, + numOwners?: number = 1, +) => { + const safe: React$Component<{}> = await fillOpenSafeForm(specificStore) + const deployedSafe = await deploySafe(safe, `${dailyLimit}`, threshold, numOwners) + + return deployedSafe.logs[1].args.proxy +} + +describe('DOM > Feature > CREATE a safe', () => { + it('fills correctly the safe form with 4 owners, 4 threshold and 5 ETH as daily limit', async () => { + const owners = 4 + const threshold = 4 + const dailyLimit = 5 + const store = aNewStore() + const address = await aDeployedSafe(store, dailyLimit, threshold, owners) + + expect(address).not.toBe(null) + expect(address).not.toBe(undefined) + }) +}) diff --git a/src/test/safe.dom.tokens.test.js b/src/test/safe.dom.tokens.test.js new file mode 100644 index 0000000000..858524ea0e --- /dev/null +++ b/src/test/safe.dom.tokens.test.js @@ -0,0 +1,75 @@ +// @flow + +import TestUtils from 'react-dom/test-utils' +import * as fetchBalancesAction from '~/routes/tokens/store/actions/fetchTokens' +import { aNewStore } from '~/store' +import { aMinedSafe } from '~/test/builder/safe.redux.builder' +import { addTknTo, getFirstTokenContract } from '~/test/utils/tokenMovements' +import { EXPAND_BALANCE_INDEX, travelToSafe } from '~/test/builder/safe.dom.utils' +import { promisify } from '~/utils/promisify' +import { getWeb3 } from '~/wallets/getWeb3' +import { sendMoveTokensForm, dispatchTknBalance } from '~/test/utils/transactions/moveTokens.helper' +import { sleep } from '~/utils/timer' + +describe('DOM > Feature > SAFE ERC20 TOKENS', () => { + let store + let safeAddress: string + let accounts + beforeEach(async () => { + store = aNewStore() + safeAddress = await aMinedSafe(store) + accounts = await promisify(cb => getWeb3().eth.getAccounts(cb)) + }) + + it('sends ERC20 tokens', async () => { + // GIVEN + const numTokens = 100 + const tokenAddress = await addTknTo(safeAddress, numTokens) + + await dispatchTknBalance(store, tokenAddress, safeAddress) + // const StandardToken = await fetchBalancesAction.getStandardTokenContract() + // const myToken = await StandardToken.at(tokenAddress) + // console.log(await myToken.allowance(safeAddress, accounts[2])) + // console.log(await myToken.balanceOf(safeAddress)) + + // WHEN + const SafeDom = await travelToSafe(store, safeAddress) + await sleep(800) + // $FlowFixMe + const buttons = TestUtils.scryRenderedDOMComponentsWithTag(SafeDom, 'button') + const expandBalance = buttons[EXPAND_BALANCE_INDEX] + const receiver = accounts[2] + await sendMoveTokensForm(SafeDom, expandBalance, 20, accounts[2]) + + // THEN + const safeFunds = await fetchBalancesAction.calculateBalanceOf(tokenAddress, safeAddress, 18) + expect(Number(safeFunds)).toBe(80) + const receiverFunds = await fetchBalancesAction.calculateBalanceOf(tokenAddress, receiver, 18) + expect(Number(receiverFunds)).toBe(20) + + const token = await getFirstTokenContract(getWeb3(), accounts[0]) + const nativeSafeFunds = await token.balanceOf(safeAddress) + expect(Number(nativeSafeFunds.valueOf())).toEqual(80 * (10 ** 18)) + }) + + it('disables send token button when balance is 0', async () => { + // GIVEN + const token = await getFirstTokenContract(getWeb3(), accounts[0]) + await dispatchTknBalance(store, token.address, safeAddress) + + // WHEN + const SafeDom = travelToSafe(store, safeAddress) + + // $FlowFixMe + const buttons = TestUtils.scryRenderedDOMComponentsWithTag(SafeDom, 'button') + const expandBalance = buttons[EXPAND_BALANCE_INDEX] + + TestUtils.Simulate.click(expandBalance) + await sleep(800) + + // $FlowFixMe + const balanceButtons = TestUtils.scryRenderedDOMComponentsWithTag(SafeDom, 'button') + const tokenButton = balanceButtons[EXPAND_BALANCE_INDEX + 1] // expand button, and the next one is for sending + expect(tokenButton.hasAttribute('disabled')).toBe(true) + }) +}) diff --git a/src/test/safe.dom.test.js b/src/test/safe.dom.transactions.test.js similarity index 78% rename from src/test/safe.dom.test.js rename to src/test/safe.dom.transactions.test.js index eb1fda3b4a..517e0428f8 100644 --- a/src/test/safe.dom.test.js +++ b/src/test/safe.dom.transactions.test.js @@ -1,7 +1,7 @@ // @flow import TestUtils from 'react-dom/test-utils' import Transaction from '~/routes/safe/component/Transactions/Transaction' -import { listTxsClickingOn, LIST_TXS_INDEX, MOVE_FUNDS_INDEX, ADD_OWNERS_INDEX, EXPAND_OWNERS_INDEX, EDIT_THRESHOLD_INDEX, WITHDRAW_INDEX, refreshTransactions } from '~/test/builder/safe.dom.utils' +import { listTxsClickingOn, LIST_TXS_INDEX, ADD_OWNERS_INDEX, EXPAND_OWNERS_INDEX, EDIT_THRESHOLD_INDEX, WITHDRAW_INDEX, refreshTransactions, EXPAND_BALANCE_INDEX } from '~/test/builder/safe.dom.utils' import { renderSafeInDom, type DomSafe } from '~/test/builder/safe.dom.builder' import { sendMoveFundsForm, checkMinedMoveFundsTx, checkPendingMoveFundsTx } from '~/test/utils/transactions/moveFunds.helper' import { sendAddOwnerForm, checkMinedAddOwnerTx, checkPendingAddOwnerTx } from '~/test/utils/transactions/addOwner.helper' @@ -9,9 +9,10 @@ import { sendRemoveOwnerForm, checkMinedRemoveOwnerTx, checkPendingRemoveOwnerTx import { checkMinedThresholdTx, sendChangeThresholdForm, checkThresholdOf } from '~/test/utils/transactions/threshold.helper' import { sendWithdrawForm, checkMinedWithdrawTx } from '~/test/utils/transactions/withdraw.helper' import { processTransaction } from '~/routes/safe/component/Transactions/processTransactions' -import { checkBalanceOf } from '~/test/utils/etherMovements' +import { checkBalanceOf } from '~/test/utils/tokenMovements' +import { sleep } from '~/utils/timer' -describe('DOM > Feature > SAFE MULTISIG TX 1 Owner 1 Threshold', () => { +describe('DOM > Feature > SAFE MULTISIG Transactions', () => { let domSafe: DomSafe it('mines correctly all multisig txs in a 1 owner & 1 threshold safe', async () => { // GIVEN one safe with 1 owner and 1 threshold @@ -19,20 +20,21 @@ describe('DOM > Feature > SAFE MULTISIG TX 1 Owner 1 Threshold', () => { const threshold = 1 domSafe = await renderSafeInDom(owners, threshold) const { - address, safe: SafeDom, safeButtons, accounts, + address, safe: SafeDom, safeButtons, accounts, store, } = domSafe // WHEN - await sendMoveFundsForm(SafeDom, safeButtons[MOVE_FUNDS_INDEX], 'Move funds', '0.01', accounts[1]) + await sendMoveFundsForm(SafeDom, safeButtons[EXPAND_BALANCE_INDEX], '0.01', accounts[1]) await sendWithdrawForm(SafeDom, safeButtons[WITHDRAW_INDEX], '0.01', accounts[3]) await sendAddOwnerForm(SafeDom, safeButtons[ADD_OWNERS_INDEX], 'Adol Metamask 2', accounts[1]) + await sleep(1200) await sendChangeThresholdForm(SafeDom, safeButtons[EDIT_THRESHOLD_INDEX], '2') // THEN - await listTxsClickingOn(safeButtons[LIST_TXS_INDEX]) + await listTxsClickingOn(store, safeButtons[LIST_TXS_INDEX]) const transactions = TestUtils.scryRenderedComponentsWithType(SafeDom, Transaction) - checkMinedMoveFundsTx(transactions[0], 'Move funds') + checkMinedMoveFundsTx(transactions[0], 'Send 0.01 ETH to') await checkMinedWithdrawTx(transactions[1], 'Withdraw movement of 0.01', address, '0.08') // 0.1 - 0.01 tx - 0.01 withdraw checkMinedAddOwnerTx(transactions[2], 'Add Owner Adol Metamask 2') checkMinedThresholdTx(transactions[3], 'Change Safe\'s threshold') @@ -41,21 +43,21 @@ describe('DOM > Feature > SAFE MULTISIG TX 1 Owner 1 Threshold', () => { it('mines withdraw process correctly all multisig txs in a 2 owner & 2 threshold safe', async () => { // GIVEN reusing the state from previous test const { - address, safe: SafeDom, safeButtons, accounts, + address, safe: SafeDom, safeButtons, accounts, store, } = domSafe // WHEN - await sendMoveFundsForm(SafeDom, safeButtons[MOVE_FUNDS_INDEX], 'Buy batteries', '0.01', accounts[1]) + await sendMoveFundsForm(SafeDom, safeButtons[EXPAND_BALANCE_INDEX], '0.01', accounts[1]) const increaseThreshold = true await sendAddOwnerForm(SafeDom, safeButtons[ADD_OWNERS_INDEX], 'Adol Metamask 3', accounts[2], increaseThreshold) await sendWithdrawForm(SafeDom, safeButtons[WITHDRAW_INDEX], '0.01', accounts[3]) // THEN - await listTxsClickingOn(safeButtons[LIST_TXS_INDEX]) + await listTxsClickingOn(store, safeButtons[LIST_TXS_INDEX]) const transactions = TestUtils.scryRenderedComponentsWithType(SafeDom, Transaction) - const statusses = ['Adol Metamask 2 [Not confirmed]', 'Adolfo 1 Eth Account [Confirmed]'] - await checkPendingMoveFundsTx(transactions[4], 2, 'Buy batteries', statusses) + const statusses = ['Adol Metamask 2 [Not confirmed]', 'Adol 1 Eth Account [Confirmed]'] + await checkPendingMoveFundsTx(transactions[4], 2, 'Send 0.01 ETH to', statusses) await checkPendingAddOwnerTx(transactions[5], 2, 'Add Owner Adol Metamask 3', statusses) // checkMinedThresholdTx(transactions[4], 'Add Owner Adol Metamask 3') await checkMinedWithdrawTx(transactions[6], 'Withdraw movement of 0.01', address, '0.07') @@ -76,7 +78,7 @@ describe('DOM > Feature > SAFE MULTISIG TX 1 Owner 1 Threshold', () => { await refreshTransactions(store) // THEN - checkMinedMoveFundsTx(transactions[4], 'Buy batteries') + checkMinedMoveFundsTx(transactions[4], 'Send 0.01 ETH to') await checkBalanceOf(address, '0.06') checkMinedAddOwnerTx(transactions[5], 'Add Owner Adol Metamask 3') await checkThresholdOf(address, 3) @@ -85,16 +87,16 @@ describe('DOM > Feature > SAFE MULTISIG TX 1 Owner 1 Threshold', () => { await sendRemoveOwnerForm(SafeDom, safeButtons[EXPAND_OWNERS_INDEX]) // THEN - await listTxsClickingOn(safeButtons[LIST_TXS_INDEX]) + await listTxsClickingOn(store, safeButtons[LIST_TXS_INDEX]) transactions = TestUtils.scryRenderedComponentsWithType(SafeDom, Transaction) expect(transactions.length).toBe(8) - let statusses = ['Adol Metamask 3 [Not confirmed]', 'Adol Metamask 2 [Not confirmed]', 'Adolfo 1 Eth Account [Confirmed]'] + let statusses = ['Adol Metamask 3 [Not confirmed]', 'Adol Metamask 2 [Not confirmed]', 'Adol 1 Eth Account [Confirmed]'] await checkPendingRemoveOwnerTx(transactions[7], 3, 'Remove Owner Adol Metamask 3', statusses) await processTransaction(address, transactions[7].props.transaction, 1, accounts[1]) await refreshTransactions(store) transactions = TestUtils.scryRenderedComponentsWithType(SafeDom, Transaction) - statusses = ['Adol Metamask 3 [Not confirmed]', 'Adol Metamask 2 [Confirmed]', 'Adolfo 1 Eth Account [Confirmed]'] + statusses = ['Adol Metamask 3 [Not confirmed]', 'Adol Metamask 2 [Confirmed]', 'Adol 1 Eth Account [Confirmed]'] await checkPendingRemoveOwnerTx(transactions[7], 2, 'Remove Owner Adol Metamask 3', statusses) await checkThresholdOf(address, 3) @@ -106,7 +108,7 @@ describe('DOM > Feature > SAFE MULTISIG TX 1 Owner 1 Threshold', () => { // WHEN... changing threshold await sendChangeThresholdForm(SafeDom, safeButtons[EDIT_THRESHOLD_INDEX], '1') - await listTxsClickingOn(safeButtons[LIST_TXS_INDEX]) + await listTxsClickingOn(store, safeButtons[LIST_TXS_INDEX]) // THEN transactions = TestUtils.scryRenderedComponentsWithType(SafeDom, Transaction) diff --git a/src/test/safe.redux.balance.test.js b/src/test/safe.redux.balance.test.js new file mode 100644 index 0000000000..cd1558e89a --- /dev/null +++ b/src/test/safe.redux.balance.test.js @@ -0,0 +1,84 @@ +// @flow +import { Map } from 'immutable' +import * as fetchTokensAction from '~/routes/tokens/store/actions/fetchTokens' +import { aNewStore } from '~/store' +import { aMinedSafe } from '~/test/builder/safe.redux.builder' +import { type Token } from '~/routes/tokens/store/model/token' +import { TOKEN_REDUCER_ID } from '~/routes/tokens/store/reducer/tokens' +import { addEtherTo, addTknTo } from '~/test/utils/tokenMovements' +import { dispatchTknBalance } from '~/test/utils/transactions/moveTokens.helper' +import { ETH_ADDRESS } from '~/utils/tokens' + +describe('Safe - redux balance property', () => { + let store + let address: string + beforeEach(async () => { + store = aNewStore() + address = await aMinedSafe(store) + }) + + it('reducer should return 0 to just deployed safe', async () => { + // GIVEN + const tokenList = [ + '0x975be7f72cea31fd83d0cb2a197f9136f38696b7', // WE + '0xb3a4bc89d8517e0e2c9b66703d09d3029ffa1e6d', // <3 + '0x5f92161588c6178130ede8cbdc181acec66a9731', // GNO + '0xb63d06025d580a94d59801f2513f5d309c079559', // OMG + '0x3615757011112560521536258c1E7325Ae3b48AE', // RDN + '0xc778417E063141139Fce010982780140Aa0cD5Ab', // Wrapped Ether + '0x979861dF79C7408553aAF20c01Cfb3f81CCf9341', // OLY + '0', // ETH + ] + + // WHEN + await store.dispatch(fetchTokensAction.fetchTokens(address)) + + // THEN + const tokens: Map> | typeof undefined = store.getState()[TOKEN_REDUCER_ID] + if (!tokens) throw new Error() + + const safeBalances: Map | typeof undefined = tokens.get(address) + if (!safeBalances) throw new Error() + expect(safeBalances.size).toBe(8) + + tokenList.forEach((token: string) => { + const record = safeBalances.get(token) + if (!record) throw new Error() + expect(record.get('funds')).toBe('0') + }) + }) + + it('reducer should return 0.03456 ETH as funds to safe with 0.03456 ETH', async () => { + // WHEN + await addEtherTo(address, '0.03456') + await store.dispatch(fetchTokensAction.fetchTokens(address)) + + // THEN + const tokens: Map> | typeof undefined = store.getState()[TOKEN_REDUCER_ID] + if (!tokens) throw new Error() + + const safeBalances: Map | typeof undefined = tokens.get(address) + if (!safeBalances) throw new Error() + expect(safeBalances.size).toBe(8) + + const ethBalance = safeBalances.get(ETH_ADDRESS) + if (!ethBalance) throw new Error() + expect(ethBalance.get('funds')).toBe('0.03456') + }) + + it('reducer should return 100 TKN when safe has 100 TKN', async () => { + // GIVEN + const numTokens = 100 + const tokenAddress = await addTknTo(address, numTokens) + + // WHEN + await dispatchTknBalance(store, tokenAddress, address) + + // THEN + const safeBalances = store.getState()[TOKEN_REDUCER_ID].get(address) + expect(safeBalances.size).toBe(1) + + const tknBalance = safeBalances.get('TKN') + expect(tknBalance.get('funds')).toBe(String(numTokens)) + }) +}) diff --git a/src/test/safe.redux.owners.test.js b/src/test/safe.redux.owners.test.js new file mode 100644 index 0000000000..a6f533a26c --- /dev/null +++ b/src/test/safe.redux.owners.test.js @@ -0,0 +1,180 @@ +// @flow +import { aNewStore } from '~/store' +import { getWeb3 } from '~/wallets/getWeb3' +import { promisify } from '~/utils/promisify' +import { processTransaction } from '~/routes/safe/component/Transactions/processTransactions' +import { confirmationsTransactionSelector } from '~/routes/safe/store/selectors/index' +import { getTransactionFromReduxStore } from '~/routes/safe/test/testMultisig' +import fetchTransactions from '~/routes/safe/store/actions/fetchTransactions' +import { type Safe } from '~/routes/safe/store/model/safe' +import { getGnosisSafeInstanceAt } from '~/wallets/safeContracts' +import { aMinedSafe } from '~/test/builder/safe.redux.builder' +import { NAME_PARAM, OWNER_ADDRESS_PARAM, INCREASE_PARAM } from '~/routes/safe/component/AddOwner/AddOwnerForm' +import { addOwner } from '~/routes/safe/component/AddOwner/index' +import fetchSafe from '~/routes/safe/store/actions/fetchSafe' +import { removeOwner, shouldDecrease, initialValuesFrom } from '~/routes/safe/component/RemoveOwner' +import { DECREASE_PARAM } from '~/routes/safe/component/RemoveOwner/RemoveOwnerForm/index' +import { getSafeFrom } from '~/test/utils/safeHelper' + +describe('React DOM TESTS > Add and remove owners', () => { + const processOwnerModification = async (store, safeAddress, executor) => { + const tx = getTransactionFromReduxStore(store, safeAddress) + if (!tx) throw new Error() + const confirmed = confirmationsTransactionSelector(store.getState(), { transaction: tx }) + const data = tx.get('data') + expect(data).not.toBe(null) + expect(data).not.toBe(undefined) + expect(data).not.toBe('') + return processTransaction(safeAddress, tx, confirmed, executor) + } + + const assureThresholdIs = async (gnosisSafe, threshold: number) => { + const safeThreshold = await gnosisSafe.getThreshold() + expect(Number(safeThreshold)).toEqual(threshold) + } + + const assureOwnersAre = async (gnosisSafe, ...owners) => { + const safeOwners = await gnosisSafe.getOwners() + expect(safeOwners.length).toEqual(owners.length) + for (let i = 0; i < owners.length; i += 1) { + expect(safeOwners[i]).toBe(owners[i]) + } + } + + const getAddressesFrom = (safe: Safe) => safe.get('owners').map(owner => owner.get('address')) + + it('adds owner without increasing the threshold', async () => { + // GIVEN + const numOwners = 2 + const threshold = 1 + const store = aNewStore() + const address = await aMinedSafe(store, numOwners, threshold, 10) + const accounts = await promisify(cb => getWeb3().eth.getAccounts(cb)) + const gnosisSafe = await getGnosisSafeInstanceAt(address) + + const values = { + [NAME_PARAM]: 'Adol 3 Metamask', + [OWNER_ADDRESS_PARAM]: accounts[2], + [INCREASE_PARAM]: false, + } + + // WHEN + let safe = getSafeFrom(store.getState(), address) + await addOwner(values, safe, threshold, accounts[0]) + + // THEN + await assureThresholdIs(gnosisSafe, 1) + await assureOwnersAre(gnosisSafe, accounts[2], accounts[0], accounts[1]) + + await store.dispatch(fetchSafe(safe)) + safe = getSafeFrom(store.getState(), address) + expect(safe.get('owners').count()).toBe(3) + await assureOwnersAre(gnosisSafe, ...getAddressesFrom(safe)) + }) + + it('adds owner increasing the threshold', async () => { + // GIVEN + const numOwners = 2 + const threshold = 1 + const store = aNewStore() + const address = await aMinedSafe(store, numOwners, threshold, 10) + const accounts = await promisify(cb => getWeb3().eth.getAccounts(cb)) + const gnosisSafe = await getGnosisSafeInstanceAt(address) + + const values = { + [NAME_PARAM]: 'Adol 3 Metamask', + [OWNER_ADDRESS_PARAM]: accounts[2], + [INCREASE_PARAM]: true, + } + + // WHEN + let safe = getSafeFrom(store.getState(), address) + await addOwner(values, safe, threshold, accounts[0]) + + // THEN + await assureThresholdIs(gnosisSafe, 2) + await assureOwnersAre(gnosisSafe, accounts[2], accounts[0], accounts[1]) + + await store.dispatch(fetchSafe(safe)) + safe = getSafeFrom(store.getState(), address) + expect(safe.get('owners').count()).toBe(3) + await assureOwnersAre(gnosisSafe, ...getAddressesFrom(safe)) + }) + + it('remove owner decreasing owner automatically', async () => { + const numOwners = 2 + const threshold = 2 + const store = aNewStore() + const address = await aMinedSafe(store, numOwners, threshold, 10) + const accounts = await promisify(cb => getWeb3().eth.getAccounts(cb)) + const gnosisSafe = await getGnosisSafeInstanceAt(address) + + const decrease = shouldDecrease(numOwners, threshold) + const values = initialValuesFrom(decrease) + expect(values[DECREASE_PARAM]).toBe(true) + + let safe = getSafeFrom(store.getState(), address) + await removeOwner(values, safe, threshold, accounts[1], 'Adol Metamask 2', accounts[0]) + await store.dispatch(fetchTransactions()) + await processOwnerModification(store, address, accounts[1]) + + await assureThresholdIs(gnosisSafe, 1) + await assureOwnersAre(gnosisSafe, accounts[0]) + + await store.dispatch(fetchSafe(safe)) + safe = getSafeFrom(store.getState(), address) + expect(safe.get('owners').count()).toBe(1) + await assureOwnersAre(gnosisSafe, ...getAddressesFrom(safe)) + }) + + it('remove owner decreasing threshold', async () => { + const numOwners = 3 + const threshold = 2 + const store = aNewStore() + const address = await aMinedSafe(store, numOwners, threshold, 10) + const accounts = await promisify(cb => getWeb3().eth.getAccounts(cb)) + const gnosisSafe = await getGnosisSafeInstanceAt(address) + + const decrease = true + const values = initialValuesFrom(decrease) + + let safe = getSafeFrom(store.getState(), address) + await removeOwner(values, safe, threshold, accounts[2], 'Adol Metamask 3', accounts[0]) + await store.dispatch(fetchTransactions()) + await processOwnerModification(store, address, accounts[1]) + + await assureThresholdIs(gnosisSafe, 1) + await assureOwnersAre(gnosisSafe, accounts[0], accounts[1]) + + await store.dispatch(fetchSafe(safe)) + safe = getSafeFrom(store.getState(), address) + expect(safe.get('owners').count()).toBe(2) + await assureOwnersAre(gnosisSafe, ...getAddressesFrom(safe)) + }) + + it('remove owner without decreasing threshold', async () => { + const numOwners = 3 + const threshold = 2 + const store = aNewStore() + const address = await aMinedSafe(store, numOwners, threshold, 10) + const accounts = await promisify(cb => getWeb3().eth.getAccounts(cb)) + const gnosisSafe = await getGnosisSafeInstanceAt(address) + + const decrease = shouldDecrease(numOwners, threshold) + const values = initialValuesFrom(decrease) + expect(values[DECREASE_PARAM]).toBe(false) + + let safe = getSafeFrom(store.getState(), address) + await removeOwner(values, safe, threshold, accounts[2], 'Adol Metamask 3', accounts[0]) + await store.dispatch(fetchTransactions()) + await processOwnerModification(store, address, accounts[1]) + + await assureThresholdIs(gnosisSafe, 2) + await assureOwnersAre(gnosisSafe, accounts[0], accounts[1]) + + await store.dispatch(fetchSafe(safe)) + safe = getSafeFrom(store.getState(), address) + expect(safe.get('owners').count()).toBe(2) + await assureOwnersAre(gnosisSafe, ...getAddressesFrom(safe)) + }) +}) diff --git a/src/test/safe.redux.withdraw.test.js b/src/test/safe.redux.withdraw.test.js new file mode 100644 index 0000000000..af8a1a8011 --- /dev/null +++ b/src/test/safe.redux.withdraw.test.js @@ -0,0 +1,84 @@ +// @flow +import * as React from 'react' +import TestUtils from 'react-dom/test-utils' +import { Provider } from 'react-redux' +import { ConnectedRouter } from 'react-router-redux' +import { aNewStore, history } from '~/store' +import { addEtherTo } from '~/test/utils/tokenMovements' +import { executeWithdrawOn } from '~/routes/safe/store/test/builder/deployedSafe.builder' +import { SAFELIST_ADDRESS } from '~/routes/routes' +import SafeView from '~/routes/safe/component/Safe' +import AppRoutes from '~/routes' +import { WITHDRAW_BUTTON_TEXT } from '~/routes/safe/component/Safe/DailyLimit' +import { getBalanceInEtherOf } from '~/wallets/getWeb3' +import { sleep } from '~/utils/timer' +import { getDailyLimitFrom } from '~/routes/safe/component/Withdraw/withdraw' +import { type DailyLimitProps } from '~/routes/safe/store/model/dailyLimit' +import { WITHDRAW_INDEX } from '~/test/builder/safe.dom.utils' +import { aMinedSafe } from '~/test/builder/safe.redux.builder' +import { getSafeFrom } from '~/test/utils/safeHelper' +import { filterMoveButtonsFrom } from '~/test/builder/safe.dom.builder' +import { fetchTokens } from '~/routes/tokens/store/actions/fetchTokens' + +describe('React DOM TESTS > Withdraw funds from safe', () => { + let store + let safeAddress: string + beforeEach(async () => { + store = aNewStore() + safeAddress = await aMinedSafe(store) + }) + + it('should withdraw funds under dailyLimit without needing confirmations', async () => { + // add funds to safe + await addEtherTo(safeAddress, '0.1') + + const safe = getSafeFrom(store.getState(), safeAddress) + await executeWithdrawOn(safe, 0.01) + + const safeBalance = await getBalanceInEtherOf(safeAddress) + expect(safeBalance).toBe('0.09') + }) + + it('spentToday dailyLimitModule property is updated correctly', async () => { + // add funds to safe + await addEtherTo(safeAddress, '0.1') + + const safe = getSafeFrom(store.getState(), safeAddress) + await executeWithdrawOn(safe, 0.01) + await executeWithdrawOn(safe, 0.01) + + const ethAddress = 0 + const dailyLimit: DailyLimitProps = await getDailyLimitFrom(safeAddress, ethAddress) + + // THEN + expect(dailyLimit.value).toBe(0.5) + expect(dailyLimit.spentToday).toBe(0.02) + }) + + it('Withdraw button disabled when balance is 0', async () => { + // navigate to SAFE route + history.push(`${SAFELIST_ADDRESS}/${safeAddress}`) + const SafeDom = TestUtils.renderIntoDocument(( + + + + + + )) + + await sleep(300) + const Safe = TestUtils.findRenderedComponentWithType(SafeDom, SafeView) + // $FlowFixMe + const buttons = TestUtils.scryRenderedDOMComponentsWithTag(Safe, 'button') + const filteredButtons = filterMoveButtonsFrom(buttons) + const addWithdrawButton = filteredButtons[WITHDRAW_INDEX] + expect(addWithdrawButton.getElementsByTagName('span')[0].innerHTML).toEqual(WITHDRAW_BUTTON_TEXT) + expect(addWithdrawButton.hasAttribute('disabled')).toBe(true) + + await addEtherTo(safeAddress, '0.1') + await store.dispatch(fetchTokens(safeAddress)) + await sleep(150) + + expect(addWithdrawButton.hasAttribute('disabled')).toBe(false) + }) +}) diff --git a/src/routes/safe/component/AddTransaction/test/transactions.test.js b/src/test/safe.service.transactions.test.js similarity index 90% rename from src/routes/safe/component/AddTransaction/test/transactions.test.js rename to src/test/safe.service.transactions.test.js index 39270c0ff9..1c32f61f37 100644 --- a/src/routes/safe/component/AddTransaction/test/transactions.test.js +++ b/src/test/safe.service.transactions.test.js @@ -1,13 +1,14 @@ // @flow import { List, Map } from 'immutable' -import { storeTransaction, buildConfirmationsFrom, EXECUTED_CONFIRMATION_HASH, buildExecutedConfirmationFrom } from '~/routes/safe/component/AddTransaction/createTransactions' +import { storeTransaction, buildConfirmationsFrom, EXECUTED_CONFIRMATION_HASH, buildExecutedConfirmationFrom } from '~/wallets/createTransactions' import { type Transaction } from '~/routes/safe/store/model/transaction' import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' import { type Safe } from '~/routes/safe/store/model/safe' import { type Owner } from '~/routes/safe/store/model/owner' import { loadSafeTransactions } from '~/routes/safe/store/actions/fetchTransactions' import { type Confirmation } from '~/routes/safe/store/model/confirmation' -import { testSizeOfSafesWith, testSizeOfTransactions, testTransactionFrom } from './transactionsHelper' +import { EMPTY_DATA } from '~/wallets/ethTransactions' +import { testSizeOfSafesWith, testSizeOfTransactions, testTransactionFrom } from './utils/historyServiceHelper' describe('Transactions Suite', () => { let safe: Safe @@ -33,7 +34,7 @@ describe('Transactions Suite', () => { const txName = 'Buy butteries for project' const nonce: number = 10 const confirmations: List = buildConfirmationsFrom(owners, 'foo', 'confirmationHash') - storeTransaction(txName, nonce, destination, value, 'foo', confirmations, '', safe.get('address'), safe.get('threshold'), '0x') + storeTransaction(txName, nonce, destination, value, 'foo', confirmations, '', safe.get('address'), safe.get('threshold'), EMPTY_DATA) // WHEN const transactions: Map> = loadSafeTransactions() @@ -45,7 +46,7 @@ describe('Transactions Suite', () => { if (!safeTransactions) { throw new Error() } testSizeOfTransactions(safeTransactions, 1) - testTransactionFrom(safeTransactions, 0, txName, nonce, value, 2, destination, '0x', 'foo', 'confirmationHash', owners.get(0), owners.get(1)) + testTransactionFrom(safeTransactions, 0, txName, nonce, value, 2, destination, EMPTY_DATA, 'foo', 'confirmationHash', owners.get(0), owners.get(1)) }) it('adds second confirmation to stored safe with one confirmation', async () => { @@ -55,12 +56,12 @@ describe('Transactions Suite', () => { const safeAddress = safe.get('address') const creator = 'foo' const confirmations: List = buildConfirmationsFrom(owners, creator, 'confirmationHash') - storeTransaction(firstTxName, firstNonce, destination, value, creator, confirmations, '', safeAddress, safe.get('threshold'), '0x') + storeTransaction(firstTxName, firstNonce, destination, value, creator, confirmations, '', safeAddress, safe.get('threshold'), EMPTY_DATA) const secondTxName = 'Buy printers for project' const secondNonce: number = firstNonce + 100 const secondConfirmations: List = buildConfirmationsFrom(owners, creator, 'confirmationHash') - storeTransaction(secondTxName, secondNonce, destination, value, creator, secondConfirmations, '', safeAddress, safe.get('threshold'), '0x') + storeTransaction(secondTxName, secondNonce, destination, value, creator, secondConfirmations, '', safeAddress, safe.get('threshold'), EMPTY_DATA) // WHEN const transactions: Map> = loadSafeTransactions() @@ -72,8 +73,8 @@ describe('Transactions Suite', () => { if (!safeTxs) { throw new Error() } testSizeOfTransactions(safeTxs, 2) - testTransactionFrom(safeTxs, 0, firstTxName, firstNonce, value, 2, destination, '0x', 'foo', 'confirmationHash', owners.get(0), owners.get(1)) - testTransactionFrom(safeTxs, 1, secondTxName, secondNonce, value, 2, destination, '0x', 'foo', 'confirmationHash', owners.get(0), owners.get(1)) + testTransactionFrom(safeTxs, 0, firstTxName, firstNonce, value, 2, destination, EMPTY_DATA, 'foo', 'confirmationHash', owners.get(0), owners.get(1)) + testTransactionFrom(safeTxs, 1, secondTxName, secondNonce, value, 2, destination, EMPTY_DATA, 'foo', 'confirmationHash', owners.get(0), owners.get(1)) }) it('adds second confirmation to stored safe having two safes with one confirmation each', async () => { @@ -82,7 +83,7 @@ describe('Transactions Suite', () => { const safeAddress = safe.address const creator = 'foo' const confirmations: List = buildConfirmationsFrom(owners, creator, 'confirmationHash') - storeTransaction(txName, nonce, destination, value, creator, confirmations, '', safeAddress, safe.get('threshold'), '0x') + storeTransaction(txName, nonce, destination, value, creator, confirmations, '', safeAddress, safe.get('threshold'), EMPTY_DATA) const secondSafe = SafeFactory.dailyLimitSafe(10, 2) const txSecondName = 'Buy batteris for Beta project' @@ -92,7 +93,7 @@ describe('Transactions Suite', () => { const secondConfirmations: List = buildConfirmationsFrom(secondSafe.get('owners'), secondCreator, 'confirmationHash') storeTransaction( txSecondName, txSecondNonce, destination, value, secondCreator, - secondConfirmations, '', secondSafeAddress, secondSafe.get('threshold'), '0x', + secondConfirmations, '', secondSafeAddress, secondSafe.get('threshold'), EMPTY_DATA, ) let transactions: Map> = loadSafeTransactions() @@ -112,7 +113,7 @@ describe('Transactions Suite', () => { const txConfirmations: List = buildConfirmationsFrom(owners, creator, 'secondConfirmationHash') storeTransaction( txFirstName, txFirstNonce, destination, value, creator, - txConfirmations, '', safe.get('address'), safe.get('threshold'), '0x', + txConfirmations, '', safe.get('address'), safe.get('threshold'), EMPTY_DATA, ) transactions = loadSafeTransactions() @@ -125,19 +126,19 @@ describe('Transactions Suite', () => { // Test 2 transactions of first safe testTransactionFrom( transactions.get(safe.address), 0, - txName, nonce, value, 2, destination, '0x', + txName, nonce, value, 2, destination, EMPTY_DATA, 'foo', 'confirmationHash', owners.get(0), owners.get(1), ) testTransactionFrom( transactions.get(safe.address), 1, - txFirstName, txFirstNonce, value, 2, destination, '0x', + txFirstName, txFirstNonce, value, 2, destination, EMPTY_DATA, 'foo', 'secondConfirmationHash', owners.get(0), owners.get(1), ) // Test one transaction of second safe testTransactionFrom( transactions.get(secondSafe.address), 0, - txSecondName, txSecondNonce, value, 2, destination, '0x', + txSecondName, txSecondNonce, value, 2, destination, EMPTY_DATA, '0x03db1a8b26d08df23337e9276a36b474510f0023', 'confirmationHash', secondSafe.get('owners').get(0), secondSafe.get('owners').get(1), ) }) @@ -148,10 +149,10 @@ describe('Transactions Suite', () => { const nonce: number = 10 const creator = 'foo' const confirmations: List = buildConfirmationsFrom(owners, creator, 'confirmationHash') - storeTransaction(txName, nonce, destination, value, creator, confirmations, '', safe.get('address'), safe.get('threshold'), '0x') + storeTransaction(txName, nonce, destination, value, creator, confirmations, '', safe.get('address'), safe.get('threshold'), EMPTY_DATA) // WHEN - const createTxFnc = () => storeTransaction(txName, nonce, destination, value, creator, confirmations, '', safe.get('address'), safe.get('threshold'), '0x') + const createTxFnc = () => storeTransaction(txName, nonce, destination, value, creator, confirmations, '', safe.get('address'), safe.get('threshold'), EMPTY_DATA) expect(createTxFnc).toThrow(/Transaction with same nonce/) }) @@ -161,7 +162,7 @@ describe('Transactions Suite', () => { const nonce: number = 10 const creator = 'foo' const confirmations: List = buildConfirmationsFrom(owners, creator, 'confirmationHash') - storeTransaction(txName, nonce, destination, value, creator, confirmations, '', safe.get('address'), safe.get('threshold'), '0x') + storeTransaction(txName, nonce, destination, value, creator, confirmations, '', safe.get('address'), safe.get('threshold'), EMPTY_DATA) // WHEN const transactions: Map> = loadSafeTransactions() @@ -185,7 +186,7 @@ describe('Transactions Suite', () => { const nonce: number = 10 const tx = '' const confirmations: List = buildExecutedConfirmationFrom(oneOwnerSafe.get('owners'), ownerName) - const createTxFnc = () => storeTransaction(txName, nonce, destination, value, ownerName, confirmations, tx, oneOwnerSafe.get('address'), oneOwnerSafe.get('threshold'), '0x') + const createTxFnc = () => storeTransaction(txName, nonce, destination, value, ownerName, confirmations, tx, oneOwnerSafe.get('address'), oneOwnerSafe.get('threshold'), EMPTY_DATA) expect(createTxFnc).toThrow(/The tx should be mined before storing it in safes with one owner/) }) @@ -197,7 +198,7 @@ describe('Transactions Suite', () => { const nonce: number = 10 const tx = 'validTxHash' const confirmations: List = buildExecutedConfirmationFrom(oneOwnerSafe.get('owners'), ownerName) - storeTransaction(txName, nonce, destination, value, ownerName, confirmations, tx, oneOwnerSafe.get('address'), oneOwnerSafe.get('threshold'), '0x') + storeTransaction(txName, nonce, destination, value, ownerName, confirmations, tx, oneOwnerSafe.get('address'), oneOwnerSafe.get('threshold'), EMPTY_DATA) // WHEN const safeTransactions: Map> = loadSafeTransactions() diff --git a/src/test/tokens.dom.adding.test.js b/src/test/tokens.dom.adding.test.js new file mode 100644 index 0000000000..a39312abd6 --- /dev/null +++ b/src/test/tokens.dom.adding.test.js @@ -0,0 +1,70 @@ +// @flow +import * as TestUtils from 'react-dom/test-utils' +import { getWeb3 } from '~/wallets/getWeb3' +import { type Match } from 'react-router-dom' +import { promisify } from '~/utils/promisify' +import TokenComponent from '~/routes/tokens/component/Token' +import { getFirstTokenContract, getSecondTokenContract } from '~/test/utils/tokenMovements' +import { aNewStore } from '~/store' +import { aMinedSafe } from '~/test/builder/safe.redux.builder' +import { travelToTokens } from '~/test/builder/safe.dom.utils' +import { sleep } from '~/utils/timer' +import { buildMathPropsFrom } from '~/test/utils/buildReactRouterProps' +import { tokenListSelector } from '~/routes/tokens/store/selectors' +import { testToken } from '~/test/builder/tokens.dom.utils' +import * as fetchTokensModule from '~/routes/tokens/store/actions/fetchTokens' +import * as enhancedFetchModule from '~/utils/fetch' +import { clickOnAddToken, fillAddress, fillHumanReadableInfo } from '~/test/utils/tokens/addToken.helper' + +describe('DOM > Feature > Add new ERC 20 Tokens', () => { + let web3 + let accounts + let firstErc20Token + let secondErc20Token + + beforeAll(async () => { + web3 = getWeb3() + accounts = await promisify(cb => web3.eth.getAccounts(cb)) + firstErc20Token = await getFirstTokenContract(web3, accounts[0]) + secondErc20Token = await getSecondTokenContract(web3, accounts[0]) + + // $FlowFixMe + enhancedFetchModule.enhancedFetch = jest.fn() + enhancedFetchModule.enhancedFetch.mockImplementation(() => Promise.resolve([ + { + address: firstErc20Token.address, + name: 'First Token Example', + symbol: 'FTE', + decimals: 18, + logoUrl: 'https://upload.wikimedia.org/wikipedia/commons/c/c0/Earth_simple_icon.png', + }, + ])) + }) + + it('adds a second erc 20 token filling the form', async () => { + // GIVEN + const store = aNewStore() + const safeAddress = await aMinedSafe(store) + await store.dispatch(fetchTokensModule.fetchTokens(safeAddress)) + const TokensDom = await travelToTokens(store, safeAddress) + await sleep(400) + const tokens = TestUtils.scryRenderedComponentsWithType(TokensDom, TokenComponent) + expect(tokens.length).toBe(2) + testToken(tokens[0].props.token, 'FTE', false) + testToken(tokens[1].props.token, 'ETH', true) + + // WHEN + await clickOnAddToken(TokensDom) + await fillAddress(TokensDom, secondErc20Token) + await fillHumanReadableInfo(TokensDom) + + // THEN + const match: Match = buildMathPropsFrom(safeAddress) + const tokenList = tokenListSelector(store.getState(), { match }) + expect(tokenList.count()).toBe(3) + + testToken(tokenList.get(0), 'FTE', false) + testToken(tokenList.get(1), 'ETH', true) + testToken(tokenList.get(2), 'TKN', true) + }) +}) diff --git a/src/test/tokens.dom.enabling.test.js b/src/test/tokens.dom.enabling.test.js new file mode 100644 index 0000000000..fc2b012ea8 --- /dev/null +++ b/src/test/tokens.dom.enabling.test.js @@ -0,0 +1,130 @@ +// @flow +import * as TestUtils from 'react-dom/test-utils' +import { List } from 'immutable' +import { getWeb3 } from '~/wallets/getWeb3' +import { type Match } from 'react-router-dom' +import { promisify } from '~/utils/promisify' +import TokenComponent from '~/routes/tokens/component/Token' +import Checkbox from '@material-ui/core/Checkbox' +import { getFirstTokenContract, getSecondTokenContract, addTknTo } from '~/test/utils/tokenMovements' +import { aNewStore } from '~/store' +import { aMinedSafe } from '~/test/builder/safe.redux.builder' +import { travelToTokens } from '~/test/builder/safe.dom.utils' +import { sleep } from '~/utils/timer' +import { buildMathPropsFrom } from '~/test/utils/buildReactRouterProps' +import { tokenListSelector, activeTokensSelector } from '~/routes/tokens/store/selectors' +import { getActiveTokenAddresses } from '~/utils/localStorage/tokens' +import { enableFirstToken, testToken } from '~/test/builder/tokens.dom.utils' +import * as fetchTokensModule from '~/routes/tokens/store/actions/fetchTokens' +import * as enhancedFetchModule from '~/utils/fetch' + +describe('DOM > Feature > Enable and disable default tokens', () => { + let web3 + let accounts + let firstErc20Token + let secondErc20Token + + beforeAll(async () => { + web3 = getWeb3() + accounts = await promisify(cb => web3.eth.getAccounts(cb)) + firstErc20Token = await getFirstTokenContract(web3, accounts[0]) + secondErc20Token = await getSecondTokenContract(web3, accounts[0]) + // $FlowFixMe + enhancedFetchModule.enhancedFetch = jest.fn() + enhancedFetchModule.enhancedFetch.mockImplementation(() => Promise.resolve([ + { + address: firstErc20Token.address, + name: 'First Token Example', + symbol: 'FTE', + decimals: 18, + logoUrl: 'https://upload.wikimedia.org/wikipedia/commons/c/c0/Earth_simple_icon.png', + }, + { + address: secondErc20Token.address, + name: 'Second Token Example', + symbol: 'STE', + decimals: 18, + logoUrl: 'https://upload.wikimedia.org/wikipedia/commons/c/c0/Earth_simple_icon.png', + }, + ])) + }) + + it('retrieves only ether as active token in first moment', async () => { + // GIVEN + const store = aNewStore() + const safeAddress = await aMinedSafe(store) + await store.dispatch(fetchTokensModule.fetchTokens(safeAddress)) + + // WHEN + const TokensDom = await travelToTokens(store, safeAddress) + await sleep(400) + + // THEN + const tokens = TestUtils.scryRenderedComponentsWithType(TokensDom, TokenComponent) + expect(tokens.length).toBe(3) + + testToken(tokens[0].props.token, 'FTE', false) + testToken(tokens[1].props.token, 'STE', false) + testToken(tokens[2].props.token, 'ETH', true) + + const ethCheckbox = TestUtils.findRenderedComponentWithType(tokens[2], Checkbox) + if (!ethCheckbox) throw new Error() + expect(ethCheckbox.props.disabled).toBe(true) + }) + + it('fetch balances of only enabled tokens', async () => { + // GIVEN + const store = aNewStore() + const safeAddress = await aMinedSafe(store) + await addTknTo(safeAddress, 50, firstErc20Token) + await addTknTo(safeAddress, 50, secondErc20Token) + await store.dispatch(fetchTokensModule.fetchTokens(safeAddress)) + + const match: Match = buildMathPropsFrom(safeAddress) + let tokenList = tokenListSelector(store.getState(), { match }) + expect(tokenList.count()).toBe(3) + + await enableFirstToken(store, safeAddress) + tokenList = tokenListSelector(store.getState(), { match }) + expect(tokenList.count()).toBe(3) // assuring the enableToken do not add extra info + + // THEN + testToken(tokenList.get(0), 'FTE', true) + testToken(tokenList.get(1), 'STE', false) + testToken(tokenList.get(2), 'ETH', true) + + const activeTokenList = activeTokensSelector(store.getState(), { match }) + expect(activeTokenList.count()).toBe(2) + + testToken(activeTokenList.get(0), 'FTE', true) + testToken(activeTokenList.get(1), 'ETH', true) + + await store.dispatch(fetchTokensModule.fetchTokens(safeAddress)) + + const fundedTokenList = tokenListSelector(store.getState(), { match }) + expect(fundedTokenList.count()).toBe(3) + + testToken(fundedTokenList.get(0), 'FTE', true, '50') + testToken(fundedTokenList.get(1), 'STE', false, '0') + testToken(fundedTokenList.get(2), 'ETH', true, '0') + }) + + it('localStorage always returns a list', async () => { + const store = aNewStore() + const safeAddress = await aMinedSafe(store) + let tokens: List = getActiveTokenAddresses(safeAddress) + expect(tokens).toEqual(List([])) + + await store.dispatch(fetchTokensModule.fetchTokens(safeAddress)) + tokens = getActiveTokenAddresses(safeAddress) + expect(tokens.count()).toBe(0) + + await enableFirstToken(store, safeAddress) + tokens = getActiveTokenAddresses(safeAddress) + expect(tokens.count()).toBe(1) + + await store.dispatch(fetchTokensModule.fetchTokens(safeAddress)) + tokens = getActiveTokenAddresses(safeAddress) + expect(tokens.count()).toBe(1) + }) +}) diff --git a/src/test/tokens.dom.removing.test.js b/src/test/tokens.dom.removing.test.js new file mode 100644 index 0000000000..06a8dd1d2f --- /dev/null +++ b/src/test/tokens.dom.removing.test.js @@ -0,0 +1,83 @@ +// @flow +import * as TestUtils from 'react-dom/test-utils' +import { getWeb3 } from '~/wallets/getWeb3' +import { promisify } from '~/utils/promisify' +import { getFirstTokenContract, getSecondTokenContract } from '~/test/utils/tokenMovements' +import { aNewStore } from '~/store' +import { aMinedSafe } from '~/test/builder/safe.redux.builder' +import { travelToTokens } from '~/test/builder/safe.dom.utils' +import * as fetchTokensModule from '~/routes/tokens/store/actions/fetchTokens' +import * as enhancedFetchModule from '~/utils/fetch' +import { TOKEN_ADRESS_PARAM } from '~/routes/tokens/component/AddToken/FirstPage' +import { TOKEN_NAME_PARAM, TOKEN_SYMBOL_PARAM, TOKEN_DECIMALS_PARAM, TOKEN_LOGO_URL_PARAM } from '~/routes/tokens/component/AddToken/SecondPage' +import addToken from '~/routes/tokens/store/actions/addToken' +import { addTokenFnc } from '~/routes/tokens/component/AddToken' +import { sleep } from '~/utils/timer' +import TokenComponent from '~/routes/tokens/component/Token' +import { testToken } from '~/test/builder/tokens.dom.utils' + +describe('DOM > Feature > Add new ERC 20 Tokens', () => { + let web3 + let accounts + let firstErc20Token + let secondErc20Token + + beforeAll(async () => { + web3 = getWeb3() + accounts = await promisify(cb => web3.eth.getAccounts(cb)) + firstErc20Token = await getFirstTokenContract(web3, accounts[0]) + secondErc20Token = await getSecondTokenContract(web3, accounts[0]) + + // $FlowFixMe + enhancedFetchModule.enhancedFetch = jest.fn() + enhancedFetchModule.enhancedFetch.mockImplementation(() => Promise.resolve([ + { + address: firstErc20Token.address, + name: 'First Token Example', + symbol: 'FTE', + decimals: 18, + logoUrl: 'https://upload.wikimedia.org/wikipedia/commons/c/c0/Earth_simple_icon.png', + }, + ])) + }) + + it('remove custom ERC 20 tokens', async () => { + // GIVEN + const store = aNewStore() + const safeAddress = await aMinedSafe(store) + await store.dispatch(fetchTokensModule.fetchTokens(safeAddress)) + + const values = { + [TOKEN_ADRESS_PARAM]: secondErc20Token.address, + [TOKEN_NAME_PARAM]: 'Custom ERC20 Token', + [TOKEN_SYMBOL_PARAM]: 'CTS', + [TOKEN_DECIMALS_PARAM]: '10', + [TOKEN_LOGO_URL_PARAM]: 'https://example.com', + } + + const customAddTokensFn: any = (...args) => store.dispatch(addToken(...args)) + await addTokenFnc(values, customAddTokensFn, safeAddress) + const TokensDom = travelToTokens(store, safeAddress) + await sleep(400) + + // WHEN + const buttons = TestUtils.scryRenderedDOMComponentsWithTag(TokensDom, 'button') + expect(buttons.length).toBe(2) + const removeUserButton = buttons[0] + expect(removeUserButton.getAttribute('aria-label')).toBe('Delete') + TestUtils.Simulate.click(removeUserButton) + await sleep(400) + + const form = TestUtils.findRenderedDOMComponentWithTag(TokensDom, 'form') + // submit it + TestUtils.Simulate.submit(form) + TestUtils.Simulate.submit(form) + + await sleep(400) + + const tokens = TestUtils.scryRenderedComponentsWithType(TokensDom, TokenComponent) + expect(tokens.length).toBe(2) + testToken(tokens[0].props.token, 'FTE', false) + testToken(tokens[1].props.token, 'ETH', true) + }) +}) diff --git a/src/test/tokens.redux.adding.test.js b/src/test/tokens.redux.adding.test.js new file mode 100644 index 0000000000..954c903737 --- /dev/null +++ b/src/test/tokens.redux.adding.test.js @@ -0,0 +1,75 @@ +// @flow +import { getWeb3 } from '~/wallets/getWeb3' +import { type Match } from 'react-router-dom' +import { promisify } from '~/utils/promisify' +import { getFirstTokenContract, getSecondTokenContract } from '~/test/utils/tokenMovements' +import { aNewStore } from '~/store' +import { aMinedSafe } from '~/test/builder/safe.redux.builder' +import { travelToSafe } from '~/test/builder/safe.dom.utils' +import { buildMathPropsFrom } from '~/test/utils/buildReactRouterProps' +import { testToken } from '~/test/builder/tokens.dom.utils' +import * as fetchTokensModule from '~/routes/tokens/store/actions/fetchTokens' +import * as enhancedFetchModule from '~/utils/fetch' +import { TOKEN_ADRESS_PARAM } from '~/routes/tokens/component/AddToken/FirstPage' +import { TOKEN_NAME_PARAM, TOKEN_DECIMALS_PARAM, TOKEN_SYMBOL_PARAM, TOKEN_LOGO_URL_PARAM } from '~/routes/tokens/component/AddToken/SecondPage' +import addToken from '~/routes/tokens/store/actions/addToken' +import { addTokenFnc } from '~/routes/tokens/component/AddToken' +import { activeTokensSelector } from '~/routes/tokens/store/selectors' + +describe('DOM > Feature > Add new ERC 20 Tokens', () => { + let web3 + let accounts + let firstErc20Token + let secondErc20Token + + beforeAll(async () => { + web3 = getWeb3() + accounts = await promisify(cb => web3.eth.getAccounts(cb)) + firstErc20Token = await getFirstTokenContract(web3, accounts[0]) + secondErc20Token = await getSecondTokenContract(web3, accounts[0]) + + // $FlowFixMe + enhancedFetchModule.enhancedFetch = jest.fn() + enhancedFetchModule.enhancedFetch.mockImplementation(() => Promise.resolve([ + { + address: firstErc20Token.address, + name: 'First Token Example', + symbol: 'FTE', + decimals: 18, + logoUrl: 'https://upload.wikimedia.org/wikipedia/commons/c/c0/Earth_simple_icon.png', + }, + ])) + }) + + it('persist added custom ERC 20 tokens as active when reloading the page', async () => { + // GIVEN + const store = aNewStore() + const safeAddress = await aMinedSafe(store) + await store.dispatch(fetchTokensModule.fetchTokens(safeAddress)) + + const values = { + [TOKEN_ADRESS_PARAM]: secondErc20Token.address, + [TOKEN_NAME_PARAM]: 'Custom ERC20 Token', + [TOKEN_SYMBOL_PARAM]: 'CTS', + [TOKEN_DECIMALS_PARAM]: '10', + [TOKEN_LOGO_URL_PARAM]: 'https://example.com', + } + + const customAddTokensFn: any = (...args) => store.dispatch(addToken(...args)) + await addTokenFnc(values, customAddTokensFn, safeAddress) + travelToSafe(store, safeAddress) + + // WHEN + const reloadedStore = aNewStore() + await reloadedStore.dispatch(fetchTokensModule.fetchTokens(safeAddress)) + travelToSafe(reloadedStore, safeAddress) // reload + + // THEN + const match: Match = buildMathPropsFrom(safeAddress) + const activeTokenList = activeTokensSelector(reloadedStore.getState(), { match }) + expect(activeTokenList.count()).toBe(2) + + testToken(activeTokenList.get(0), 'CTS', true) + testToken(activeTokenList.get(1), 'ETH', true) + }) +}) diff --git a/src/test/tokens.redux.remove.test.js b/src/test/tokens.redux.remove.test.js new file mode 100644 index 0000000000..1c08934cd9 --- /dev/null +++ b/src/test/tokens.redux.remove.test.js @@ -0,0 +1,97 @@ +// @flow +import { getWeb3 } from '~/wallets/getWeb3' +import { type Match } from 'react-router-dom' +import { promisify } from '~/utils/promisify' +import { getFirstTokenContract, getSecondTokenContract } from '~/test/utils/tokenMovements' +import { aNewStore } from '~/store' +import { aMinedSafe } from '~/test/builder/safe.redux.builder' +import { travelToSafe } from '~/test/builder/safe.dom.utils' +import { buildMathPropsFrom } from '~/test/utils/buildReactRouterProps' +import { testToken } from '~/test/builder/tokens.dom.utils' +import * as fetchTokensModule from '~/routes/tokens/store/actions/fetchTokens' +import * as enhancedFetchModule from '~/utils/fetch' +import { TOKEN_ADRESS_PARAM } from '~/routes/tokens/component/AddToken/FirstPage' +import { TOKEN_NAME_PARAM, TOKEN_DECIMALS_PARAM, TOKEN_SYMBOL_PARAM, TOKEN_LOGO_URL_PARAM } from '~/routes/tokens/component/AddToken/SecondPage' +import addToken from '~/routes/tokens/store/actions/addToken' +import { addTokenFnc } from '~/routes/tokens/component/AddToken' +import { activeTokensSelector, tokenListSelector } from '~/routes/tokens/store/selectors' +import removeTokenAction from '~/routes/tokens/store/actions/removeToken' +import { makeToken } from '~/routes/tokens/store/model/token' +import { removeToken } from '~/routes/tokens/component/RemoveToken' + +describe('DOM > Feature > Add new ERC 20 Tokens', () => { + let web3 + let accounts + let firstErc20Token + let secondErc20Token + + beforeAll(async () => { + web3 = getWeb3() + accounts = await promisify(cb => web3.eth.getAccounts(cb)) + firstErc20Token = await getFirstTokenContract(web3, accounts[0]) + secondErc20Token = await getSecondTokenContract(web3, accounts[0]) + + // $FlowFixMe + enhancedFetchModule.enhancedFetch = jest.fn() + enhancedFetchModule.enhancedFetch.mockImplementation(() => Promise.resolve([ + { + address: firstErc20Token.address, + name: 'First Token Example', + symbol: 'FTE', + decimals: 18, + logoUrl: 'https://upload.wikimedia.org/wikipedia/commons/c/c0/Earth_simple_icon.png', + }, + ])) + }) + + const checkTokensOf = (store: Store, safeAddress: string) => { + const match: Match = buildMathPropsFrom(safeAddress) + const activeTokenList = activeTokensSelector(store.getState(), { match }) + expect(activeTokenList.count()).toBe(1) + testToken(activeTokenList.get(0), 'ETH', true) + + const tokenList = tokenListSelector(store.getState(), { match }) + expect(tokenList.count()).toBe(2) + testToken(tokenList.get(0), 'FTE', false) + testToken(tokenList.get(1), 'ETH', true) + } + + it('removes custom ERC 20 including page reload', async () => { + // GIVEN + const store = aNewStore() + const safeAddress = await aMinedSafe(store) + await store.dispatch(fetchTokensModule.fetchTokens(safeAddress)) + + const values = { + [TOKEN_ADRESS_PARAM]: secondErc20Token.address, + [TOKEN_NAME_PARAM]: 'Custom ERC20 Token', + [TOKEN_SYMBOL_PARAM]: 'CTS', + [TOKEN_DECIMALS_PARAM]: '10', + [TOKEN_LOGO_URL_PARAM]: 'https://example.com', + } + + const customAddTokensFn: any = (...args) => store.dispatch(addToken(...args)) + await addTokenFnc(values, customAddTokensFn, safeAddress) + + const token = makeToken({ + address: secondErc20Token.address, + name: 'Custom ERC20 Token', + symbol: 'CTS', + decimals: 10, + logoUrl: 'https://example.com', + status: true, + removable: true, + }) + const customRemoveTokensFnc: any = (...args) => store.dispatch(removeTokenAction(...args)) + await removeToken(safeAddress, token, customRemoveTokensFnc) + checkTokensOf(store, safeAddress) + + // WHEN + const reloadedStore = aNewStore() + await reloadedStore.dispatch(fetchTokensModule.fetchTokens(safeAddress)) + travelToSafe(reloadedStore, safeAddress) // reload + + // THEN + checkTokensOf(reloadedStore, safeAddress) + }) +}) diff --git a/src/test/utils/etherMovements.js b/src/test/utils/etherMovements.js deleted file mode 100644 index 1e9cfc9887..0000000000 --- a/src/test/utils/etherMovements.js +++ /dev/null @@ -1,28 +0,0 @@ -// @flow -import { getProviderInfo, getBalanceInEtherOf, getWeb3 } from '~/wallets/getWeb3' -import { promisify } from '~/utils/promisify' -import withdraw, { DESTINATION_PARAM, VALUE_PARAM } from '~/routes/safe/component/Withdraw/withdraw' - -export const addEtherTo = async (address: string, eth: string) => { - const web3 = getWeb3() - const accounts = await promisify(cb => web3.eth.getAccounts(cb)) - const txData = { from: accounts[0], to: address, value: web3.toWei(eth, 'ether') } - return promisify(cb => web3.eth.sendTransaction(txData, cb)) -} - -export const executeWithdrawOn = async (safeAddress: string, value: number) => { - const providerInfo = await getProviderInfo() - const userAddress = providerInfo.account - - const values = { - [DESTINATION_PARAM]: userAddress, - [VALUE_PARAM]: `${value}`, - } - - return withdraw(values, safeAddress, userAddress) -} - -export const checkBalanceOf = async (addressToTest: string, value: string) => { - const safeBalance = await getBalanceInEtherOf(addressToTest) - expect(safeBalance).toBe(value) -} diff --git a/src/test/utils/ethereumErrors.js b/src/test/utils/ethereumErrors.js index c7319cf485..b28a3b7da8 100644 --- a/src/test/utils/ethereumErrors.js +++ b/src/test/utils/ethereumErrors.js @@ -3,7 +3,7 @@ import { getWeb3 } from '~/wallets/getWeb3' import abi from 'ethereumjs-abi' import { promisify } from '~/utils/promisify' -export const getErrorMessage = async (to, value, data, from) => { +export const getErrorMessage = async (to: string, value: number, data: string, from: string) => { const web3 = getWeb3() const returnData = await promisify(cb => web3.eth.call({ to, from, value, data, diff --git a/src/routes/safe/component/AddTransaction/test/transactionsHelper.js b/src/test/utils/historyServiceHelper.js similarity index 100% rename from src/routes/safe/component/AddTransaction/test/transactionsHelper.js rename to src/test/utils/historyServiceHelper.js diff --git a/src/test/utils/logTransactions.js b/src/test/utils/logTransactions.js index d86237cfc2..2ed5d33606 100644 --- a/src/test/utils/logTransactions.js +++ b/src/test/utils/logTransactions.js @@ -1,5 +1,8 @@ // @flow import { getGnosisSafeInstanceAt } from '~/wallets/safeContracts' +import GnoStepper from '~/components/Stepper' +import Stepper from '@material-ui/core/Stepper' +import TestUtils from 'react-dom/test-utils' export const printOutApprove = async ( subject: string, @@ -24,3 +27,64 @@ export const printOutApprove = async ( // eslint-disable-next-line console.log(`EO transaction executed ${await gnosisSafe.isExecuted(transactionHash)}`) } + +const MAX_TIMES_EXECUTED = 35 +const INTERVAL = 500 + +type FinsihedTx = { + finishedTransaction: boolean, +} + +export const whenExecuted = ( + SafeDom: React$Component, + ParentComponent: React$ElementType, +): Promise => new Promise((resolve, reject) => { + let times = 0 + const interval = setInterval(() => { + if (times >= MAX_TIMES_EXECUTED) { + clearInterval(interval) + reject() + } + + // $FlowFixMe + const SafeComponent = TestUtils.findRenderedComponentWithType(SafeDom, ParentComponent) + type GnoStepperType = React$Component + // $FlowFixMe + const StepperComponent: GnoStepperType = TestUtils.findRenderedComponentWithType(SafeComponent, GnoStepper) + + if (StepperComponent.props.finishedTransaction === true) { + clearInterval(interval) + resolve() + } + times += 1 + }, INTERVAL) +}) + +type MiddleStep = { + activeStep: number +} + +export const whenOnNext = ( + SafeDom: React$Component, + ParentComponent: React$ElementType, + position: number, +): Promise => new Promise((resolve, reject) => { + let times = 0 + const interval = setInterval(() => { + if (times >= MAX_TIMES_EXECUTED) { + clearInterval(interval) + reject() + } + + // $FlowFixMe + const SafeComponent = TestUtils.findRenderedComponentWithType(SafeDom, ParentComponent) + type StepperType = React$Component + // $FlowFixMe + const StepperComponent: StepperType = TestUtils.findRenderedComponentWithType(SafeComponent, Stepper) + if (StepperComponent.props.activeStep === position) { + clearInterval(interval) + resolve() + } + times += 1 + }, INTERVAL) +}) diff --git a/src/test/utils/safeHelper.js b/src/test/utils/safeHelper.js new file mode 100644 index 0000000000..fb094bbc86 --- /dev/null +++ b/src/test/utils/safeHelper.js @@ -0,0 +1,14 @@ +// @flow +import { buildMathPropsFrom } from '~/test/utils/buildReactRouterProps' +import { safeSelector } from '~/routes/safe/store/selectors/index' +import { type Match } from 'react-router-dom' +import { type GlobalState } from '~/store' +import { type Safe } from '~/routes/safe/store/model/safe' + +export const getSafeFrom = (state: GlobalState, safeAddress: string): Safe => { + const match: Match = buildMathPropsFrom(safeAddress) + const safe = safeSelector(state, { match }) + if (!safe) throw new Error() + + return safe +} diff --git a/src/test/utils/tokenMovements.js b/src/test/utils/tokenMovements.js new file mode 100644 index 0000000000..933ab8a9a9 --- /dev/null +++ b/src/test/utils/tokenMovements.js @@ -0,0 +1,54 @@ +// @flow +import contract from 'truffle-contract' +import { getProviderInfo, getBalanceInEtherOf, getWeb3 } from '~/wallets/getWeb3' +import { promisify } from '~/utils/promisify' +import withdraw, { DESTINATION_PARAM, VALUE_PARAM } from '~/routes/safe/component/Withdraw/withdraw' +import { type Safe } from '~/routes/safe/store/model/safe' +import Token from '#/test/TestToken.json' +import { ensureOnce } from '~/utils/singleton' +import { toNative } from '~/wallets/tokens' + +export const addEtherTo = async (address: string, eth: string) => { + const web3 = getWeb3() + const accounts = await promisify(cb => web3.eth.getAccounts(cb)) + const txData = { from: accounts[0], to: address, value: web3.toWei(eth, 'ether') } + return promisify(cb => web3.eth.sendTransaction(txData, cb)) +} + +export const executeWithdrawOn = async (safe: Safe, value: number) => { + const providerInfo = await getProviderInfo() + const userAddress = providerInfo.account + + const values = { + [DESTINATION_PARAM]: userAddress, + [VALUE_PARAM]: `${value}`, + } + + return withdraw(values, safe, userAddress) +} + +export const checkBalanceOf = async (addressToTest: string, value: string) => { + const safeBalance = await getBalanceInEtherOf(addressToTest) + expect(safeBalance).toBe(value) +} + +const createTokenContract = async (web3: any, executor: string) => { + const token = contract(Token) + token.setProvider(web3.currentProvider) + + return token.new({ from: executor, gas: '5000000' }) +} + +export const getFirstTokenContract = ensureOnce(createTokenContract) +export const getSecondTokenContract = ensureOnce(createTokenContract) + +export const addTknTo = async (safe: string, value: number, tokenContract?: any) => { + const web3 = getWeb3() + const accounts = await promisify(cb => getWeb3().eth.getAccounts(cb)) + + const myToken = tokenContract || await getFirstTokenContract(web3, accounts[0]) + const nativeValue = await toNative(value, 18) + await myToken.transfer(safe, nativeValue.valueOf(), { from: accounts[0], gas: '5000000' }) + + return myToken.address +} diff --git a/src/test/utils/tokens/addToken.helper.js b/src/test/utils/tokens/addToken.helper.js new file mode 100644 index 0000000000..f395861d18 --- /dev/null +++ b/src/test/utils/tokens/addToken.helper.js @@ -0,0 +1,46 @@ +// @flow +import { sleep } from '~/utils/timer' +import * as TestUtils from 'react-dom/test-utils' +import AddToken from '~/routes/tokens/component/AddToken' +import { whenOnNext, whenExecuted } from '~/test/utils/logTransactions' + +export const clickOnAddToken = async (TokensDom: React$Component) => { + const buttons = TestUtils.scryRenderedDOMComponentsWithTag(TokensDom, 'button') + expect(buttons.length).toBe(1) + TestUtils.Simulate.click(buttons[0]) + await sleep(400) +} + +export const fillAddress = async (TokensDom: React$Component, secondErc20Token: any) => { + // fill the form + const AddTokenComponent = TestUtils.findRenderedComponentWithType(TokensDom, AddToken) + if (!AddTokenComponent) throw new Error() + + const inputs = TestUtils.scryRenderedDOMComponentsWithTag(AddTokenComponent, 'input') + expect(inputs.length).toBe(1) + const tokenAddressInput = inputs[0] + TestUtils.Simulate.change(tokenAddressInput, { target: { value: `${secondErc20Token.address}` } }) + // $FlowFixMe + const form = TestUtils.findRenderedDOMComponentWithTag(AddTokenComponent, 'form') + // submit it + TestUtils.Simulate.submit(form) + + return whenOnNext(TokensDom, AddToken, 1) +} + +export const fillHumanReadableInfo = async (TokensDom: React$Component) => { + // fill the form + const AddTokenComponent = TestUtils.findRenderedComponentWithType(TokensDom, AddToken) + if (!AddTokenComponent) throw new Error() + + const inputs = TestUtils.scryRenderedDOMComponentsWithTag(AddTokenComponent, 'input') + expect(inputs.length).toBe(4) + TestUtils.Simulate.change(inputs[3], { target: { value: 'https://my.token.image/foo' } }) + const form = TestUtils.findRenderedDOMComponentWithTag(AddTokenComponent, 'form') + + // submit it + TestUtils.Simulate.submit(form) + TestUtils.Simulate.submit(form) + + return whenExecuted(TokensDom, AddToken) +} diff --git a/src/test/utils/transactions/addOwner.helper.js b/src/test/utils/transactions/addOwner.helper.js index 2d88fb4f91..e04f2acf68 100644 --- a/src/test/utils/transactions/addOwner.helper.js +++ b/src/test/utils/transactions/addOwner.helper.js @@ -2,8 +2,10 @@ import TestUtils from 'react-dom/test-utils' import { sleep } from '~/utils/timer' import { checkMinedTx, checkPendingTx } from '~/test/builder/safe.dom.utils' +import { whenExecuted } from '~/test/utils/logTransactions' +import AddOwner from '~/routes/safe/component/AddOwner' -export const sendAddOwnerForm = ( +export const sendAddOwnerForm = async ( SafeDom: React$Component, addOwner: React$Component, ownerName: string, @@ -13,7 +15,7 @@ export const sendAddOwnerForm = ( // load add multisig form component TestUtils.Simulate.click(addOwner) // give time to re-render it - sleep(600) + await sleep(400) // fill the form const inputs = TestUtils.scryRenderedDOMComponentsWithTag(SafeDom, 'input') @@ -34,8 +36,7 @@ export const sendAddOwnerForm = ( TestUtils.Simulate.submit(form) TestUtils.Simulate.submit(form) - // give time to process transaction - return sleep(2500) + return whenExecuted(SafeDom, AddOwner) } export const checkMinedAddOwnerTx = (Transaction: React$Component, name: string) => { diff --git a/src/test/utils/transactions/moveFunds.helper.js b/src/test/utils/transactions/moveFunds.helper.js index 13f64aa023..9c0970cfce 100644 --- a/src/test/utils/transactions/moveFunds.helper.js +++ b/src/test/utils/transactions/moveFunds.helper.js @@ -2,25 +2,31 @@ import TestUtils from 'react-dom/test-utils' import { sleep } from '~/utils/timer' import { checkMinedTx, checkPendingTx } from '~/test/builder/safe.dom.utils' +import SendToken from '~/routes/safe/component/SendToken' +import { whenExecuted } from '~/test/utils/logTransactions' -export const sendMoveFundsForm = ( + +export const sendMoveFundsForm = async ( SafeDom: React$Component, - multisigButton: React$Component, - txName: string, + expandBalance: React$Component, value: string, destination: string, ) => { // load add multisig form component - TestUtils.Simulate.click(multisigButton) + TestUtils.Simulate.click(expandBalance) // give time to re-render it - sleep(600) + await sleep(400) + + const ethList = TestUtils.findRenderedDOMComponentWithClass(SafeDom, 'ETH') + if (!ethList) throw new Error() + const ethButton = ethList.getElementsByTagName('button') + TestUtils.Simulate.click(ethButton[0]) + await sleep(450) // fill the form const inputs = TestUtils.scryRenderedDOMComponentsWithTag(SafeDom, 'input') - const nameInput = inputs[0] - const destinationInput = inputs[1] - const amountInEthInput = inputs[2] - TestUtils.Simulate.change(nameInput, { target: { value: txName } }) + const destinationInput = inputs[0] + const amountInEthInput = inputs[1] TestUtils.Simulate.change(amountInEthInput, { target: { value } }) TestUtils.Simulate.change(destinationInput, { target: { value: destination } }) // $FlowFixMe @@ -30,8 +36,8 @@ export const sendMoveFundsForm = ( TestUtils.Simulate.submit(form) TestUtils.Simulate.submit(form) - // give time to process transaction - return sleep(2500) + + return whenExecuted(SafeDom, SendToken) } export const checkMinedMoveFundsTx = (Transaction: React$Component, name: string) => { diff --git a/src/test/utils/transactions/moveTokens.helper.js b/src/test/utils/transactions/moveTokens.helper.js new file mode 100644 index 0000000000..41bfa12e74 --- /dev/null +++ b/src/test/utils/transactions/moveTokens.helper.js @@ -0,0 +1,73 @@ +// @flow +import { Map } from 'immutable' +import TestUtils from 'react-dom/test-utils' +import { sleep } from '~/utils/timer' +import * as fetchTokensAction from '~/routes/tokens/store/actions/fetchTokens' +import { checkMinedTx, checkPendingTx, EXPAND_BALANCE_INDEX } from '~/test/builder/safe.dom.utils' +import { whenExecuted } from '~/test/utils/logTransactions' +import SendToken from '~/routes/safe/component/SendToken' +import { makeToken, type Token } from '~/routes/tokens/store/model/token' +import addTokens from '~/routes/tokens/store/actions/addTokens' + +export const sendMoveTokensForm = async ( + SafeDom: React$Component, + expandBalance: React$Component, + value: number, + destination: string, +) => { + TestUtils.Simulate.click(expandBalance) + await sleep(500) + + // $FlowFixMe + const balanceButtons = TestUtils.scryRenderedDOMComponentsWithTag(SafeDom, 'button') + const tokenButton = balanceButtons[EXPAND_BALANCE_INDEX + 1] // expand button, and the next one is for sending + expect(tokenButton.hasAttribute('disabled')).toBe(false) + + // load move tokens form component + TestUtils.Simulate.click(tokenButton) + await sleep(500) + + // fill the form + const inputs = TestUtils.scryRenderedDOMComponentsWithTag(SafeDom, 'input') + const destinationInput = inputs[0] + const amountofTokens = inputs[1] + TestUtils.Simulate.change(amountofTokens, { target: { value } }) + TestUtils.Simulate.change(destinationInput, { target: { value: destination } }) + // $FlowFixMe + const form = TestUtils.findRenderedDOMComponentWithTag(SafeDom, 'form') + + // submit it + TestUtils.Simulate.submit(form) + TestUtils.Simulate.submit(form) + + return whenExecuted(SafeDom, SendToken) +} + +export const dispatchTknBalance = async (store: Store, tokenAddress: string, address: string) => { + const fetchBalancesMock = jest.spyOn(fetchTokensAction, 'fetchTokens') + const funds = await fetchTokensAction.calculateBalanceOf(tokenAddress, address, 18) + const balances: Map = Map().set('TKN', makeToken({ + address: tokenAddress, + name: 'Token', + symbol: 'TKN', + decimals: 18, + logoUrl: 'https://github.com/TrustWallet/tokens/blob/master/images/0x6810e776880c02933d47db1b9fc05908e5386b96.png?raw=true', + funds, + })) + fetchBalancesMock.mockImplementation(() => store.dispatch(addTokens(address, balances))) + await store.dispatch(fetchTokensAction.fetchTokens(address)) + fetchBalancesMock.mockRestore() +} + +export const checkMinedMoveTokensTx = (Transaction: React$Component, name: string) => { + checkMinedTx(Transaction, name) +} + +export const checkPendingMoveTokensTx = async ( + Transaction: React$Component, + safeThreshold: number, + name: string, + statusses: string[], +) => { + await checkPendingTx(Transaction, safeThreshold, name, statusses) +} diff --git a/src/test/utils/transactions/removeOwner.helper.js b/src/test/utils/transactions/removeOwner.helper.js index 43db3c5aba..abe8225471 100644 --- a/src/test/utils/transactions/removeOwner.helper.js +++ b/src/test/utils/transactions/removeOwner.helper.js @@ -2,23 +2,27 @@ import TestUtils from 'react-dom/test-utils' import { sleep } from '~/utils/timer' import { checkMinedTx, EXPAND_OWNERS_INDEX, checkPendingTx } from '~/test/builder/safe.dom.utils' +import { filterMoveButtonsFrom } from '~/test/builder/safe.dom.builder' +import { whenExecuted } from '~/test/utils/logTransactions' +import RemoveOwner from '~/routes/safe/component/RemoveOwner' -export const sendRemoveOwnerForm = ( +export const sendRemoveOwnerForm = async ( SafeDom: React$Component, expandOwners: React$Component, ) => { // Expand owners TestUtils.Simulate.click(expandOwners) - sleep(600) + await sleep(400) // Get delete button user - const buttons = TestUtils.scryRenderedDOMComponentsWithTag(SafeDom, 'button') + const allButtons = TestUtils.scryRenderedDOMComponentsWithTag(SafeDom, 'button') + const buttons = filterMoveButtonsFrom(allButtons) const removeUserButton = buttons[EXPAND_OWNERS_INDEX + 2] // + 2 one the Add and the next delete expect(removeUserButton.getAttribute('aria-label')).toBe('Delete') // render form for deleting the user TestUtils.Simulate.click(removeUserButton) - sleep(600) + await sleep(400) // $FlowFixMe const form = TestUtils.findRenderedDOMComponentWithTag(SafeDom, 'form') @@ -27,8 +31,7 @@ export const sendRemoveOwnerForm = ( TestUtils.Simulate.submit(form) TestUtils.Simulate.submit(form) - // give time to process transaction - return sleep(2500) + return whenExecuted(SafeDom, RemoveOwner) } export const checkMinedRemoveOwnerTx = (Transaction: React$Component, name: string) => { diff --git a/src/test/utils/transactions/threshold.helper.js b/src/test/utils/transactions/threshold.helper.js index c2f32e4c57..7d396c67d7 100644 --- a/src/test/utils/transactions/threshold.helper.js +++ b/src/test/utils/transactions/threshold.helper.js @@ -3,15 +3,17 @@ import TestUtils from 'react-dom/test-utils' import { sleep } from '~/utils/timer' import { checkMinedTx } from '~/test/builder/safe.dom.utils' import { getGnosisSafeInstanceAt } from '~/wallets/safeContracts' +import Threshold from '~/routes/safe/component/Threshold' +import { whenExecuted } from '~/test/utils/logTransactions' -export const sendChangeThresholdForm = ( +export const sendChangeThresholdForm = async ( SafeDom: React$Component, changeThreshold: React$Component, threshold: string, ) => { // Load the Threshold Form TestUtils.Simulate.click(changeThreshold) - sleep(600) + await sleep(400) // fill the form const inputs = TestUtils.scryRenderedDOMComponentsWithTag(SafeDom, 'input') @@ -24,8 +26,7 @@ export const sendChangeThresholdForm = ( TestUtils.Simulate.submit(form) TestUtils.Simulate.submit(form) - // give time to process transaction - return sleep(2500) + return whenExecuted(SafeDom, Threshold) } export const checkMinedThresholdTx = (Transaction: React$Component, name: string) => { diff --git a/src/test/utils/transactions/withdraw.helper.js b/src/test/utils/transactions/withdraw.helper.js index 8a7c33e6b3..2967fb5f99 100644 --- a/src/test/utils/transactions/withdraw.helper.js +++ b/src/test/utils/transactions/withdraw.helper.js @@ -1,10 +1,12 @@ // @flow import TestUtils from 'react-dom/test-utils' import { sleep } from '~/utils/timer' -import { checkBalanceOf } from '~/test/utils/etherMovements' +import { checkBalanceOf } from '~/test/utils/tokenMovements' import { checkMinedTx } from '~/test/builder/safe.dom.utils' +import { whenExecuted } from '~/test/utils/logTransactions' +import Withdraw from '~/routes/safe/component/Withdraw' -export const sendWithdrawForm = ( +export const sendWithdrawForm = async ( SafeDom: React$Component, withdrawButton: React$Component, amount: string, @@ -13,7 +15,7 @@ export const sendWithdrawForm = ( // load add multisig form component TestUtils.Simulate.click(withdrawButton) // give time to re-render it - sleep(600) + await sleep(400) // fill the form const inputs = TestUtils.scryRenderedDOMComponentsWithTag(SafeDom, 'input') @@ -28,15 +30,14 @@ export const sendWithdrawForm = ( TestUtils.Simulate.submit(form) TestUtils.Simulate.submit(form) - // give time to process transaction - return sleep(2500) + return whenExecuted(SafeDom, Withdraw) } export const checkMinedWithdrawTx = async ( Transaction: React$Component, name: string, address: string, - funds: number, + funds: string, ) => { await checkBalanceOf(address, funds) diff --git a/src/utils/fetch.js b/src/utils/fetch.js new file mode 100644 index 0000000000..2777fdd42b --- /dev/null +++ b/src/utils/fetch.js @@ -0,0 +1,19 @@ +// @flow + +export const enhancedFetch = async (url: string, errMsg: string) => { + const header = new Headers({ + 'Access-Control-Allow-Origin': '*', + }) + + const sentData = { + mode: 'cors', + header, + } + + const response = await fetch(url, sentData) + if (!response.ok) { + throw new Error(errMsg) + } + + return response.json() +} diff --git a/src/utils/localStorage.js b/src/utils/localStorage/index.js similarity index 100% rename from src/utils/localStorage.js rename to src/utils/localStorage/index.js diff --git a/src/utils/localStorage/tokens.js b/src/utils/localStorage/tokens.js new file mode 100644 index 0000000000..f37ddfa5bd --- /dev/null +++ b/src/utils/localStorage/tokens.js @@ -0,0 +1,67 @@ +// @flow +import { List } from 'immutable' +import { load } from '~/utils/localStorage' +import { type Token, type TokenProps } from '~/routes/tokens/store/model/token' + +export const ACTIVE_TOKENS_KEY = 'ACTIVE_TOKENS' +export const TOKENS_KEY = 'TOKENS' + +const getActiveTokensKey = (safeAddress: string) => `${ACTIVE_TOKENS_KEY}-${safeAddress}` +const getTokensKey = (safeAddress: string) => `${TOKENS_KEY}-${safeAddress}` + +export const setActiveTokenAddresses = (safeAddress: string, tokens: List) => { + try { + const serializedState = JSON.stringify(tokens) + const key = getActiveTokensKey(safeAddress) + localStorage.setItem(key, serializedState) + } catch (err) { + // eslint-disable-next-line + console.log('Error storing tokens in localstorage') + } +} + +export const getActiveTokenAddresses = (safeAddress: string): List => { + const key = getActiveTokensKey(safeAddress) + const data = load(key) + + return data ? List(data) : List() +} + +export const storedTokensBefore = (safeAddress: string) => { + const key = getActiveTokensKey(safeAddress) + return localStorage.getItem(key) === null +} + +export const getTokens = (safeAddress: string): List => { + const key = getTokensKey(safeAddress) + const data = load(key) + + return data ? List(data) : List() +} + +export const setToken = (safeAddress: string, token: Token) => { + const data: List = getTokens(safeAddress) + + try { + const serializedState = JSON.stringify(data.push(token)) + const key = getTokensKey(safeAddress) + localStorage.setItem(key, serializedState) + } catch (err) { + // eslint-disable-next-line + console.log('Error adding token in localstorage') + } +} + +export const removeTokenFromStorage = (safeAddress: string, token: Token) => { + const data: List = getTokens(safeAddress) + + try { + const index = data.indexOf(token) + const serializedState = JSON.stringify(data.remove(index)) + const key = getTokensKey(safeAddress) + localStorage.setItem(key, serializedState) + } catch (err) { + // eslint-disable-next-line + console.log('Error removing token in localstorage') + } +} diff --git a/src/utils/tokens.js b/src/utils/tokens.js new file mode 100644 index 0000000000..6dc1f89c96 --- /dev/null +++ b/src/utils/tokens.js @@ -0,0 +1,40 @@ +// @flow +import { List } from 'immutable' +import logo from '~/assets/icons/icon_etherTokens.svg' +import { getBalanceInEtherOf } from '~/wallets/getWeb3' +import { makeToken, type Token } from '~/routes/tokens/store/model/token' + +export const ETH_ADDRESS = '0' +export const isEther = (symbol: string) => symbol === 'ETH' + +export const getSafeEthToken = async (safeAddress: string) => { + const balance = await getBalanceInEtherOf(safeAddress) + + const ethBalance = makeToken({ + address: '0', + name: 'Ether', + symbol: 'ETH', + decimals: 18, + logoUrl: logo, + funds: balance, + }) + + return ethBalance +} + +export const calculateActiveErc20TokensFrom = (tokens: List) => { + const addresses = List().withMutations(list => + tokens.forEach((token: Token) => { + if (isEther(token.get('symbol'))) { + return + } + + if (!token.get('status')) { + return + } + + list.push(token.address) + })) + + return addresses +} diff --git a/src/routes/safe/component/AddTransaction/createTransactions.js b/src/wallets/createTransactions.js similarity index 97% rename from src/routes/safe/component/AddTransaction/createTransactions.js rename to src/wallets/createTransactions.js index bb317814ef..1d5b67907d 100644 --- a/src/routes/safe/component/AddTransaction/createTransactions.js +++ b/src/wallets/createTransactions.js @@ -8,7 +8,7 @@ import { getGnosisSafeContract } from '~/wallets/safeContracts' import { getWeb3 } from '~/wallets/getWeb3' import { type Safe } from '~/routes/safe/store/model/safe' import { sameAddress } from '~/wallets/ethAddresses' -import { checkReceiptStatus, calculateGasOf, calculateGasPrice } from '~/wallets/ethTransactions' +import { checkReceiptStatus, calculateGasOf, calculateGasPrice, EMPTY_DATA } from '~/wallets/ethTransactions' export const TX_NAME_PARAM = 'txName' export const TX_DESTINATION_PARAM = 'txDestination' @@ -93,7 +93,7 @@ export const createTransaction = async ( txValue: number, nonce: number, user: string, - data: string = '0x', + data: string = EMPTY_DATA, ) => { const web3 = getWeb3() const safeAddress = safe.get('address') diff --git a/src/wallets/ethTransactions.js b/src/wallets/ethTransactions.js index 6b121f77d7..430dbdb52f 100644 --- a/src/wallets/ethTransactions.js +++ b/src/wallets/ethTransactions.js @@ -2,8 +2,10 @@ import { BigNumber } from 'bignumber.js' import { getWeb3 } from '~/wallets/getWeb3' import { promisify } from '~/utils/promisify' +import { enhancedFetch } from '~/utils/fetch' // const MAINNET_NETWORK = 1 +export const EMPTY_DATA = '0x' export const checkReceiptStatus = async (hash: string) => { if (!hash) { @@ -39,21 +41,9 @@ export const calculateGasPrice = async () => { return '20000000000' } - const header = new Headers({ - 'Access-Control-Allow-Origin': '*', - }) - - const sentData = { - mode: 'cors', - header, - } - - const response = await fetch('https://ethgasstation.info/json/ethgasAPI.json', sentData) - if (!response.ok) { - throw new Error('Error querying gast station') - } - - const json = await response.json() + const url = 'https://ethgasstation.info/json/ethgasAPI.json' + const errMsg = 'Error querying gas station' + const json = await enhancedFetch(url, errMsg) return new BigNumber(json.average).multipliedBy(1e8).toString() } diff --git a/src/wallets/safeContracts.js b/src/wallets/safeContracts.js index 60a589cea2..16910a623f 100644 --- a/src/wallets/safeContracts.js +++ b/src/wallets/safeContracts.js @@ -7,7 +7,7 @@ import GnosisSafeSol from '#/GnosisSafeTeamEdition.json' import ProxyFactorySol from '#/ProxyFactory.json' import CreateAndAddModules from '#/CreateAndAddModules.json' import DailyLimitModule from '#/DailyLimitModule.json' -import { calculateGasOf, calculateGasPrice } from '~/wallets/ethTransactions' +import { calculateGasOf, calculateGasPrice, EMPTY_DATA } from '~/wallets/ethTransactions' let proxyFactoryMaster let createAndAddModuleMaster @@ -27,7 +27,7 @@ function createAndAddModulesData(dataArray) { const mw = ModuleDataWrapper.at(1) // Remove method id (10) and position of data in payload (64) - return dataArray.reduce((acc, data) => acc + mw.setup.getData(data).substr(74), '0x') + return dataArray.reduce((acc, data) => acc + mw.setup.getData(data).substr(74), EMPTY_DATA) } diff --git a/src/wallets/tokens.js b/src/wallets/tokens.js new file mode 100644 index 0000000000..b8e6be9704 --- /dev/null +++ b/src/wallets/tokens.js @@ -0,0 +1,9 @@ +// @flow +import { getWeb3 } from '~/wallets/getWeb3' +import { BigNumber } from 'bignumber.js' + +export const toNative = async (amt: string | number | BigNumber, decimal: number): Promise => { + const web3 = getWeb3() + + return web3.toBigNumber(amt).mul(10 ** decimal) +} diff --git a/yarn.lock b/yarn.lock index f1b9bf726d..9264d541d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -931,6 +931,10 @@ lodash "^4.17.5" to-fast-properties "^2.0.0" +"@gnosis.pm/util-contracts@^0.2.14": + version "0.2.14" + resolved "https://registry.yarnpkg.com/@gnosis.pm/util-contracts/-/util-contracts-0.2.14.tgz#587cd6268a7d08dbc0d08b1c7bd375e19549d833" + "@material-ui/core@^1.2.1": version "1.2.2" resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-1.2.2.tgz#b074bdaa679d68af235b4d3f108f828ddcf6c1bc" @@ -2921,13 +2925,13 @@ bignumber.js@^7.2.1: version "7.2.1" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" -"bignumber.js@git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2": +"bignumber.js@git+https://github.com/debris/bignumber.js#master": version "2.0.7" - resolved "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" + resolved "git+https://github.com/debris/bignumber.js#c7a38de919ed75e6fb6ba38051986e294b328df9" -"bignumber.js@git+https://github.com/debris/bignumber.js.git#master": +"bignumber.js@git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2": version "2.0.7" - resolved "git+https://github.com/debris/bignumber.js.git#c7a38de919ed75e6fb6ba38051986e294b328df9" + resolved "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" binary-extensions@^1.0.0: version "1.11.0" @@ -5444,8 +5448,8 @@ fill-range@^4.0.0: to-regex-range "^2.1.0" final-form@^4.2.1: - version "4.8.2" - resolved "https://registry.yarnpkg.com/final-form/-/final-form-4.8.2.tgz#905de0a5107f889b1eb86dbbdea96f2d40fcb20d" + version "4.8.3" + resolved "https://registry.yarnpkg.com/final-form/-/final-form-4.8.3.tgz#86a03da6cd6459ed8fe3737dbd9dc87ed40c11d7" finalhandler@1.1.1: version "1.1.1" @@ -9795,8 +9799,8 @@ react-event-listener@^0.6.0: warning "^4.0.1" react-final-form@^3.1.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/react-final-form/-/react-final-form-3.6.2.tgz#fc61b5abfc8e4afb0fd4dea1a4b70cca07aa3e05" + version "3.6.4" + resolved "https://registry.yarnpkg.com/react-final-form/-/react-final-form-3.6.4.tgz#1ca37935c2af0bc659a53b293dd84a75d2381548" react-fuzzy@^0.5.2: version "0.5.2"