diff --git a/config/webpack.config.prod.js b/config/webpack.config.prod.js index 18ce0afe..d10b8845 100644 --- a/config/webpack.config.prod.js +++ b/config/webpack.config.prod.js @@ -77,6 +77,8 @@ module.exports = { bail: true, optimization: { splitChunks: { + chunks: "all", + /* https://stackoverflow.com/questions/48985780/webpack-4-create-vendor-chunk cacheGroups: { vendor: { test: /node_modules/, @@ -86,6 +88,7 @@ module.exports = { minSize: 1, }, }, + */ }, }, entry: [ diff --git a/safe-contracts/build/contracts/CreateAndAddModules.json b/safe-contracts/build/contracts/CreateAndAddModules.json new file mode 100644 index 00000000..e9fe806d --- /dev/null +++ b/safe-contracts/build/contracts/CreateAndAddModules.json @@ -0,0 +1,1271 @@ +{ + "contractName": "CreateAndAddModules", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "module", + "type": "address" + } + ], + "name": "enableModule", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "proxyFactory", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "createAndAddModules", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610275806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080602085010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a72305820e1479531e7421914f006918566f778761cf7bfa2673aa10247d2f44d375165410029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080602085010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a72305820e1479531e7421914f006918566f778761cf7bfa2673aa10247d2f44d375165410029", + "sourceMap": "245:1457:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;245:1457:9;;;;;;;", + "deployedSourceMap": "245:1457:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:885;;8:9:-1;5:2;;;30:1;27;20:12;5:2;815:885:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;405:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;405:81:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1658:25:9;;;;991:703;;;815:885;;;;;:::o;405:81::-;471:8;;", + "source": "pragma solidity 0.4.23;\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, 0x20), 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": [ + 1404 + ] + }, + "id": 1405, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1361, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:9" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "file": "../Module.sol", + "id": 1362, + "nodeType": "ImportDirective", + "scope": 1405, + "sourceUnit": 622, + "src": "24:23:9", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "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": 1404, + "linearizedBaseContracts": [ + 1404 + ], + "name": "CreateAndAddModules", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1370, + "nodeType": "Block", + "src": "461:25:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1367, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2401, + 2402 + ], + "referencedDeclaration": 2401, + "src": "471:6:9", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "471:8:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1369, + "nodeType": "ExpressionStatement", + "src": "471:8:9" + } + ] + }, + "documentation": "@dev Function required to compile contract. Gnosis Safe function is called instead.\n @param module Not used.", + "id": 1371, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "enableModule", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1365, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1364, + "name": "module", + "nodeType": "VariableDeclaration", + "scope": 1371, + "src": "427:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 1363, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 621, + "src": "427:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "426:15:9" + }, + "payable": false, + "returnParameters": { + "id": 1366, + "nodeType": "ParameterList", + "parameters": [], + "src": "461:0:9" + }, + "scope": 1404, + "src": "405:81:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1402, + "nodeType": "Block", + "src": "897:803:9", + "statements": [ + { + "assignments": [ + 1379 + ], + "declarations": [ + { + "constant": false, + "id": 1379, + "name": "length", + "nodeType": "VariableDeclaration", + "scope": 1403, + "src": "907:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1378, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "907:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1382, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1380, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1375, + "src": "924:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "924:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "907:28:9" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1384, + "name": "module", + "nodeType": "VariableDeclaration", + "scope": 1403, + "src": "945:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 1383, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 621, + "src": "945:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1385, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "945:13:9" + }, + { + "assignments": [ + 1387 + ], + "declarations": [ + { + "constant": false, + "id": 1387, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1403, + "src": "968:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1386, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "968:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1389, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1388, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "980:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "968:13:9" + }, + { + "body": { + "id": 1400, + "nodeType": "Block", + "src": "1010:684:9", + "statements": [ + { + "externalReferences": [ + { + "module": { + "declaration": 1384, + "isOffset": false, + "isSlot": false, + "src": "1414:6:9", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1375, + "isOffset": false, + "isSlot": false, + "src": "1164:4:9", + "valueSize": 1 + } + }, + { + "i": { + "declaration": 1387, + "isOffset": false, + "isSlot": false, + "src": "1170:1:9", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1375, + "isOffset": false, + "isSlot": false, + "src": "1224:4:9", + "valueSize": 1 + } + }, + { + "i": { + "declaration": 1387, + "isOffset": false, + "isSlot": false, + "src": "1230:1:9", + "valueSize": 1 + } + }, + { + "i": { + "declaration": 1387, + "isOffset": false, + "isSlot": false, + "src": "1557:1:9", + "valueSize": 1 + } + }, + { + "proxyFactory": { + "declaration": 1373, + "isOffset": false, + "isSlot": false, + "src": "1317:12:9", + "valueSize": 1 + } + }, + { + "i": { + "declaration": 1387, + "isOffset": false, + "isSlot": false, + "src": "1566:1:9", + "valueSize": 1 + } + } + ], + "id": 1393, + "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, 0x20), 0x20), 0x20)))\n}", + "src": "1092:570:9" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1397, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1384, + "src": "1676:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + ], + "expression": { + "argumentTypes": null, + "id": 1394, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2427, + "src": "1658:4:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CreateAndAddModules_$1404", + "typeString": "contract CreateAndAddModules" + } + }, + "id": 1396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "enableModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 1371, + "src": "1658:17:9", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$621_$returns$__$", + "typeString": "function (contract Module) external" + } + }, + "id": 1398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1658:25:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1399, + "nodeType": "ExpressionStatement", + "src": "1658:25:9" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1390, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1387, + "src": "998:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 1391, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1379, + "src": "1002:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "998:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1401, + "nodeType": "WhileStatement", + "src": "991:703:9" + } + ] + }, + "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": 1403, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "createAndAddModules", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1376, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1373, + "name": "proxyFactory", + "nodeType": "VariableDeclaration", + "scope": 1403, + "src": "844:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1372, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "844:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1375, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1403, + "src": "866:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1374, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "866:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "843:34:9" + }, + "payable": false, + "returnParameters": { + "id": 1377, + "nodeType": "ParameterList", + "parameters": [], + "src": "897:0:9" + }, + "scope": 1404, + "src": "815:885:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1405, + "src": "245:1457:9" + } + ], + "src": "0:1703:9" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModules.sol", + "exportedSymbols": { + "CreateAndAddModules": [ + 1404 + ] + }, + "id": 1405, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1361, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:9" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "file": "../Module.sol", + "id": 1362, + "nodeType": "ImportDirective", + "scope": 1405, + "sourceUnit": 622, + "src": "24:23:9", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "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": 1404, + "linearizedBaseContracts": [ + 1404 + ], + "name": "CreateAndAddModules", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1370, + "nodeType": "Block", + "src": "461:25:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1367, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2401, + 2402 + ], + "referencedDeclaration": 2401, + "src": "471:6:9", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "471:8:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1369, + "nodeType": "ExpressionStatement", + "src": "471:8:9" + } + ] + }, + "documentation": "@dev Function required to compile contract. Gnosis Safe function is called instead.\n @param module Not used.", + "id": 1371, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "enableModule", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1365, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1364, + "name": "module", + "nodeType": "VariableDeclaration", + "scope": 1371, + "src": "427:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 1363, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 621, + "src": "427:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "426:15:9" + }, + "payable": false, + "returnParameters": { + "id": 1366, + "nodeType": "ParameterList", + "parameters": [], + "src": "461:0:9" + }, + "scope": 1404, + "src": "405:81:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1402, + "nodeType": "Block", + "src": "897:803:9", + "statements": [ + { + "assignments": [ + 1379 + ], + "declarations": [ + { + "constant": false, + "id": 1379, + "name": "length", + "nodeType": "VariableDeclaration", + "scope": 1403, + "src": "907:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1378, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "907:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1382, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1380, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1375, + "src": "924:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "924:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "907:28:9" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1384, + "name": "module", + "nodeType": "VariableDeclaration", + "scope": 1403, + "src": "945:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 1383, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 621, + "src": "945:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1385, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "945:13:9" + }, + { + "assignments": [ + 1387 + ], + "declarations": [ + { + "constant": false, + "id": 1387, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1403, + "src": "968:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1386, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "968:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1389, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1388, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "980:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "968:13:9" + }, + { + "body": { + "id": 1400, + "nodeType": "Block", + "src": "1010:684:9", + "statements": [ + { + "externalReferences": [ + { + "module": { + "declaration": 1384, + "isOffset": false, + "isSlot": false, + "src": "1414:6:9", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1375, + "isOffset": false, + "isSlot": false, + "src": "1164:4:9", + "valueSize": 1 + } + }, + { + "i": { + "declaration": 1387, + "isOffset": false, + "isSlot": false, + "src": "1170:1:9", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1375, + "isOffset": false, + "isSlot": false, + "src": "1224:4:9", + "valueSize": 1 + } + }, + { + "i": { + "declaration": 1387, + "isOffset": false, + "isSlot": false, + "src": "1230:1:9", + "valueSize": 1 + } + }, + { + "i": { + "declaration": 1387, + "isOffset": false, + "isSlot": false, + "src": "1557:1:9", + "valueSize": 1 + } + }, + { + "proxyFactory": { + "declaration": 1373, + "isOffset": false, + "isSlot": false, + "src": "1317:12:9", + "valueSize": 1 + } + }, + { + "i": { + "declaration": 1387, + "isOffset": false, + "isSlot": false, + "src": "1566:1:9", + "valueSize": 1 + } + } + ], + "id": 1393, + "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, 0x20), 0x20), 0x20)))\n}", + "src": "1092:570:9" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1397, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1384, + "src": "1676:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + ], + "expression": { + "argumentTypes": null, + "id": 1394, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2427, + "src": "1658:4:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CreateAndAddModules_$1404", + "typeString": "contract CreateAndAddModules" + } + }, + "id": 1396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "enableModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 1371, + "src": "1658:17:9", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$621_$returns$__$", + "typeString": "function (contract Module) external" + } + }, + "id": 1398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1658:25:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1399, + "nodeType": "ExpressionStatement", + "src": "1658:25:9" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1390, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1387, + "src": "998:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 1391, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1379, + "src": "1002:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "998:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1401, + "nodeType": "WhileStatement", + "src": "991:703:9" + } + ] + }, + "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": 1403, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "createAndAddModules", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1376, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1373, + "name": "proxyFactory", + "nodeType": "VariableDeclaration", + "scope": 1403, + "src": "844:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1372, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "844:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1375, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1403, + "src": "866:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1374, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "866:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "843:34:9" + }, + "payable": false, + "returnParameters": { + "id": 1377, + "nodeType": "ParameterList", + "parameters": [], + "src": "897:0:9" + }, + "scope": 1404, + "src": "815:885:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1405, + "src": "245:1457:9" + } + ], + "src": "0:1703:9" + }, + "compiler": { + "name": "solc", + "version": "0.4.23+commit.124ca40d.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0x824caabb57949792481937b7f2b4bb34d0d54354", + "transactionHash": "0xc8bb172c792293de7e58d6c15e6904606ba0560088570a6b465a439f96c530f8" + }, + "1526478212260": { + "events": {}, + "links": {}, + "address": "0x0dfc419b1f993f1d14459f802c5f4966a50640fe", + "transactionHash": "0x0bb1edef06266204f2710df9365b39aac03e0527a4d9b5b5ca12b7b1fbe888d8" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-16T13:45:24.531Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModule.json b/safe-contracts/build/contracts/DailyLimitModule.json index 99c698db..8d34a185 100644 --- a/safe-contracts/build/contracts/DailyLimitModule.json +++ b/safe-contracts/build/contracts/DailyLimitModule.json @@ -171,73 +171,73 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610d68806100206000396000f3006080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f814610152578063481c6a75146101bb5780637de7edef1461021257806381c5e03b14610255578063a3f4df7e146102a2578063b74e452b14610332578063d7bffc921461035d578063fce7379a146103c2578063ffa1ad7414610455575b600080fd5b3480156100b557600080fd5b5061015060048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e5565b005b34801561015e57600080fd5b50610167610584565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101c757600080fd5b506101d06105a8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021e57600080fd5b50610253600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105ce565b005b34801561026157600080fd5b506102a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610693565b005b3480156102ae57600080fd5b506102b761073a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f75780820151818401526020810190506102dc565b50505050905090810190601f1680156103245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033e57600080fd5b50610347610773565b6040518082815260200191505060405180910390f35b34801561036957600080fd5b5061039e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061078b565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103ce57600080fd5b50610453600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506107b5565b005b34801561046157600080fd5b5061046a6107c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104aa57808201518184015260208101905061048f565b50505050905090810190601f1680156104d75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104ef6107ff565b600090505b825181101561057f57818181518110151561050b57fe5b9060200190602002015160026000858481518110151561052757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506104f4565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561062a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561065057600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106ef57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561078357fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6107c133848484610889565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561084657600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050506040513d602081101561097657600080fd5b8101908080519060200190929190505050151561099257600080fd5b600085511480156109a35750600086115b806109bb5750600085511180156109ba5750600086145b5b15156109c657600080fd5b6000855114156109df5760009350869250859150610a64565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a6357600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a8a57600080fd5b600082111515610a9957600080fd5b610aa38483610c8d565b1515610aae57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b021640a88888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bb857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bf8578082015181840152602081019050610bdd565b50505050905090810190601f168015610c255780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4757600080fd5b505af1158015610c5b573d6000803e3d6000fd5b505050506040513d6020811015610c7157600080fd5b8101908080519060200190929190505050505050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610cde610773565b1115610cff57610cec610773565b8160020181905550600081600101819055505b80600001548382600101540111158015610d225750806001015483826001015401115b15610d305760019150610d35565b600091505b50929150505600a165627a7a72305820085a92f4808cf6f2b41a5812e1bccdce1566340ce475cdf150e85dbf780cf47d0029", - "deployedBytecode": "0x6080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f814610152578063481c6a75146101bb5780637de7edef1461021257806381c5e03b14610255578063a3f4df7e146102a2578063b74e452b14610332578063d7bffc921461035d578063fce7379a146103c2578063ffa1ad7414610455575b600080fd5b3480156100b557600080fd5b5061015060048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e5565b005b34801561015e57600080fd5b50610167610584565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101c757600080fd5b506101d06105a8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021e57600080fd5b50610253600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105ce565b005b34801561026157600080fd5b506102a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610693565b005b3480156102ae57600080fd5b506102b761073a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f75780820151818401526020810190506102dc565b50505050905090810190601f1680156103245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033e57600080fd5b50610347610773565b6040518082815260200191505060405180910390f35b34801561036957600080fd5b5061039e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061078b565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103ce57600080fd5b50610453600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506107b5565b005b34801561046157600080fd5b5061046a6107c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104aa57808201518184015260208101905061048f565b50505050905090810190601f1680156104d75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104ef6107ff565b600090505b825181101561057f57818181518110151561050b57fe5b9060200190602002015160026000858481518110151561052757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506104f4565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561062a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561065057600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106ef57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561078357fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6107c133848484610889565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561084657600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050506040513d602081101561097657600080fd5b8101908080519060200190929190505050151561099257600080fd5b600085511480156109a35750600086115b806109bb5750600085511180156109ba5750600086145b5b15156109c657600080fd5b6000855114156109df5760009350869250859150610a64565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a6357600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a8a57600080fd5b600082111515610a9957600080fd5b610aa38483610c8d565b1515610aae57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b021640a88888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bb857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bf8578082015181840152602081019050610bdd565b50505050905090810190601f168015610c255780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4757600080fd5b505af1158015610c5b573d6000803e3d6000fd5b505050506040513d6020811015610c7157600080fd5b8101908080519060200190929190505050505050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610cde610773565b1115610cff57610cec610773565b8160020181905550600081600101819055505b80600001548382600101540111158015610d225750806001015483826001015401115b15610d305760019150610d35565b600091505b50929150505600a165627a7a72305820085a92f4808cf6f2b41a5812e1bccdce1566340ce475cdf150e85dbf780cf47d0029", - "sourceMap": "296:3841:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;296:3841:18;;;;;;;", - "deployedSourceMap": "296:3841:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;991:222:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;441:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;441:67:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:8;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1441:158:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1441: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4019:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4019:116:18;;;;;;;;;;;;;;;;;;;;;;;586:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;586:50:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3287:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3287:146: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222;1104:9;1077:12;:10;:12::i;:::-;1116:1;1104:13;;1099:107;1123:6;:13;1119:1;:17;1099:107;;;1191:12;1204:1;1191:15;;;;;;;;;;;;;;;;;;1155:11;:22;1167:6;1174:1;1167:9;;;;;;;;;;;;;;;;;;1155:22;;;;;;;;;;;;;;;:33;;:51;;;;1138:3;;;;;;;1099:107;;;991:222;;;:::o;441:67::-;;;:::o;262:28:8:-;;;;;;;;;;;;;:::o;626:208:6:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1441:158:18:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1582:10:18;1550:11;:18;1562:5;1550:18;;;;;;;;;;;;;;;:29;;:42;;;;1441:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;4019:116::-;4081:4;4121:6;4115:3;:12;;;;;;;;4108:3;:20;4101:27;;4019:116;:::o;586:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3287:146::-;3382:44;3398:10;3410:2;3414:5;3421:4;3382:15;:44::i;:::-;3287:146;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:8:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;1605:1298:18:-;1997:13;2020:16;2046:14;2233:25;1814:7;;;;;;;;;;;1801:29;;;1831:6;1801:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1801:37:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1801:37:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1801:37:18;;;;;;;;;;;;;;;;1793:46;;;;;;;;1939:1;1924:4;:11;:16;:29;;;;;1952:1;1944:5;:9;1924:29;:62;;;;1971:1;1957:4;:11;:15;:29;;;;;1985:1;1976:5;:10;1957:29;1924:62;1916:71;;;;;;;;2089:1;2074:4;:11;:16;2070:538;;;2114:1;2106:9;;2140:2;2129:13;;2165:5;2156:14;;2070:538;;;2217:2;2209:10;;2405:4;2399;2395:15;2389:22;2367:44;;2456:4;2450;2446:15;2440:22;2428:34;;2505:4;2499;2495:15;2489:22;2479:32;;2568:28;2546:50;;;:18;:50;;;;2538:59;;;;;;;;2070:538;2637:1;2625:8;:13;;;;2617:22;;;;;;;;2666:1;2657:6;:10;2649:19;;;;;;;;2750:27;2763:5;2770:6;2750:12;:27::i;:::-;2742:36;;;;;;;;2821:6;2788:11;:18;2800:5;2788:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2837:7;;;;;;;;;;;:21;;;2859:2;2863:5;2870:4;2876:19;2837:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2837:59:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2837:59:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2837:59:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2837:59:18;;;;;;;;;;;;;;;;;1605:1298;;;;;;;;:::o;3439:488::-;3526:4;3546:29;3578:11;:18;3590:5;3578:18;;;;;;;;;;;;;;;3546:50;;3620:10;:18;;;3610:7;:5;:7::i;:::-;:28;3606:126;;;3675:7;:5;:7::i;:::-;3654:10;:18;;:28;;;;3720:1;3696:10;:21;;:25;;;;3606:126;3782:10;:21;;;3772:6;3748:10;:21;;;:30;:55;;:125;;;;;3852:10;:21;;;3843:6;3819:10;:21;;;:30;:54;3748:125;3741:157;;;3894:4;3887:11;;;;3741:157;3915:5;3908:12;;3439:488;;;;;;:::o", - "source": "pragma solidity 0.4.23;\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 bytes4 public constant TRANSFER_FUNCTION_IDENTIFIER = hex\"a9059cbb\";\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 function executeInternal(address sender, address to, uint256 value, bytes data)\n internal\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(OwnerManager(manager).isOwner(sender));\n // Data has to encode a token transfer or has to be empty.\n require(data.length == 0 && value > 0 || data.length > 0 && value == 0);\n address token;\n address receiver;\n uint256 amount;\n if (data.length == 0) {\n token = 0;\n receiver = to;\n amount = value;\n }\n else {\n token = to;\n bytes4 functionIdentifier;\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n }\n require(functionIdentifier == TRANSFER_FUNCTION_IDENTIFIER);\n }\n require(receiver != 0);\n require(amount > 0);\n // Validate that transfer is not exceeding daily limit.\n require(isUnderLimit(token, amount));\n dailyLimits[token].spentToday += amount;\n manager.executeModule(to, value, data, Enum.Operation.Call);\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n /// @param value Ether value in case of an Ether transfer.\n /// @param data Encoded token transfer. Empty in case of Ether transfer.\n /// @return Returns if transaction can be executed.\n function executeDailyLimit(address to, uint256 value, bytes data)\n public\n {\n executeInternal(msg.sender, to, value, data);\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": "0x608060405234801561001057600080fd5b50610d72806100206000396000f3006080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f814610152578063481c6a75146101bb5780637de7edef1461021257806381c5e03b14610255578063a3f4df7e146102a2578063b74e452b14610332578063d7bffc921461035d578063fce7379a146103c2578063ffa1ad7414610455575b600080fd5b3480156100b557600080fd5b5061015060048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e5565b005b34801561015e57600080fd5b50610167610584565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101c757600080fd5b506101d06105a8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021e57600080fd5b50610253600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105ce565b005b34801561026157600080fd5b506102a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610693565b005b3480156102ae57600080fd5b506102b761073a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f75780820151818401526020810190506102dc565b50505050905090810190601f1680156103245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033e57600080fd5b50610347610773565b6040518082815260200191505060405180910390f35b34801561036957600080fd5b5061039e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061078b565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103ce57600080fd5b50610453600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506107b5565b005b34801561046157600080fd5b5061046a6107c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104aa57808201518184015260208101905061048f565b50505050905090810190601f1680156104d75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104ef6107ff565b600090505b825181101561057f57818181518110151561050b57fe5b9060200190602002015160026000858481518110151561052757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506104f4565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561062a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561065057600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106ef57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561078357fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6107c133848484610889565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561084657600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050506040513d602081101561097657600080fd5b8101908080519060200190929190505050151561099257600080fd5b600085511480156109a35750600086115b806109bb5750600085511180156109ba5750600086145b5b15156109c657600080fd5b6000855114156109df5760009350869250859150610a64565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a6357600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a8a57600080fd5b600082111515610a9957600080fd5b610aa38483610c97565b1515610aae57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a788888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bb857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bf8578082015181840152602081019050610bdd565b50505050905090810190601f168015610c255780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4757600080fd5b505af1158015610c5b573d6000803e3d6000fd5b505050506040513d6020811015610c7157600080fd5b81019080805190602001909291905050501515610c8d57600080fd5b5050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610ce8610773565b1115610d0957610cf6610773565b8160020181905550600081600101819055505b80600001548382600101540111158015610d2c5750806001015483826001015401115b15610d3a5760019150610d3f565b600091505b50929150505600a165627a7a723058202b262db46605128446bbaae57646d72dc1cd47e08c0421acebf8b1657c881b990029", + "deployedBytecode": "0x6080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f814610152578063481c6a75146101bb5780637de7edef1461021257806381c5e03b14610255578063a3f4df7e146102a2578063b74e452b14610332578063d7bffc921461035d578063fce7379a146103c2578063ffa1ad7414610455575b600080fd5b3480156100b557600080fd5b5061015060048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e5565b005b34801561015e57600080fd5b50610167610584565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101c757600080fd5b506101d06105a8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021e57600080fd5b50610253600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105ce565b005b34801561026157600080fd5b506102a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610693565b005b3480156102ae57600080fd5b506102b761073a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f75780820151818401526020810190506102dc565b50505050905090810190601f1680156103245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033e57600080fd5b50610347610773565b6040518082815260200191505060405180910390f35b34801561036957600080fd5b5061039e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061078b565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103ce57600080fd5b50610453600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506107b5565b005b34801561046157600080fd5b5061046a6107c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104aa57808201518184015260208101905061048f565b50505050905090810190601f1680156104d75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104ef6107ff565b600090505b825181101561057f57818181518110151561050b57fe5b9060200190602002015160026000858481518110151561052757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506104f4565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561062a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561065057600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106ef57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561078357fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6107c133848484610889565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561084657600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050506040513d602081101561097657600080fd5b8101908080519060200190929190505050151561099257600080fd5b600085511480156109a35750600086115b806109bb5750600085511180156109ba5750600086145b5b15156109c657600080fd5b6000855114156109df5760009350869250859150610a64565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a6357600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a8a57600080fd5b600082111515610a9957600080fd5b610aa38483610c97565b1515610aae57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a788888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bb857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bf8578082015181840152602081019050610bdd565b50505050905090810190601f168015610c255780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4757600080fd5b505af1158015610c5b573d6000803e3d6000fd5b505050506040513d6020811015610c7157600080fd5b81019080805190602001909291905050501515610c8d57600080fd5b5050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610ce8610773565b1115610d0957610cf6610773565b8160020181905550600081600101819055505b80600001548382600101540111158015610d2c5750806001015483826001015401115b15610d3a5760019150610d3f565b600091505b50929150505600a165627a7a723058202b262db46605128446bbaae57646d72dc1cd47e08c0421acebf8b1657c881b990029", + "sourceMap": "296:3862:10:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;296:3862:10;;;;;;;", + "deployedSourceMap": "296:3862:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;991:222:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;441:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;441:67:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1441:158:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1441:158:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4040:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4040:116:10;;;;;;;;;;;;;;;;;;;;;;;586:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;586:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3308:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3308:146:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:40:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222;1104:9;1077:12;:10;:12::i;:::-;1116:1;1104:13;;1099:107;1123:6;:13;1119:1;:17;1099:107;;;1191:12;1204:1;1191:15;;;;;;;;;;;;;;;;;;1155:11;:22;1167:6;1174:1;1167:9;;;;;;;;;;;;;;;;;;1155:22;;;;;;;;;;;;;;;:33;;:51;;;;1138:3;;;;;;;1099:107;;;991:222;;;:::o;441:67::-;;;:::o;262:28:5:-;;;;;;;;;;;;;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1441:158:10:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1582:10:10;1550:11;:18;1562:5;1550:18;;;;;;;;;;;;;;;:29;;:42;;;;1441:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;4040:116::-;4102:4;4142:6;4136:3;:12;;;;;;;;4129:3;:20;4122:27;;4040:116;:::o;586:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3308:146::-;3403:44;3419:10;3431:2;3435:5;3442:4;3403:15;:44::i;:::-;3308:146;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:5:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;1605:1319:10:-;1997:13;2020:16;2046:14;2233:25;1814:7;;;;;;;;;;;1801:29;;;1831:6;1801:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1801:37:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1801:37:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1801:37:10;;;;;;;;;;;;;;;;1793:46;;;;;;;;1939:1;1924:4;:11;:16;:29;;;;;1952:1;1944:5;:9;1924:29;:62;;;;1971:1;1957:4;:11;:15;:29;;;;;1985:1;1976:5;:10;1957:29;1924:62;1916:71;;;;;;;;2089:1;2074:4;:11;:16;2070:538;;;2114:1;2106:9;;2140:2;2129:13;;2165:5;2156:14;;2070:538;;;2217:2;2209:10;;2405:4;2399;2395:15;2389:22;2367:44;;2456:4;2450;2446:15;2440:22;2428:34;;2505:4;2499;2495:15;2489:22;2479:32;;2568:28;2546:50;;;:18;:50;;;;2538:59;;;;;;;;2070:538;2637:1;2625:8;:13;;;;2617:22;;;;;;;;2666:1;2657:6;:10;2649:19;;;;;;;;2750:27;2763:5;2770:6;2750:12;:27::i;:::-;2742:36;;;;;;;;2821:6;2788:11;:18;2800:5;2788:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2845:7;;;;;;;;;;;:33;;;2879:2;2883:5;2890:4;2896:19;2845: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;2845:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2845:71:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2845:71:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2845:71:10;;;;;;;;;;;;;;;;2837:80;;;;;;;;1605:1319;;;;;;;;:::o;3460:488::-;3547:4;3567:29;3599:11;:18;3611:5;3599:18;;;;;;;;;;;;;;;3567:50;;3641:10;:18;;;3631:7;:5;:7::i;:::-;:28;3627:126;;;3696:7;:5;:7::i;:::-;3675:10;:18;;:28;;;;3741:1;3717:10;:21;;:25;;;;3627:126;3803:10;:21;;;3793:6;3769:10;:21;;;:30;:55;;:125;;;;;3873:10;:21;;;3864:6;3840:10;:21;;;:30;:54;3769:125;3762:157;;;3915:4;3908:11;;;;3762:157;3936:5;3929:12;;3460:488;;;;;;:::o", + "source": "pragma solidity 0.4.23;\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 bytes4 public constant TRANSFER_FUNCTION_IDENTIFIER = hex\"a9059cbb\";\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 function executeInternal(address sender, address to, uint256 value, bytes data)\n internal\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(OwnerManager(manager).isOwner(sender));\n // Data has to encode a token transfer or has to be empty.\n require(data.length == 0 && value > 0 || data.length > 0 && value == 0);\n address token;\n address receiver;\n uint256 amount;\n if (data.length == 0) {\n token = 0;\n receiver = to;\n amount = value;\n }\n else {\n token = to;\n bytes4 functionIdentifier;\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n }\n require(functionIdentifier == TRANSFER_FUNCTION_IDENTIFIER);\n }\n require(receiver != 0);\n require(amount > 0);\n // Validate that transfer is not exceeding daily limit.\n require(isUnderLimit(token, amount));\n dailyLimits[token].spentToday += amount;\n require(manager.execTransactionFromModule(to, value, data, Enum.Operation.Call));\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n /// @param value Ether value in case of an Ether transfer.\n /// @param data Encoded token transfer. Empty in case of Ether transfer.\n /// @return Returns if transaction can be executed.\n function executeDailyLimit(address to, uint256 value, bytes data)\n public\n {\n executeInternal(msg.sender, to, value, data);\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": [ - 1964 + 1694 ] }, - "id": 1965, + "id": 1695, "nodeType": "SourceUnit", "nodes": [ { - "id": 1677, + "id": 1406, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:18" + "src": "0:23:10" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1678, + "id": 1407, "nodeType": "ImportDirective", - "scope": 1965, - "sourceUnit": 878, - "src": "24:23:18", + "scope": 1695, + "sourceUnit": 622, + "src": "24:23:10", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1679, + "id": 1408, "nodeType": "ImportDirective", - "scope": 1965, - "sourceUnit": 1143, - "src": "48:30:18", + "scope": 1695, + "sourceUnit": 972, + "src": "48:30:10", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1680, + "id": 1409, "nodeType": "ImportDirective", - "scope": 1965, - "sourceUnit": 1439, - "src": "79:29:18", + "scope": 1695, + "sourceUnit": 1344, + "src": "79:29:10", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1681, + "id": 1410, "nodeType": "ImportDirective", - "scope": 1965, - "sourceUnit": 31, - "src": "109:21:18", + "scope": 1695, + "sourceUnit": 7, + "src": "109:21:10", "symbolAliases": [], "unitAlias": "" }, @@ -247,46 +247,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1682, + "id": 1411, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "325:6:18", + "referencedDeclaration": 621, + "src": "325:6:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", + "typeIdentifier": "t_contract$_Module_$621", "typeString": "contract Module" } }, - "id": 1683, + "id": 1412, "nodeType": "InheritanceSpecifier", - "src": "325:6:18" + "src": "325:6:10" } ], "contractDependencies": [ - 779, - 877, - 1559 + 580, + 621, + 1359 ], "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": 1964, + "id": 1694, "linearizedBaseContracts": [ - 1964, - 877, - 779, - 1559 + 1694, + 621, + 580, + 1359 ], "name": "DailyLimitModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1686, + "id": 1415, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1964, - "src": "339:50:18", + "scope": 1694, + "src": "339:50:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -294,10 +294,10 @@ "typeString": "string" }, "typeName": { - "id": 1684, + "id": 1413, "name": "string", "nodeType": "ElementaryTypeName", - "src": "339:6:18", + "src": "339:6:10", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -306,14 +306,14 @@ "value": { "argumentTypes": null, "hexValue": "4461696c79204c696d6974204d6f64756c65", - "id": 1685, + "id": 1414, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "369:20:18", + "src": "369:20:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_821ea27acfbc77b49f7a021dbe2eb92017d46b8bdda0bff9901cbc8ee143ceb3", @@ -325,11 +325,11 @@ }, { "constant": true, - "id": 1689, + "id": 1418, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1964, - "src": "395:40:18", + "scope": 1694, + "src": "395:40:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -337,10 +337,10 @@ "typeString": "string" }, "typeName": { - "id": 1687, + "id": 1416, "name": "string", "nodeType": "ElementaryTypeName", - "src": "395:6:18", + "src": "395:6:10", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -349,14 +349,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1688, + "id": 1417, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "428:7:18", + "src": "428:7:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -368,11 +368,11 @@ }, { "constant": true, - "id": 1692, + "id": 1421, "name": "TRANSFER_FUNCTION_IDENTIFIER", "nodeType": "VariableDeclaration", - "scope": 1964, - "src": "441:67:18", + "scope": 1694, + "src": "441:67:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -380,10 +380,10 @@ "typeString": "bytes4" }, "typeName": { - "id": 1690, + "id": 1419, "name": "bytes4", "nodeType": "ElementaryTypeName", - "src": "441:6:18", + "src": "441:6:10", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -392,14 +392,14 @@ "value": { "argumentTypes": null, "hexValue": "a9059cbb", - "id": 1691, + "id": 1420, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "495:13:18", + "src": "495:13:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_abce0605a16ff5e998983a0af570b8ad942bb11e305eb20ae3ada0a3be24eb97", @@ -411,44 +411,44 @@ }, { "constant": false, - "id": 1696, + "id": 1425, "name": "dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1964, - "src": "586:50:18", + "scope": 1694, + "src": "586:50:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "typeName": { - "id": 1695, + "id": 1424, "keyType": { - "id": 1693, + "id": 1422, "name": "address", "nodeType": "ElementaryTypeName", - "src": "595:7:18", + "src": "595:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "586:31:18", + "src": "586:31:10", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "valueType": { "contractScope": null, - "id": 1694, + "id": 1423, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1703, - "src": "606:10:18", + "referencedDeclaration": 1432, + "src": "606:10:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } } @@ -458,15 +458,15 @@ }, { "canonicalName": "DailyLimitModule.DailyLimit", - "id": 1703, + "id": 1432, "members": [ { "constant": false, - "id": 1698, + "id": 1427, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "671:18:18", + "scope": 1432, + "src": "671:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -474,10 +474,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1697, + "id": 1426, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "671:7:18", + "src": "671:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -488,11 +488,11 @@ }, { "constant": false, - "id": 1700, + "id": 1429, "name": "spentToday", "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "699:18:18", + "scope": 1432, + "src": "699:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -500,10 +500,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1699, + "id": 1428, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "699:7:18", + "src": "699:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -514,11 +514,11 @@ }, { "constant": false, - "id": 1702, + "id": 1431, "name": "lastDay", "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "727:15:18", + "scope": 1432, + "src": "727:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -526,10 +526,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1701, + "id": 1430, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "727:7:18", + "src": "727:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -541,15 +541,15 @@ ], "name": "DailyLimit", "nodeType": "StructDefinition", - "scope": 1964, - "src": "643:106:18", + "scope": 1694, + "src": "643:106:10", "visibility": "public" }, { "body": { - "id": 1738, + "id": 1467, "nodeType": "Block", - "src": "1067:146:18", + "src": "1067:146:10", "statements": [ { "expression": { @@ -557,18 +557,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1712, + "id": 1441, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 876, - "src": "1077:10:18", + "referencedDeclaration": 620, + "src": "1077:10:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 1713, + "id": 1442, "isConstant": false, "isLValue": false, "isPure": false, @@ -576,21 +576,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1077:12:18", + "src": "1077:12:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1714, + "id": 1443, "nodeType": "ExpressionStatement", - "src": "1077:12:18" + "src": "1077:12:10" }, { "body": { "expression": { "argumentTypes": null, - "id": 1735, + "id": 1464, "isConstant": false, "isLValue": false, "isPure": false, @@ -601,42 +601,42 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1726, + "id": 1455, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "1155:11:18", + "referencedDeclaration": 1425, + "src": "1155:11:10", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1730, + "id": 1459, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1727, + "id": 1456, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1706, - "src": "1167:6:18", + "referencedDeclaration": 1435, + "src": "1167:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1729, + "id": 1458, "indexExpression": { "argumentTypes": null, - "id": 1728, + "id": 1457, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1716, - "src": "1174:1:18", + "referencedDeclaration": 1445, + "src": "1174:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -647,7 +647,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1167:9:18", + "src": "1167:9:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -658,21 +658,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1155:22:18", + "src": "1155:22:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1731, + "id": 1460, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1698, - "src": "1155:33:18", + "referencedDeclaration": 1427, + "src": "1155:33:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -684,26 +684,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1732, + "id": 1461, "name": "_dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1709, - "src": "1191:12:18", + "referencedDeclaration": 1438, + "src": "1191:12:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1734, + "id": 1463, "indexExpression": { "argumentTypes": null, - "id": 1733, + "id": 1462, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1716, - "src": "1204:1:18", + "referencedDeclaration": 1445, + "src": "1204:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -714,21 +714,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1191:15:18", + "src": "1191:15:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1155:51:18", + "src": "1155:51:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1736, + "id": 1465, "nodeType": "ExpressionStatement", - "src": "1155:51:18" + "src": "1155:51:10" }, "condition": { "argumentTypes": null, @@ -736,19 +736,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1722, + "id": 1451, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1719, + "id": 1448, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1716, - "src": "1119:1:18", + "referencedDeclaration": 1445, + "src": "1119:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -760,18 +760,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1720, + "id": 1449, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1706, - "src": "1123:6:18", + "referencedDeclaration": 1435, + "src": "1123:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1721, + "id": 1450, "isConstant": false, "isLValue": false, "isPure": false, @@ -779,31 +779,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1123:13:18", + "src": "1123:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1119:17:18", + "src": "1119:17:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1737, + "id": 1466, "initializationExpression": { "assignments": [ - 1716 + 1445 ], "declarations": [ { "constant": false, - "id": 1716, + "id": 1445, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1739, - "src": "1104:9:18", + "scope": 1468, + "src": "1104:9:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -811,10 +811,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1715, + "id": 1444, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1104:7:18", + "src": "1104:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -824,18 +824,18 @@ "visibility": "internal" } ], - "id": 1718, + "id": 1447, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1717, + "id": 1446, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1116:1:18", + "src": "1116:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -844,12 +844,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1104:13:18" + "src": "1104:13:10" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1724, + "id": 1453, "isConstant": false, "isLValue": false, "isPure": false, @@ -857,15 +857,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1138:3:18", + "src": "1138:3:10", "subExpression": { "argumentTypes": null, - "id": 1723, + "id": 1452, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1716, - "src": "1138:1:18", + "referencedDeclaration": 1445, + "src": "1138:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -876,17 +876,17 @@ "typeString": "uint256" } }, - "id": 1725, + "id": 1454, "nodeType": "ExpressionStatement", - "src": "1138:3:18" + "src": "1138:3:10" }, "nodeType": "ForStatement", - "src": "1099:107:18" + "src": "1099:107:10" } ] }, "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": 1739, + "id": 1468, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -894,16 +894,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 1710, + "id": 1439, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1706, + "id": 1435, "name": "tokens", "nodeType": "VariableDeclaration", - "scope": 1739, - "src": "1006:16:18", + "scope": 1468, + "src": "1006:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -912,19 +912,19 @@ }, "typeName": { "baseType": { - "id": 1704, + "id": 1433, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1006:7:18", + "src": "1006:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1705, + "id": 1434, "length": null, "nodeType": "ArrayTypeName", - "src": "1006:9:18", + "src": "1006:9:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -935,11 +935,11 @@ }, { "constant": false, - "id": 1709, + "id": 1438, "name": "_dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1739, - "src": "1024:22:18", + "scope": 1468, + "src": "1024:22:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -948,19 +948,19 @@ }, "typeName": { "baseType": { - "id": 1707, + "id": 1436, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1024:7:18", + "src": "1024:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1708, + "id": 1437, "length": null, "nodeType": "ArrayTypeName", - "src": "1024:9:18", + "src": "1024:9:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -970,31 +970,31 @@ "visibility": "internal" } ], - "src": "1005:42:18" + "src": "1005:42:10" }, "payable": false, "returnParameters": { - "id": 1711, + "id": 1440, "nodeType": "ParameterList", "parameters": [], - "src": "1067:0:18" + "src": "1067:0:10" }, - "scope": 1964, - "src": "991:222:18", + "scope": 1694, + "src": "991:222:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1755, + "id": 1484, "nodeType": "Block", - "src": "1540:59:18", + "src": "1540:59:10", "statements": [ { "expression": { "argumentTypes": null, - "id": 1753, + "id": 1482, "isConstant": false, "isLValue": false, "isPure": false, @@ -1005,26 +1005,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1748, + "id": 1477, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "1550:11:18", + "referencedDeclaration": 1425, + "src": "1550:11:10", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1750, + "id": 1479, "indexExpression": { "argumentTypes": null, - "id": 1749, + "id": 1478, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1741, - "src": "1562:5:18", + "referencedDeclaration": 1470, + "src": "1562:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1035,21 +1035,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1550:18:18", + "src": "1550:18:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1751, + "id": 1480, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1698, - "src": "1550:29:18", + "referencedDeclaration": 1427, + "src": "1550:29:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1059,68 +1059,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1752, + "id": 1481, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1743, - "src": "1582:10:18", + "referencedDeclaration": 1472, + "src": "1582:10:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1550:42:18", + "src": "1550:42:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1754, + "id": 1483, "nodeType": "ExpressionStatement", - "src": "1550:42:18" + "src": "1550:42:10" } ] }, "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": 1756, + "id": 1485, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1746, + "id": 1475, "modifierName": { "argumentTypes": null, - "id": 1745, + "id": 1474, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 857, - "src": "1525:10:18", + "referencedDeclaration": 601, + "src": "1525:10:10", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1525:10:18" + "src": "1525:10:10" } ], "name": "changeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1744, + "id": 1473, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1741, + "id": 1470, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1756, - "src": "1467:13:18", + "scope": 1485, + "src": "1467:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1128,10 +1128,10 @@ "typeString": "address" }, "typeName": { - "id": 1740, + "id": 1469, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1467:7:18", + "src": "1467:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1142,11 +1142,11 @@ }, { "constant": false, - "id": 1743, + "id": 1472, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1756, - "src": "1482:18:18", + "scope": 1485, + "src": "1482:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1154,10 +1154,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1742, + "id": 1471, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1482:7:18", + "src": "1482:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1167,26 +1167,26 @@ "visibility": "internal" } ], - "src": "1466:35:18" + "src": "1466:35:10" }, "payable": false, "returnParameters": { - "id": 1747, + "id": 1476, "nodeType": "ParameterList", "parameters": [], - "src": "1540:0:18" + "src": "1540:0:10" }, - "scope": 1964, - "src": "1441:158:18", + "scope": 1694, + "src": "1441:158:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1875, + "id": 1605, "nodeType": "Block", - "src": "1706:1197:18", + "src": "1706:1218:10", "statements": [ { "expression": { @@ -1197,12 +1197,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1772, + "id": 1501, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1758, - "src": "1831:6:18", + "referencedDeclaration": 1487, + "src": "1831:6:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1221,14 +1221,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1769, + "id": 1498, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "1814:7:18", + "referencedDeclaration": 588, + "src": "1814:7:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } } @@ -1236,22 +1236,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } ], - "id": 1768, + "id": 1497, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1438, - "src": "1801:12:18", + "referencedDeclaration": 1343, + "src": "1801:12:10", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1438_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", "typeString": "type(contract OwnerManager)" } }, - "id": 1770, + "id": 1499, "isConstant": false, "isLValue": false, "isPure": false, @@ -1259,27 +1259,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1801:21:18", + "src": "1801:21:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1438", + "typeIdentifier": "t_contract$_OwnerManager_$1343", "typeString": "contract OwnerManager" } }, - "id": 1771, + "id": 1500, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1428, - "src": "1801:29:18", + "referencedDeclaration": 1293, + "src": "1801:29:10", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 1773, + "id": 1502, "isConstant": false, "isLValue": false, "isPure": false, @@ -1287,7 +1287,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1801:37:18", + "src": "1801:37:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1301,21 +1301,21 @@ "typeString": "bool" } ], - "id": 1767, + "id": 1496, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1793:7:18", + "referencedDeclaration": 2399, + "src": "1793:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1774, + "id": 1503, "isConstant": false, "isLValue": false, "isPure": false, @@ -1323,15 +1323,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1793:46:18", + "src": "1793:46:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1775, + "id": 1504, "nodeType": "ExpressionStatement", - "src": "1793:46:18" + "src": "1793:46:10" }, { "expression": { @@ -1343,7 +1343,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1793, + "id": 1522, "isConstant": false, "isLValue": false, "isPure": false, @@ -1354,7 +1354,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1784, + "id": 1513, "isConstant": false, "isLValue": false, "isPure": false, @@ -1365,7 +1365,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1780, + "id": 1509, "isConstant": false, "isLValue": false, "isPure": false, @@ -1374,18 +1374,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1777, + "id": 1506, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1764, - "src": "1924:4:18", + "referencedDeclaration": 1493, + "src": "1924:4:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1778, + "id": 1507, "isConstant": false, "isLValue": false, "isPure": false, @@ -1393,7 +1393,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1924:11:18", + "src": "1924:11:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1404,14 +1404,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1779, + "id": 1508, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1939:1:18", + "src": "1939:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1419,7 +1419,7 @@ }, "value": "0" }, - "src": "1924:16:18", + "src": "1924:16:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1433,19 +1433,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1783, + "id": 1512, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1781, + "id": 1510, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1762, - "src": "1944:5:18", + "referencedDeclaration": 1491, + "src": "1944:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1456,14 +1456,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1782, + "id": 1511, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1952:1:18", + "src": "1952:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1471,13 +1471,13 @@ }, "value": "0" }, - "src": "1944:9:18", + "src": "1944:9:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1924:29:18", + "src": "1924:29:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1491,7 +1491,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1792, + "id": 1521, "isConstant": false, "isLValue": false, "isPure": false, @@ -1502,7 +1502,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1788, + "id": 1517, "isConstant": false, "isLValue": false, "isPure": false, @@ -1511,18 +1511,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1785, + "id": 1514, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1764, - "src": "1957:4:18", + "referencedDeclaration": 1493, + "src": "1957:4:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1786, + "id": 1515, "isConstant": false, "isLValue": false, "isPure": false, @@ -1530,7 +1530,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1957:11:18", + "src": "1957:11:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1541,14 +1541,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1787, + "id": 1516, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1971:1:18", + "src": "1971:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1556,7 +1556,7 @@ }, "value": "0" }, - "src": "1957:15:18", + "src": "1957:15:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1570,19 +1570,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1791, + "id": 1520, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1789, + "id": 1518, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1762, - "src": "1976:5:18", + "referencedDeclaration": 1491, + "src": "1976:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1593,14 +1593,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1790, + "id": 1519, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1985:1:18", + "src": "1985:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1608,19 +1608,19 @@ }, "value": "0" }, - "src": "1976:10:18", + "src": "1976:10:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1957:29:18", + "src": "1957:29:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1924:62:18", + "src": "1924:62:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1634,21 +1634,21 @@ "typeString": "bool" } ], - "id": 1776, + "id": 1505, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1916:7:18", + "referencedDeclaration": 2399, + "src": "1916:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1794, + "id": 1523, "isConstant": false, "isLValue": false, "isPure": false, @@ -1656,26 +1656,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1916:71:18", + "src": "1916:71:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1795, + "id": 1524, "nodeType": "ExpressionStatement", - "src": "1916:71:18" + "src": "1916:71:10" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1797, + "id": 1526, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1876, - "src": "1997:13:18", + "scope": 1606, + "src": "1997:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1683,10 +1683,10 @@ "typeString": "address" }, "typeName": { - "id": 1796, + "id": 1525, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1997:7:18", + "src": "1997:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1696,21 +1696,21 @@ "visibility": "internal" } ], - "id": 1798, + "id": 1527, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "1997:13:18" + "src": "1997:13:10" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1800, + "id": 1529, "name": "receiver", "nodeType": "VariableDeclaration", - "scope": 1876, - "src": "2020:16:18", + "scope": 1606, + "src": "2020:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1718,10 +1718,10 @@ "typeString": "address" }, "typeName": { - "id": 1799, + "id": 1528, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2020:7:18", + "src": "2020:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1731,21 +1731,21 @@ "visibility": "internal" } ], - "id": 1801, + "id": 1530, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2020:16:18" + "src": "2020:16:10" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1803, + "id": 1532, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1876, - "src": "2046:14:18", + "scope": 1606, + "src": "2046:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1753,10 +1753,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1802, + "id": 1531, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2046:7:18", + "src": "2046:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1766,10 +1766,10 @@ "visibility": "internal" } ], - "id": 1804, + "id": 1533, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2046:14:18" + "src": "2046:14:10" }, { "condition": { @@ -1778,7 +1778,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1808, + "id": 1537, "isConstant": false, "isLValue": false, "isPure": false, @@ -1787,18 +1787,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1805, + "id": 1534, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1764, - "src": "2074:4:18", + "referencedDeclaration": 1493, + "src": "2074:4:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1806, + "id": 1535, "isConstant": false, "isLValue": false, "isPure": false, @@ -1806,7 +1806,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2074:11:18", + "src": "2074:11:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1817,14 +1817,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1807, + "id": 1536, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2089:1:18", + "src": "2089:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1832,33 +1832,33 @@ }, "value": "0" }, - "src": "2074:16:18", + "src": "2074:16:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 1836, + "id": 1565, "nodeType": "Block", - "src": "2195:413:18", + "src": "2195:413:10", "statements": [ { "expression": { "argumentTypes": null, - "id": 1824, + "id": 1553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1822, + "id": 1551, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "2209:5:18", + "referencedDeclaration": 1526, + "src": "2209:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1868,37 +1868,37 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1823, + "id": 1552, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1760, - "src": "2217:2:18", + "referencedDeclaration": 1489, + "src": "2217:2:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2209:10:18", + "src": "2209:10:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1825, + "id": 1554, "nodeType": "ExpressionStatement", - "src": "2209:10:18" + "src": "2209:10:10" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1827, + "id": 1556, "name": "functionIdentifier", "nodeType": "VariableDeclaration", - "scope": 1876, - "src": "2233:25:18", + "scope": 1606, + "src": "2233:25:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1906,10 +1906,10 @@ "typeString": "bytes4" }, "typeName": { - "id": 1826, + "id": 1555, "name": "bytes4", "nodeType": "ElementaryTypeName", - "src": "2233:6:18", + "src": "2233:6:10", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -1919,72 +1919,72 @@ "visibility": "internal" } ], - "id": 1828, + "id": 1557, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2233:25:18" + "src": "2233:25:10" }, { "externalReferences": [ { "functionIdentifier": { - "declaration": 1827, + "declaration": 1556, "isOffset": false, "isSlot": false, - "src": "2367:18:18", + "src": "2367:18:10", "valueSize": 1 } }, { "data": { - "declaration": 1764, + "declaration": 1493, "isOffset": false, "isSlot": false, - "src": "2399:4:18", + "src": "2399:4:10", "valueSize": 1 } }, { "receiver": { - "declaration": 1800, + "declaration": 1529, "isOffset": false, "isSlot": false, - "src": "2428:8:18", + "src": "2428:8:10", "valueSize": 1 } }, { "amount": { - "declaration": 1803, + "declaration": 1532, "isOffset": false, "isSlot": false, - "src": "2479:6:18", + "src": "2479:6:10", "valueSize": 1 } }, { "data": { - "declaration": 1764, + "declaration": 1493, "isOffset": false, "isSlot": false, - "src": "2450:4:18", + "src": "2450:4:10", "valueSize": 1 } }, { "data": { - "declaration": 1764, + "declaration": 1493, "isOffset": false, "isSlot": false, - "src": "2499:4:18", + "src": "2499:4:10", "valueSize": 1 } } ], - "id": 1829, + "id": 1558, "nodeType": "InlineAssembly", "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}", - "src": "2340:205:18" + "src": "2340:205:10" }, { "expression": { @@ -1996,19 +1996,19 @@ "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, - "id": 1833, + "id": 1562, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1831, + "id": 1560, "name": "functionIdentifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1827, - "src": "2546:18:18", + "referencedDeclaration": 1556, + "src": "2546:18:10", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -2018,18 +2018,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1832, + "id": 1561, "name": "TRANSFER_FUNCTION_IDENTIFIER", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1692, - "src": "2568:28:18", + "referencedDeclaration": 1421, + "src": "2568:28:10", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, - "src": "2546:50:18", + "src": "2546:50:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2043,21 +2043,21 @@ "typeString": "bool" } ], - "id": 1830, + "id": 1559, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2538:7:18", + "referencedDeclaration": 2399, + "src": "2538:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1834, + "id": 1563, "isConstant": false, "isLValue": false, "isPure": false, @@ -2065,42 +2065,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2538:59:18", + "src": "2538:59:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1835, + "id": 1564, "nodeType": "ExpressionStatement", - "src": "2538:59:18" + "src": "2538:59:10" } ] }, - "id": 1837, + "id": 1566, "nodeType": "IfStatement", - "src": "2070:538:18", + "src": "2070:538:10", "trueBody": { - "id": 1821, + "id": 1550, "nodeType": "Block", - "src": "2092:89:18", + "src": "2092:89:10", "statements": [ { "expression": { "argumentTypes": null, - "id": 1811, + "id": 1540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1809, + "id": 1538, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "2106:5:18", + "referencedDeclaration": 1526, + "src": "2106:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2111,14 +2111,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1810, + "id": 1539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2114:1:18", + "src": "2114:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2126,32 +2126,32 @@ }, "value": "0" }, - "src": "2106:9:18", + "src": "2106:9:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1812, + "id": 1541, "nodeType": "ExpressionStatement", - "src": "2106:9:18" + "src": "2106:9:10" }, { "expression": { "argumentTypes": null, - "id": 1815, + "id": 1544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1813, + "id": 1542, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1800, - "src": "2129:8:18", + "referencedDeclaration": 1529, + "src": "2129:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2161,43 +2161,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1814, + "id": 1543, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1760, - "src": "2140:2:18", + "referencedDeclaration": 1489, + "src": "2140:2:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2129:13:18", + "src": "2129:13:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1816, + "id": 1545, "nodeType": "ExpressionStatement", - "src": "2129:13:18" + "src": "2129:13:10" }, { "expression": { "argumentTypes": null, - "id": 1819, + "id": 1548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1817, + "id": 1546, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1803, - "src": "2156:6:18", + "referencedDeclaration": 1532, + "src": "2156:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2207,26 +2207,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1818, + "id": 1547, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1762, - "src": "2165:5:18", + "referencedDeclaration": 1491, + "src": "2165:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2156:14:18", + "src": "2156:14:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1820, + "id": 1549, "nodeType": "ExpressionStatement", - "src": "2156:14:18" + "src": "2156:14:10" } ] } @@ -2241,19 +2241,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1841, + "id": 1570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1839, + "id": 1568, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1800, - "src": "2625:8:18", + "referencedDeclaration": 1529, + "src": "2625:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2264,14 +2264,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1840, + "id": 1569, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2637:1:18", + "src": "2637:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2279,7 +2279,7 @@ }, "value": "0" }, - "src": "2625:13:18", + "src": "2625:13:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2293,21 +2293,21 @@ "typeString": "bool" } ], - "id": 1838, + "id": 1567, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2617:7:18", + "referencedDeclaration": 2399, + "src": "2617:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1842, + "id": 1571, "isConstant": false, "isLValue": false, "isPure": false, @@ -2315,15 +2315,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2617:22:18", + "src": "2617:22:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1843, + "id": 1572, "nodeType": "ExpressionStatement", - "src": "2617:22:18" + "src": "2617:22:10" }, { "expression": { @@ -2335,19 +2335,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1847, + "id": 1576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1845, + "id": 1574, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1803, - "src": "2657:6:18", + "referencedDeclaration": 1532, + "src": "2657:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2358,14 +2358,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1846, + "id": 1575, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2666:1:18", + "src": "2666:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2373,7 +2373,7 @@ }, "value": "0" }, - "src": "2657:10:18", + "src": "2657:10:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2387,21 +2387,21 @@ "typeString": "bool" } ], - "id": 1844, + "id": 1573, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2649:7:18", + "referencedDeclaration": 2399, + "src": "2649:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1848, + "id": 1577, "isConstant": false, "isLValue": false, "isPure": false, @@ -2409,15 +2409,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2649:19:18", + "src": "2649:19:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1849, + "id": 1578, "nodeType": "ExpressionStatement", - "src": "2649:19:18" + "src": "2649:19:10" }, { "expression": { @@ -2428,12 +2428,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1852, + "id": 1581, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "2763:5:18", + "referencedDeclaration": 1526, + "src": "2763:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2441,12 +2441,12 @@ }, { "argumentTypes": null, - "id": 1853, + "id": 1582, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1803, - "src": "2770:6:18", + "referencedDeclaration": 1532, + "src": "2770:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2464,18 +2464,18 @@ "typeString": "uint256" } ], - "id": 1851, + "id": 1580, "name": "isUnderLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1950, - "src": "2750:12:18", + "referencedDeclaration": 1680, + "src": "2750:12:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, - "id": 1854, + "id": 1583, "isConstant": false, "isLValue": false, "isPure": false, @@ -2483,7 +2483,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2750:27:18", + "src": "2750:27:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2497,21 +2497,21 @@ "typeString": "bool" } ], - "id": 1850, + "id": 1579, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2742:7:18", + "referencedDeclaration": 2399, + "src": "2742:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1855, + "id": 1584, "isConstant": false, "isLValue": false, "isPure": false, @@ -2519,20 +2519,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2742:36:18", + "src": "2742:36:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1856, + "id": 1585, "nodeType": "ExpressionStatement", - "src": "2742:36:18" + "src": "2742:36:10" }, { "expression": { "argumentTypes": null, - "id": 1862, + "id": 1591, "isConstant": false, "isLValue": false, "isPure": false, @@ -2543,26 +2543,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1857, + "id": 1586, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "2788:11:18", + "referencedDeclaration": 1425, + "src": "2788:11:10", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1859, + "id": 1588, "indexExpression": { "argumentTypes": null, - "id": 1858, + "id": 1587, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "2800:5:18", + "referencedDeclaration": 1526, + "src": "2800:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2573,21 +2573,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2788:18:18", + "src": "2788:18:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1860, + "id": 1589, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1700, - "src": "2788:29:18", + "referencedDeclaration": 1429, + "src": "2788:29:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2597,26 +2597,26 @@ "operator": "+=", "rightHandSide": { "argumentTypes": null, - "id": 1861, + "id": 1590, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1803, - "src": "2821:6:18", + "referencedDeclaration": 1532, + "src": "2821:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2788:39:18", + "src": "2788:39:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1863, + "id": 1592, "nodeType": "ExpressionStatement", - "src": "2788:39:18" + "src": "2788:39:10" }, { "expression": { @@ -2624,136 +2624,175 @@ "arguments": [ { "argumentTypes": null, - "id": 1867, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1760, - "src": "2859:2:18", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1868, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1762, - "src": "2863:5:18", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1869, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1764, - "src": "2870:4:18", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { + "arguments": [ + { "argumentTypes": null, - "id": 1870, - "name": "Enum", + "id": 1596, + "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 30, - "src": "2876:4:18", + "referencedDeclaration": 1489, + "src": "2879:2:10", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", - "typeString": "type(contract Enum)" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1871, + { + "argumentTypes": null, + "id": 1597, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1491, + "src": "2883:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1598, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1493, + "src": "2890:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1599, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6, + "src": "2896:4:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeString": "type(contract Enum)" + } + }, + "id": 1600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 5, + "src": "2896:14:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 1601, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2896:19:10", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 1594, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "2845:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" + } + }, + "id": 1595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "Operation", + "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "2876:14:18", + "referencedDeclaration": 798, + "src": "2845:33:10", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", - "typeString": "type(enum Enum.Operation)" + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1872, + "id": 1602, "isConstant": false, "isLValue": false, - "isPure": true, + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2876:19:18", + "names": [], + "nodeType": "FunctionCall", + "src": "2845:71:10", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" + "typeIdentifier": "t_bool", + "typeString": "bool" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" + "typeIdentifier": "t_bool", + "typeString": "bool" } ], - "expression": { - "argumentTypes": null, - "id": 1864, - "name": "manager", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "2837:7:18", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", - "typeString": "contract ModuleManager" - } - }, - "id": 1866, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "executeModule", - "nodeType": "MemberAccess", - "referencedDeclaration": 1033, - "src": "2837:21:18", + "id": 1593, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "2837:7:10", "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)" + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" } }, - "id": 1873, + "id": 1603, "isConstant": false, "isLValue": false, "isPure": false, @@ -2761,20 +2800,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2837:59:18", + "src": "2837:80:10", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 1874, + "id": 1604, "nodeType": "ExpressionStatement", - "src": "2837:59:18" + "src": "2837:80:10" } ] }, "documentation": null, - "id": 1876, + "id": 1606, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2782,16 +2821,16 @@ "name": "executeInternal", "nodeType": "FunctionDefinition", "parameters": { - "id": 1765, + "id": 1494, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1758, + "id": 1487, "name": "sender", "nodeType": "VariableDeclaration", - "scope": 1876, - "src": "1630:14:18", + "scope": 1606, + "src": "1630:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2799,10 +2838,10 @@ "typeString": "address" }, "typeName": { - "id": 1757, + "id": 1486, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1630:7:18", + "src": "1630:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2813,11 +2852,11 @@ }, { "constant": false, - "id": 1760, + "id": 1489, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1876, - "src": "1646:10:18", + "scope": 1606, + "src": "1646:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2825,10 +2864,10 @@ "typeString": "address" }, "typeName": { - "id": 1759, + "id": 1488, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1646:7:18", + "src": "1646:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2839,11 +2878,11 @@ }, { "constant": false, - "id": 1762, + "id": 1491, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1876, - "src": "1658:13:18", + "scope": 1606, + "src": "1658:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2851,10 +2890,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1761, + "id": 1490, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1658:7:18", + "src": "1658:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2865,11 +2904,11 @@ }, { "constant": false, - "id": 1764, + "id": 1493, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1876, - "src": "1673:10:18", + "scope": 1606, + "src": "1673:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2877,10 +2916,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1763, + "id": 1492, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1673:5:18", + "src": "1673:5:10", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2890,26 +2929,26 @@ "visibility": "internal" } ], - "src": "1629:55:18" + "src": "1629:55:10" }, "payable": false, "returnParameters": { - "id": 1766, + "id": 1495, "nodeType": "ParameterList", "parameters": [], - "src": "1706:0:18" + "src": "1706:0:10" }, - "scope": 1964, - "src": "1605:1298:18", + "scope": 1694, + "src": "1605:1319:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1893, + "id": 1623, "nodeType": "Block", - "src": "3372:61:18", + "src": "3393:61:10", "statements": [ { "expression": { @@ -2919,18 +2958,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1886, + "id": 1616, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "3398:3:18", + "referencedDeclaration": 2396, + "src": "3419:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1887, + "id": 1617, "isConstant": false, "isLValue": false, "isPure": false, @@ -2938,7 +2977,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3398:10:18", + "src": "3419:10:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2946,12 +2985,12 @@ }, { "argumentTypes": null, - "id": 1888, + "id": 1618, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1878, - "src": "3410:2:18", + "referencedDeclaration": 1608, + "src": "3431:2:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2959,12 +2998,12 @@ }, { "argumentTypes": null, - "id": 1889, + "id": 1619, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1880, - "src": "3414:5:18", + "referencedDeclaration": 1610, + "src": "3435:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2972,12 +3011,12 @@ }, { "argumentTypes": null, - "id": 1890, + "id": 1620, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1882, - "src": "3421:4:18", + "referencedDeclaration": 1612, + "src": "3442:4:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3003,18 +3042,18 @@ "typeString": "bytes memory" } ], - "id": 1885, + "id": 1615, "name": "executeInternal", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1876, - "src": "3382:15:18", + "referencedDeclaration": 1606, + "src": "3403:15:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)" } }, - "id": 1891, + "id": 1621, "isConstant": false, "isLValue": false, "isPure": false, @@ -3022,20 +3061,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3382:44:18", + "src": "3403:44:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1892, + "id": 1622, "nodeType": "ExpressionStatement", - "src": "3382:44:18" + "src": "3403:44:10" } ] }, "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n @param value Ether value in case of an Ether transfer.\n @param data Encoded token transfer. Empty in case of Ether transfer.\n @return Returns if transaction can be executed.", - "id": 1894, + "id": 1624, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3043,16 +3082,16 @@ "name": "executeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1883, + "id": 1613, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1878, + "id": 1608, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1894, - "src": "3314:10:18", + "scope": 1624, + "src": "3335:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3060,10 +3099,10 @@ "typeString": "address" }, "typeName": { - "id": 1877, + "id": 1607, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3314:7:18", + "src": "3335:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3074,11 +3113,11 @@ }, { "constant": false, - "id": 1880, + "id": 1610, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1894, - "src": "3326:13:18", + "scope": 1624, + "src": "3347:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3086,10 +3125,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1879, + "id": 1609, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3326:7:18", + "src": "3347:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3100,11 +3139,11 @@ }, { "constant": false, - "id": 1882, + "id": 1612, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1894, - "src": "3341:10:18", + "scope": 1624, + "src": "3362:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3112,10 +3151,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1881, + "id": 1611, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3341:5:18", + "src": "3362:5:10", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3125,54 +3164,54 @@ "visibility": "internal" } ], - "src": "3313:39:18" + "src": "3334:39:10" }, "payable": false, "returnParameters": { - "id": 1884, + "id": 1614, "nodeType": "ParameterList", "parameters": [], - "src": "3372:0:18" + "src": "3393:0:10" }, - "scope": 1964, - "src": "3287:146:18", + "scope": 1694, + "src": "3308:146:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1949, + "id": 1679, "nodeType": "Block", - "src": "3536:391:18", + "src": "3557:391:10", "statements": [ { "assignments": [ - 1904 + 1634 ], "declarations": [ { "constant": false, - "id": 1904, + "id": 1634, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1950, - "src": "3546:29:18", + "scope": 1680, + "src": "3567:29:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" }, "typeName": { "contractScope": null, - "id": 1903, + "id": 1633, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1703, - "src": "3546:10:18", + "referencedDeclaration": 1432, + "src": "3567:10:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } }, @@ -3180,31 +3219,31 @@ "visibility": "internal" } ], - "id": 1908, + "id": 1638, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1905, + "id": 1635, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "3578:11:18", + "referencedDeclaration": 1425, + "src": "3599:11:10", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1907, + "id": 1637, "indexExpression": { "argumentTypes": null, - "id": 1906, + "id": 1636, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1896, - "src": "3590:5:18", + "referencedDeclaration": 1626, + "src": "3611:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3215,14 +3254,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3578:18:18", + "src": "3599:18:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "nodeType": "VariableDeclarationStatement", - "src": "3546:50:18" + "src": "3567:50:10" }, { "condition": { @@ -3231,7 +3270,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1913, + "id": 1643, "isConstant": false, "isLValue": false, "isPure": false, @@ -3241,18 +3280,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1909, + "id": 1639, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1963, - "src": "3610:5:18", + "referencedDeclaration": 1693, + "src": "3631:5:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1910, + "id": 1640, "isConstant": false, "isLValue": false, "isPure": false, @@ -3260,7 +3299,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3610:7:18", + "src": "3631:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3272,50 +3311,50 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1911, + "id": 1641, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1904, - "src": "3620:10:18", + "referencedDeclaration": 1634, + "src": "3641:10:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1912, + "id": 1642, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1702, - "src": "3620:18:18", + "referencedDeclaration": 1431, + "src": "3641:18:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3610:28:18", + "src": "3631:28:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1928, + "id": 1658, "nodeType": "IfStatement", - "src": "3606:126:18", + "src": "3627:126:10", "trueBody": { - "id": 1927, + "id": 1657, "nodeType": "Block", - "src": "3640:92:18", + "src": "3661:92:10", "statements": [ { "expression": { "argumentTypes": null, - "id": 1919, + "id": 1649, "isConstant": false, "isLValue": false, "isPure": false, @@ -3324,26 +3363,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1914, + "id": 1644, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1904, - "src": "3654:10:18", + "referencedDeclaration": 1634, + "src": "3675:10:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1916, + "id": 1646, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1702, - "src": "3654:18:18", + "referencedDeclaration": 1431, + "src": "3675:18:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3356,18 +3395,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1917, + "id": 1647, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1963, - "src": "3675:5:18", + "referencedDeclaration": 1693, + "src": "3696:5:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1918, + "id": 1648, "isConstant": false, "isLValue": false, "isPure": false, @@ -3375,26 +3414,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3675:7:18", + "src": "3696:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3654:28:18", + "src": "3675:28:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1920, + "id": 1650, "nodeType": "ExpressionStatement", - "src": "3654:28:18" + "src": "3675:28:10" }, { "expression": { "argumentTypes": null, - "id": 1925, + "id": 1655, "isConstant": false, "isLValue": false, "isPure": false, @@ -3403,26 +3442,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1921, + "id": 1651, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1904, - "src": "3696:10:18", + "referencedDeclaration": 1634, + "src": "3717:10:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1923, + "id": 1653, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1700, - "src": "3696:21:18", + "referencedDeclaration": 1429, + "src": "3717:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3433,14 +3472,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1924, + "id": 1654, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3720:1:18", + "src": "3741:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3448,15 +3487,15 @@ }, "value": "0" }, - "src": "3696:25:18", + "src": "3717:25:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1926, + "id": 1656, "nodeType": "ExpressionStatement", - "src": "3696:25:18" + "src": "3717:25:10" } ] } @@ -3468,7 +3507,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1943, + "id": 1673, "isConstant": false, "isLValue": false, "isPure": false, @@ -3479,7 +3518,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1935, + "id": 1665, "isConstant": false, "isLValue": false, "isPure": false, @@ -3490,7 +3529,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1932, + "id": 1662, "isConstant": false, "isLValue": false, "isPure": false, @@ -3499,26 +3538,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1929, + "id": 1659, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1904, - "src": "3748:10:18", + "referencedDeclaration": 1634, + "src": "3769:10:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1930, + "id": 1660, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1700, - "src": "3748:21:18", + "referencedDeclaration": 1429, + "src": "3769:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3528,18 +3567,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1931, + "id": 1661, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1898, - "src": "3772:6:18", + "referencedDeclaration": 1628, + "src": "3793:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3748:30:18", + "src": "3769:30:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3551,32 +3590,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1933, + "id": 1663, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1904, - "src": "3782:10:18", + "referencedDeclaration": 1634, + "src": "3803:10:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1934, + "id": 1664, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1698, - "src": "3782:21:18", + "referencedDeclaration": 1427, + "src": "3803:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3748:55:18", + "src": "3769:55:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3590,7 +3629,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1942, + "id": 1672, "isConstant": false, "isLValue": false, "isPure": false, @@ -3601,7 +3640,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1939, + "id": 1669, "isConstant": false, "isLValue": false, "isPure": false, @@ -3610,26 +3649,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1936, + "id": 1666, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1904, - "src": "3819:10:18", + "referencedDeclaration": 1634, + "src": "3840:10:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1937, + "id": 1667, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1700, - "src": "3819:21:18", + "referencedDeclaration": 1429, + "src": "3840:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3639,18 +3678,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1938, + "id": 1668, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1898, - "src": "3843:6:18", + "referencedDeclaration": 1628, + "src": "3864:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3819:30:18", + "src": "3840:30:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3662,59 +3701,59 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1940, + "id": 1670, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1904, - "src": "3852:10:18", + "referencedDeclaration": 1634, + "src": "3873:10:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1941, + "id": 1671, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1700, - "src": "3852:21:18", + "referencedDeclaration": 1429, + "src": "3873:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3819:54:18", + "src": "3840:54:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3748:125:18", + "src": "3769:125:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1946, + "id": 1676, "nodeType": "IfStatement", - "src": "3741:157:18", + "src": "3762:157:10", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 1944, + "id": 1674, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3894:4:18", + "src": "3915:4:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3722,24 +3761,24 @@ }, "value": "true" }, - "functionReturnParameters": 1902, - "id": 1945, + "functionReturnParameters": 1632, + "id": 1675, "nodeType": "Return", - "src": "3887:11:18" + "src": "3908:11:10" } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 1947, + "id": 1677, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3915:5:18", + "src": "3936:5:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3747,15 +3786,15 @@ }, "value": "false" }, - "functionReturnParameters": 1902, - "id": 1948, + "functionReturnParameters": 1632, + "id": 1678, "nodeType": "Return", - "src": "3908:12:18" + "src": "3929:12:10" } ] }, "documentation": null, - "id": 1950, + "id": 1680, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3763,16 +3802,16 @@ "name": "isUnderLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1899, + "id": 1629, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1896, + "id": 1626, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1950, - "src": "3461:13:18", + "scope": 1680, + "src": "3482:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3780,10 +3819,10 @@ "typeString": "address" }, "typeName": { - "id": 1895, + "id": 1625, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3461:7:18", + "src": "3482:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3794,11 +3833,11 @@ }, { "constant": false, - "id": 1898, + "id": 1628, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1950, - "src": "3476:14:18", + "scope": 1680, + "src": "3497:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3806,10 +3845,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1897, + "id": 1627, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3476:7:18", + "src": "3497:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3819,20 +3858,20 @@ "visibility": "internal" } ], - "src": "3460:31:18" + "src": "3481:31:10" }, "payable": false, "returnParameters": { - "id": 1902, + "id": 1632, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1901, + "id": 1631, "name": "", "nodeType": "VariableDeclaration", - "scope": 1950, - "src": "3526:4:18", + "scope": 1680, + "src": "3547:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3840,10 +3879,10 @@ "typeString": "bool" }, "typeName": { - "id": 1900, + "id": 1630, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3526:4:18", + "src": "3547:4:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3853,19 +3892,19 @@ "visibility": "internal" } ], - "src": "3525:6:18" + "src": "3546:6:10" }, - "scope": 1964, - "src": "3439:488:18", + "scope": 1694, + "src": "3460:488:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1962, + "id": 1692, "nodeType": "Block", - "src": "4091:44:18", + "src": "4112:44:10", "statements": [ { "expression": { @@ -3874,19 +3913,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1960, + "id": 1690, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1955, + "id": 1685, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2467, - "src": "4108:3:18", + "referencedDeclaration": 2398, + "src": "4129:3:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3903,19 +3942,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1958, + "id": 1688, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1956, + "id": 1686, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2467, - "src": "4115:3:18", + "referencedDeclaration": 2398, + "src": "4136:3:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3926,14 +3965,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1957, + "id": 1687, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4121:6:18", + "src": "4142:6:10", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_86400_by_1", @@ -3941,41 +3980,41 @@ }, "value": "1" }, - "src": "4115:12:18", + "src": "4136:12:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 1959, + "id": 1689, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4114:14:18", + "src": "4135:14:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4108:20:18", + "src": "4129:20:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1954, - "id": 1961, + "functionReturnParameters": 1684, + "id": 1691, "nodeType": "Return", - "src": "4101:27:18" + "src": "4122:27:10" } ] }, "documentation": "@dev Returns last midnight as Unix timestamp.\n @return Unix timestamp.", - "id": 1963, + "id": 1693, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3983,23 +4022,23 @@ "name": "today", "nodeType": "FunctionDefinition", "parameters": { - "id": 1951, + "id": 1681, "nodeType": "ParameterList", "parameters": [], - "src": "4033:2:18" + "src": "4054:2:10" }, "payable": false, "returnParameters": { - "id": 1954, + "id": 1684, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1953, + "id": 1683, "name": "", "nodeType": "VariableDeclaration", - "scope": 1963, - "src": "4081:4:18", + "scope": 1693, + "src": "4102:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4007,10 +4046,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1952, + "id": 1682, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "4081:4:18", + "src": "4102:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4020,82 +4059,82 @@ "visibility": "internal" } ], - "src": "4080:6:18" + "src": "4101:6:10" }, - "scope": 1964, - "src": "4019:116:18", + "scope": 1694, + "src": "4040:116:10", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1965, - "src": "296:3841:18" + "scope": 1695, + "src": "296:3862:10" } ], - "src": "0:4138:18" + "src": "0:4159:10" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "exportedSymbols": { "DailyLimitModule": [ - 1964 + 1694 ] }, - "id": 1965, + "id": 1695, "nodeType": "SourceUnit", "nodes": [ { - "id": 1677, + "id": 1406, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:18" + "src": "0:23:10" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1678, + "id": 1407, "nodeType": "ImportDirective", - "scope": 1965, - "sourceUnit": 878, - "src": "24:23:18", + "scope": 1695, + "sourceUnit": 622, + "src": "24:23:10", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1679, + "id": 1408, "nodeType": "ImportDirective", - "scope": 1965, - "sourceUnit": 1143, - "src": "48:30:18", + "scope": 1695, + "sourceUnit": 972, + "src": "48:30:10", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1680, + "id": 1409, "nodeType": "ImportDirective", - "scope": 1965, - "sourceUnit": 1439, - "src": "79:29:18", + "scope": 1695, + "sourceUnit": 1344, + "src": "79:29:10", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1681, + "id": 1410, "nodeType": "ImportDirective", - "scope": 1965, - "sourceUnit": 31, - "src": "109:21:18", + "scope": 1695, + "sourceUnit": 7, + "src": "109:21:10", "symbolAliases": [], "unitAlias": "" }, @@ -4105,46 +4144,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1682, + "id": 1411, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "325:6:18", + "referencedDeclaration": 621, + "src": "325:6:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", + "typeIdentifier": "t_contract$_Module_$621", "typeString": "contract Module" } }, - "id": 1683, + "id": 1412, "nodeType": "InheritanceSpecifier", - "src": "325:6:18" + "src": "325:6:10" } ], "contractDependencies": [ - 779, - 877, - 1559 + 580, + 621, + 1359 ], "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": 1964, + "id": 1694, "linearizedBaseContracts": [ - 1964, - 877, - 779, - 1559 + 1694, + 621, + 580, + 1359 ], "name": "DailyLimitModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1686, + "id": 1415, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1964, - "src": "339:50:18", + "scope": 1694, + "src": "339:50:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4152,10 +4191,10 @@ "typeString": "string" }, "typeName": { - "id": 1684, + "id": 1413, "name": "string", "nodeType": "ElementaryTypeName", - "src": "339:6:18", + "src": "339:6:10", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4164,14 +4203,14 @@ "value": { "argumentTypes": null, "hexValue": "4461696c79204c696d6974204d6f64756c65", - "id": 1685, + "id": 1414, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "369:20:18", + "src": "369:20:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_821ea27acfbc77b49f7a021dbe2eb92017d46b8bdda0bff9901cbc8ee143ceb3", @@ -4183,11 +4222,11 @@ }, { "constant": true, - "id": 1689, + "id": 1418, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1964, - "src": "395:40:18", + "scope": 1694, + "src": "395:40:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4195,10 +4234,10 @@ "typeString": "string" }, "typeName": { - "id": 1687, + "id": 1416, "name": "string", "nodeType": "ElementaryTypeName", - "src": "395:6:18", + "src": "395:6:10", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4207,14 +4246,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1688, + "id": 1417, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "428:7:18", + "src": "428:7:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -4226,11 +4265,11 @@ }, { "constant": true, - "id": 1692, + "id": 1421, "name": "TRANSFER_FUNCTION_IDENTIFIER", "nodeType": "VariableDeclaration", - "scope": 1964, - "src": "441:67:18", + "scope": 1694, + "src": "441:67:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4238,10 +4277,10 @@ "typeString": "bytes4" }, "typeName": { - "id": 1690, + "id": 1419, "name": "bytes4", "nodeType": "ElementaryTypeName", - "src": "441:6:18", + "src": "441:6:10", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -4250,14 +4289,14 @@ "value": { "argumentTypes": null, "hexValue": "a9059cbb", - "id": 1691, + "id": 1420, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "495:13:18", + "src": "495:13:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_abce0605a16ff5e998983a0af570b8ad942bb11e305eb20ae3ada0a3be24eb97", @@ -4269,44 +4308,44 @@ }, { "constant": false, - "id": 1696, + "id": 1425, "name": "dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1964, - "src": "586:50:18", + "scope": 1694, + "src": "586:50:10", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "typeName": { - "id": 1695, + "id": 1424, "keyType": { - "id": 1693, + "id": 1422, "name": "address", "nodeType": "ElementaryTypeName", - "src": "595:7:18", + "src": "595:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "586:31:18", + "src": "586:31:10", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "valueType": { "contractScope": null, - "id": 1694, + "id": 1423, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1703, - "src": "606:10:18", + "referencedDeclaration": 1432, + "src": "606:10:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } } @@ -4316,15 +4355,15 @@ }, { "canonicalName": "DailyLimitModule.DailyLimit", - "id": 1703, + "id": 1432, "members": [ { "constant": false, - "id": 1698, + "id": 1427, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "671:18:18", + "scope": 1432, + "src": "671:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4332,10 +4371,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1697, + "id": 1426, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "671:7:18", + "src": "671:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4346,11 +4385,11 @@ }, { "constant": false, - "id": 1700, + "id": 1429, "name": "spentToday", "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "699:18:18", + "scope": 1432, + "src": "699:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4358,10 +4397,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1699, + "id": 1428, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "699:7:18", + "src": "699:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4372,11 +4411,11 @@ }, { "constant": false, - "id": 1702, + "id": 1431, "name": "lastDay", "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "727:15:18", + "scope": 1432, + "src": "727:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4384,10 +4423,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1701, + "id": 1430, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "727:7:18", + "src": "727:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4399,15 +4438,15 @@ ], "name": "DailyLimit", "nodeType": "StructDefinition", - "scope": 1964, - "src": "643:106:18", + "scope": 1694, + "src": "643:106:10", "visibility": "public" }, { "body": { - "id": 1738, + "id": 1467, "nodeType": "Block", - "src": "1067:146:18", + "src": "1067:146:10", "statements": [ { "expression": { @@ -4415,18 +4454,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1712, + "id": 1441, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 876, - "src": "1077:10:18", + "referencedDeclaration": 620, + "src": "1077:10:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 1713, + "id": 1442, "isConstant": false, "isLValue": false, "isPure": false, @@ -4434,21 +4473,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1077:12:18", + "src": "1077:12:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1714, + "id": 1443, "nodeType": "ExpressionStatement", - "src": "1077:12:18" + "src": "1077:12:10" }, { "body": { "expression": { "argumentTypes": null, - "id": 1735, + "id": 1464, "isConstant": false, "isLValue": false, "isPure": false, @@ -4459,42 +4498,42 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1726, + "id": 1455, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "1155:11:18", + "referencedDeclaration": 1425, + "src": "1155:11:10", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1730, + "id": 1459, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1727, + "id": 1456, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1706, - "src": "1167:6:18", + "referencedDeclaration": 1435, + "src": "1167:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1729, + "id": 1458, "indexExpression": { "argumentTypes": null, - "id": 1728, + "id": 1457, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1716, - "src": "1174:1:18", + "referencedDeclaration": 1445, + "src": "1174:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4505,7 +4544,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1167:9:18", + "src": "1167:9:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4516,21 +4555,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1155:22:18", + "src": "1155:22:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1731, + "id": 1460, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1698, - "src": "1155:33:18", + "referencedDeclaration": 1427, + "src": "1155:33:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4542,26 +4581,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1732, + "id": 1461, "name": "_dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1709, - "src": "1191:12:18", + "referencedDeclaration": 1438, + "src": "1191:12:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1734, + "id": 1463, "indexExpression": { "argumentTypes": null, - "id": 1733, + "id": 1462, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1716, - "src": "1204:1:18", + "referencedDeclaration": 1445, + "src": "1204:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4572,21 +4611,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1191:15:18", + "src": "1191:15:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1155:51:18", + "src": "1155:51:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1736, + "id": 1465, "nodeType": "ExpressionStatement", - "src": "1155:51:18" + "src": "1155:51:10" }, "condition": { "argumentTypes": null, @@ -4594,19 +4633,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1722, + "id": 1451, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1719, + "id": 1448, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1716, - "src": "1119:1:18", + "referencedDeclaration": 1445, + "src": "1119:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4618,18 +4657,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1720, + "id": 1449, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1706, - "src": "1123:6:18", + "referencedDeclaration": 1435, + "src": "1123:6:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1721, + "id": 1450, "isConstant": false, "isLValue": false, "isPure": false, @@ -4637,31 +4676,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1123:13:18", + "src": "1123:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1119:17:18", + "src": "1119:17:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1737, + "id": 1466, "initializationExpression": { "assignments": [ - 1716 + 1445 ], "declarations": [ { "constant": false, - "id": 1716, + "id": 1445, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1739, - "src": "1104:9:18", + "scope": 1468, + "src": "1104:9:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4669,10 +4708,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1715, + "id": 1444, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1104:7:18", + "src": "1104:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4682,18 +4721,18 @@ "visibility": "internal" } ], - "id": 1718, + "id": 1447, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1717, + "id": 1446, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1116:1:18", + "src": "1116:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4702,12 +4741,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1104:13:18" + "src": "1104:13:10" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1724, + "id": 1453, "isConstant": false, "isLValue": false, "isPure": false, @@ -4715,15 +4754,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1138:3:18", + "src": "1138:3:10", "subExpression": { "argumentTypes": null, - "id": 1723, + "id": 1452, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1716, - "src": "1138:1:18", + "referencedDeclaration": 1445, + "src": "1138:1:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4734,17 +4773,17 @@ "typeString": "uint256" } }, - "id": 1725, + "id": 1454, "nodeType": "ExpressionStatement", - "src": "1138:3:18" + "src": "1138:3:10" }, "nodeType": "ForStatement", - "src": "1099:107:18" + "src": "1099:107:10" } ] }, "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": 1739, + "id": 1468, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -4752,16 +4791,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 1710, + "id": 1439, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1706, + "id": 1435, "name": "tokens", "nodeType": "VariableDeclaration", - "scope": 1739, - "src": "1006:16:18", + "scope": 1468, + "src": "1006:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4770,19 +4809,19 @@ }, "typeName": { "baseType": { - "id": 1704, + "id": 1433, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1006:7:18", + "src": "1006:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1705, + "id": 1434, "length": null, "nodeType": "ArrayTypeName", - "src": "1006:9:18", + "src": "1006:9:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4793,11 +4832,11 @@ }, { "constant": false, - "id": 1709, + "id": 1438, "name": "_dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1739, - "src": "1024:22:18", + "scope": 1468, + "src": "1024:22:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4806,19 +4845,19 @@ }, "typeName": { "baseType": { - "id": 1707, + "id": 1436, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1024:7:18", + "src": "1024:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1708, + "id": 1437, "length": null, "nodeType": "ArrayTypeName", - "src": "1024:9:18", + "src": "1024:9:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -4828,31 +4867,31 @@ "visibility": "internal" } ], - "src": "1005:42:18" + "src": "1005:42:10" }, "payable": false, "returnParameters": { - "id": 1711, + "id": 1440, "nodeType": "ParameterList", "parameters": [], - "src": "1067:0:18" + "src": "1067:0:10" }, - "scope": 1964, - "src": "991:222:18", + "scope": 1694, + "src": "991:222:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1755, + "id": 1484, "nodeType": "Block", - "src": "1540:59:18", + "src": "1540:59:10", "statements": [ { "expression": { "argumentTypes": null, - "id": 1753, + "id": 1482, "isConstant": false, "isLValue": false, "isPure": false, @@ -4863,26 +4902,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1748, + "id": 1477, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "1550:11:18", + "referencedDeclaration": 1425, + "src": "1550:11:10", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1750, + "id": 1479, "indexExpression": { "argumentTypes": null, - "id": 1749, + "id": 1478, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1741, - "src": "1562:5:18", + "referencedDeclaration": 1470, + "src": "1562:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4893,21 +4932,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1550:18:18", + "src": "1550:18:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1751, + "id": 1480, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1698, - "src": "1550:29:18", + "referencedDeclaration": 1427, + "src": "1550:29:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4917,68 +4956,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1752, + "id": 1481, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1743, - "src": "1582:10:18", + "referencedDeclaration": 1472, + "src": "1582:10:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1550:42:18", + "src": "1550:42:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1754, + "id": 1483, "nodeType": "ExpressionStatement", - "src": "1550:42:18" + "src": "1550:42:10" } ] }, "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": 1756, + "id": 1485, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1746, + "id": 1475, "modifierName": { "argumentTypes": null, - "id": 1745, + "id": 1474, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 857, - "src": "1525:10:18", + "referencedDeclaration": 601, + "src": "1525:10:10", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1525:10:18" + "src": "1525:10:10" } ], "name": "changeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1744, + "id": 1473, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1741, + "id": 1470, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1756, - "src": "1467:13:18", + "scope": 1485, + "src": "1467:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4986,10 +5025,10 @@ "typeString": "address" }, "typeName": { - "id": 1740, + "id": 1469, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1467:7:18", + "src": "1467:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5000,11 +5039,11 @@ }, { "constant": false, - "id": 1743, + "id": 1472, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1756, - "src": "1482:18:18", + "scope": 1485, + "src": "1482:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5012,10 +5051,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1742, + "id": 1471, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1482:7:18", + "src": "1482:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5025,26 +5064,26 @@ "visibility": "internal" } ], - "src": "1466:35:18" + "src": "1466:35:10" }, "payable": false, "returnParameters": { - "id": 1747, + "id": 1476, "nodeType": "ParameterList", "parameters": [], - "src": "1540:0:18" + "src": "1540:0:10" }, - "scope": 1964, - "src": "1441:158:18", + "scope": 1694, + "src": "1441:158:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1875, + "id": 1605, "nodeType": "Block", - "src": "1706:1197:18", + "src": "1706:1218:10", "statements": [ { "expression": { @@ -5055,12 +5094,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1772, + "id": 1501, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1758, - "src": "1831:6:18", + "referencedDeclaration": 1487, + "src": "1831:6:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5079,14 +5118,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1769, + "id": 1498, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "1814:7:18", + "referencedDeclaration": 588, + "src": "1814:7:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } } @@ -5094,22 +5133,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } ], - "id": 1768, + "id": 1497, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1438, - "src": "1801:12:18", + "referencedDeclaration": 1343, + "src": "1801:12:10", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1438_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", "typeString": "type(contract OwnerManager)" } }, - "id": 1770, + "id": 1499, "isConstant": false, "isLValue": false, "isPure": false, @@ -5117,27 +5156,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1801:21:18", + "src": "1801:21:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1438", + "typeIdentifier": "t_contract$_OwnerManager_$1343", "typeString": "contract OwnerManager" } }, - "id": 1771, + "id": 1500, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1428, - "src": "1801:29:18", + "referencedDeclaration": 1293, + "src": "1801:29:10", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 1773, + "id": 1502, "isConstant": false, "isLValue": false, "isPure": false, @@ -5145,7 +5184,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1801:37:18", + "src": "1801:37:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5159,21 +5198,21 @@ "typeString": "bool" } ], - "id": 1767, + "id": 1496, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1793:7:18", + "referencedDeclaration": 2399, + "src": "1793:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1774, + "id": 1503, "isConstant": false, "isLValue": false, "isPure": false, @@ -5181,15 +5220,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1793:46:18", + "src": "1793:46:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1775, + "id": 1504, "nodeType": "ExpressionStatement", - "src": "1793:46:18" + "src": "1793:46:10" }, { "expression": { @@ -5201,7 +5240,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1793, + "id": 1522, "isConstant": false, "isLValue": false, "isPure": false, @@ -5212,7 +5251,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1784, + "id": 1513, "isConstant": false, "isLValue": false, "isPure": false, @@ -5223,7 +5262,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1780, + "id": 1509, "isConstant": false, "isLValue": false, "isPure": false, @@ -5232,18 +5271,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1777, + "id": 1506, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1764, - "src": "1924:4:18", + "referencedDeclaration": 1493, + "src": "1924:4:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1778, + "id": 1507, "isConstant": false, "isLValue": false, "isPure": false, @@ -5251,7 +5290,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1924:11:18", + "src": "1924:11:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5262,14 +5301,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1779, + "id": 1508, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1939:1:18", + "src": "1939:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5277,7 +5316,7 @@ }, "value": "0" }, - "src": "1924:16:18", + "src": "1924:16:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5291,19 +5330,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1783, + "id": 1512, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1781, + "id": 1510, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1762, - "src": "1944:5:18", + "referencedDeclaration": 1491, + "src": "1944:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5314,14 +5353,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1782, + "id": 1511, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1952:1:18", + "src": "1952:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5329,13 +5368,13 @@ }, "value": "0" }, - "src": "1944:9:18", + "src": "1944:9:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1924:29:18", + "src": "1924:29:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5349,7 +5388,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1792, + "id": 1521, "isConstant": false, "isLValue": false, "isPure": false, @@ -5360,7 +5399,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1788, + "id": 1517, "isConstant": false, "isLValue": false, "isPure": false, @@ -5369,18 +5408,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1785, + "id": 1514, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1764, - "src": "1957:4:18", + "referencedDeclaration": 1493, + "src": "1957:4:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1786, + "id": 1515, "isConstant": false, "isLValue": false, "isPure": false, @@ -5388,7 +5427,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1957:11:18", + "src": "1957:11:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5399,14 +5438,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1787, + "id": 1516, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1971:1:18", + "src": "1971:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5414,7 +5453,7 @@ }, "value": "0" }, - "src": "1957:15:18", + "src": "1957:15:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5428,19 +5467,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1791, + "id": 1520, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1789, + "id": 1518, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1762, - "src": "1976:5:18", + "referencedDeclaration": 1491, + "src": "1976:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5451,14 +5490,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1790, + "id": 1519, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1985:1:18", + "src": "1985:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5466,19 +5505,19 @@ }, "value": "0" }, - "src": "1976:10:18", + "src": "1976:10:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1957:29:18", + "src": "1957:29:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1924:62:18", + "src": "1924:62:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5492,21 +5531,21 @@ "typeString": "bool" } ], - "id": 1776, + "id": 1505, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1916:7:18", + "referencedDeclaration": 2399, + "src": "1916:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1794, + "id": 1523, "isConstant": false, "isLValue": false, "isPure": false, @@ -5514,26 +5553,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1916:71:18", + "src": "1916:71:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1795, + "id": 1524, "nodeType": "ExpressionStatement", - "src": "1916:71:18" + "src": "1916:71:10" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1797, + "id": 1526, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1876, - "src": "1997:13:18", + "scope": 1606, + "src": "1997:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5541,10 +5580,10 @@ "typeString": "address" }, "typeName": { - "id": 1796, + "id": 1525, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1997:7:18", + "src": "1997:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5554,21 +5593,21 @@ "visibility": "internal" } ], - "id": 1798, + "id": 1527, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "1997:13:18" + "src": "1997:13:10" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1800, + "id": 1529, "name": "receiver", "nodeType": "VariableDeclaration", - "scope": 1876, - "src": "2020:16:18", + "scope": 1606, + "src": "2020:16:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5576,10 +5615,10 @@ "typeString": "address" }, "typeName": { - "id": 1799, + "id": 1528, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2020:7:18", + "src": "2020:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5589,21 +5628,21 @@ "visibility": "internal" } ], - "id": 1801, + "id": 1530, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2020:16:18" + "src": "2020:16:10" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1803, + "id": 1532, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1876, - "src": "2046:14:18", + "scope": 1606, + "src": "2046:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5611,10 +5650,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1802, + "id": 1531, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2046:7:18", + "src": "2046:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5624,10 +5663,10 @@ "visibility": "internal" } ], - "id": 1804, + "id": 1533, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2046:14:18" + "src": "2046:14:10" }, { "condition": { @@ -5636,7 +5675,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1808, + "id": 1537, "isConstant": false, "isLValue": false, "isPure": false, @@ -5645,18 +5684,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1805, + "id": 1534, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1764, - "src": "2074:4:18", + "referencedDeclaration": 1493, + "src": "2074:4:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1806, + "id": 1535, "isConstant": false, "isLValue": false, "isPure": false, @@ -5664,7 +5703,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2074:11:18", + "src": "2074:11:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5675,14 +5714,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1807, + "id": 1536, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2089:1:18", + "src": "2089:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5690,33 +5729,33 @@ }, "value": "0" }, - "src": "2074:16:18", + "src": "2074:16:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 1836, + "id": 1565, "nodeType": "Block", - "src": "2195:413:18", + "src": "2195:413:10", "statements": [ { "expression": { "argumentTypes": null, - "id": 1824, + "id": 1553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1822, + "id": 1551, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "2209:5:18", + "referencedDeclaration": 1526, + "src": "2209:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5726,37 +5765,37 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1823, + "id": 1552, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1760, - "src": "2217:2:18", + "referencedDeclaration": 1489, + "src": "2217:2:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2209:10:18", + "src": "2209:10:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1825, + "id": 1554, "nodeType": "ExpressionStatement", - "src": "2209:10:18" + "src": "2209:10:10" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1827, + "id": 1556, "name": "functionIdentifier", "nodeType": "VariableDeclaration", - "scope": 1876, - "src": "2233:25:18", + "scope": 1606, + "src": "2233:25:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5764,10 +5803,10 @@ "typeString": "bytes4" }, "typeName": { - "id": 1826, + "id": 1555, "name": "bytes4", "nodeType": "ElementaryTypeName", - "src": "2233:6:18", + "src": "2233:6:10", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -5777,72 +5816,72 @@ "visibility": "internal" } ], - "id": 1828, + "id": 1557, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2233:25:18" + "src": "2233:25:10" }, { "externalReferences": [ { "functionIdentifier": { - "declaration": 1827, + "declaration": 1556, "isOffset": false, "isSlot": false, - "src": "2367:18:18", + "src": "2367:18:10", "valueSize": 1 } }, { "data": { - "declaration": 1764, + "declaration": 1493, "isOffset": false, "isSlot": false, - "src": "2399:4:18", + "src": "2399:4:10", "valueSize": 1 } }, { "receiver": { - "declaration": 1800, + "declaration": 1529, "isOffset": false, "isSlot": false, - "src": "2428:8:18", + "src": "2428:8:10", "valueSize": 1 } }, { "amount": { - "declaration": 1803, + "declaration": 1532, "isOffset": false, "isSlot": false, - "src": "2479:6:18", + "src": "2479:6:10", "valueSize": 1 } }, { "data": { - "declaration": 1764, + "declaration": 1493, "isOffset": false, "isSlot": false, - "src": "2450:4:18", + "src": "2450:4:10", "valueSize": 1 } }, { "data": { - "declaration": 1764, + "declaration": 1493, "isOffset": false, "isSlot": false, - "src": "2499:4:18", + "src": "2499:4:10", "valueSize": 1 } } ], - "id": 1829, + "id": 1558, "nodeType": "InlineAssembly", "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}", - "src": "2340:205:18" + "src": "2340:205:10" }, { "expression": { @@ -5854,19 +5893,19 @@ "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, - "id": 1833, + "id": 1562, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1831, + "id": 1560, "name": "functionIdentifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1827, - "src": "2546:18:18", + "referencedDeclaration": 1556, + "src": "2546:18:10", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -5876,18 +5915,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1832, + "id": 1561, "name": "TRANSFER_FUNCTION_IDENTIFIER", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1692, - "src": "2568:28:18", + "referencedDeclaration": 1421, + "src": "2568:28:10", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, - "src": "2546:50:18", + "src": "2546:50:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5901,21 +5940,21 @@ "typeString": "bool" } ], - "id": 1830, + "id": 1559, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2538:7:18", + "referencedDeclaration": 2399, + "src": "2538:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1834, + "id": 1563, "isConstant": false, "isLValue": false, "isPure": false, @@ -5923,42 +5962,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2538:59:18", + "src": "2538:59:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1835, + "id": 1564, "nodeType": "ExpressionStatement", - "src": "2538:59:18" + "src": "2538:59:10" } ] }, - "id": 1837, + "id": 1566, "nodeType": "IfStatement", - "src": "2070:538:18", + "src": "2070:538:10", "trueBody": { - "id": 1821, + "id": 1550, "nodeType": "Block", - "src": "2092:89:18", + "src": "2092:89:10", "statements": [ { "expression": { "argumentTypes": null, - "id": 1811, + "id": 1540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1809, + "id": 1538, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "2106:5:18", + "referencedDeclaration": 1526, + "src": "2106:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5969,14 +6008,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1810, + "id": 1539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2114:1:18", + "src": "2114:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5984,32 +6023,32 @@ }, "value": "0" }, - "src": "2106:9:18", + "src": "2106:9:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1812, + "id": 1541, "nodeType": "ExpressionStatement", - "src": "2106:9:18" + "src": "2106:9:10" }, { "expression": { "argumentTypes": null, - "id": 1815, + "id": 1544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1813, + "id": 1542, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1800, - "src": "2129:8:18", + "referencedDeclaration": 1529, + "src": "2129:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6019,43 +6058,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1814, + "id": 1543, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1760, - "src": "2140:2:18", + "referencedDeclaration": 1489, + "src": "2140:2:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2129:13:18", + "src": "2129:13:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1816, + "id": 1545, "nodeType": "ExpressionStatement", - "src": "2129:13:18" + "src": "2129:13:10" }, { "expression": { "argumentTypes": null, - "id": 1819, + "id": 1548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1817, + "id": 1546, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1803, - "src": "2156:6:18", + "referencedDeclaration": 1532, + "src": "2156:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6065,26 +6104,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1818, + "id": 1547, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1762, - "src": "2165:5:18", + "referencedDeclaration": 1491, + "src": "2165:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2156:14:18", + "src": "2156:14:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1820, + "id": 1549, "nodeType": "ExpressionStatement", - "src": "2156:14:18" + "src": "2156:14:10" } ] } @@ -6099,19 +6138,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1841, + "id": 1570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1839, + "id": 1568, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1800, - "src": "2625:8:18", + "referencedDeclaration": 1529, + "src": "2625:8:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6122,14 +6161,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1840, + "id": 1569, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2637:1:18", + "src": "2637:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6137,7 +6176,7 @@ }, "value": "0" }, - "src": "2625:13:18", + "src": "2625:13:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6151,21 +6190,21 @@ "typeString": "bool" } ], - "id": 1838, + "id": 1567, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2617:7:18", + "referencedDeclaration": 2399, + "src": "2617:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1842, + "id": 1571, "isConstant": false, "isLValue": false, "isPure": false, @@ -6173,15 +6212,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2617:22:18", + "src": "2617:22:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1843, + "id": 1572, "nodeType": "ExpressionStatement", - "src": "2617:22:18" + "src": "2617:22:10" }, { "expression": { @@ -6193,19 +6232,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1847, + "id": 1576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1845, + "id": 1574, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1803, - "src": "2657:6:18", + "referencedDeclaration": 1532, + "src": "2657:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6216,14 +6255,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1846, + "id": 1575, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2666:1:18", + "src": "2666:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6231,7 +6270,7 @@ }, "value": "0" }, - "src": "2657:10:18", + "src": "2657:10:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6245,21 +6284,21 @@ "typeString": "bool" } ], - "id": 1844, + "id": 1573, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2649:7:18", + "referencedDeclaration": 2399, + "src": "2649:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1848, + "id": 1577, "isConstant": false, "isLValue": false, "isPure": false, @@ -6267,15 +6306,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2649:19:18", + "src": "2649:19:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1849, + "id": 1578, "nodeType": "ExpressionStatement", - "src": "2649:19:18" + "src": "2649:19:10" }, { "expression": { @@ -6286,12 +6325,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1852, + "id": 1581, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "2763:5:18", + "referencedDeclaration": 1526, + "src": "2763:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6299,12 +6338,12 @@ }, { "argumentTypes": null, - "id": 1853, + "id": 1582, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1803, - "src": "2770:6:18", + "referencedDeclaration": 1532, + "src": "2770:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6322,18 +6361,18 @@ "typeString": "uint256" } ], - "id": 1851, + "id": 1580, "name": "isUnderLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1950, - "src": "2750:12:18", + "referencedDeclaration": 1680, + "src": "2750:12:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, - "id": 1854, + "id": 1583, "isConstant": false, "isLValue": false, "isPure": false, @@ -6341,7 +6380,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2750:27:18", + "src": "2750:27:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6355,21 +6394,21 @@ "typeString": "bool" } ], - "id": 1850, + "id": 1579, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2742:7:18", + "referencedDeclaration": 2399, + "src": "2742:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1855, + "id": 1584, "isConstant": false, "isLValue": false, "isPure": false, @@ -6377,20 +6416,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2742:36:18", + "src": "2742:36:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1856, + "id": 1585, "nodeType": "ExpressionStatement", - "src": "2742:36:18" + "src": "2742:36:10" }, { "expression": { "argumentTypes": null, - "id": 1862, + "id": 1591, "isConstant": false, "isLValue": false, "isPure": false, @@ -6401,26 +6440,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1857, + "id": 1586, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "2788:11:18", + "referencedDeclaration": 1425, + "src": "2788:11:10", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1859, + "id": 1588, "indexExpression": { "argumentTypes": null, - "id": 1858, + "id": 1587, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "2800:5:18", + "referencedDeclaration": 1526, + "src": "2800:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6431,21 +6470,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2788:18:18", + "src": "2788:18:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1860, + "id": 1589, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1700, - "src": "2788:29:18", + "referencedDeclaration": 1429, + "src": "2788:29:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6455,26 +6494,26 @@ "operator": "+=", "rightHandSide": { "argumentTypes": null, - "id": 1861, + "id": 1590, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1803, - "src": "2821:6:18", + "referencedDeclaration": 1532, + "src": "2821:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2788:39:18", + "src": "2788:39:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1863, + "id": 1592, "nodeType": "ExpressionStatement", - "src": "2788:39:18" + "src": "2788:39:10" }, { "expression": { @@ -6482,136 +6521,175 @@ "arguments": [ { "argumentTypes": null, - "id": 1867, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1760, - "src": "2859:2:18", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1868, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1762, - "src": "2863:5:18", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1869, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1764, - "src": "2870:4:18", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { + "arguments": [ + { "argumentTypes": null, - "id": 1870, - "name": "Enum", + "id": 1596, + "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 30, - "src": "2876:4:18", + "referencedDeclaration": 1489, + "src": "2879:2:10", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", - "typeString": "type(contract Enum)" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1871, + { + "argumentTypes": null, + "id": 1597, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1491, + "src": "2883:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1598, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1493, + "src": "2890:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1599, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6, + "src": "2896:4:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeString": "type(contract Enum)" + } + }, + "id": 1600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 5, + "src": "2896:14:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 1601, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2896:19:10", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 1594, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "2845:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" + } + }, + "id": 1595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "Operation", + "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "2876:14:18", + "referencedDeclaration": 798, + "src": "2845:33:10", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", - "typeString": "type(enum Enum.Operation)" + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1872, + "id": 1602, "isConstant": false, "isLValue": false, - "isPure": true, + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2876:19:18", + "names": [], + "nodeType": "FunctionCall", + "src": "2845:71:10", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" + "typeIdentifier": "t_bool", + "typeString": "bool" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" + "typeIdentifier": "t_bool", + "typeString": "bool" } ], - "expression": { - "argumentTypes": null, - "id": 1864, - "name": "manager", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "2837:7:18", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", - "typeString": "contract ModuleManager" - } - }, - "id": 1866, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "executeModule", - "nodeType": "MemberAccess", - "referencedDeclaration": 1033, - "src": "2837:21:18", + "id": 1593, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "2837:7:10", "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)" + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" } }, - "id": 1873, + "id": 1603, "isConstant": false, "isLValue": false, "isPure": false, @@ -6619,20 +6697,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2837:59:18", + "src": "2837:80:10", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 1874, + "id": 1604, "nodeType": "ExpressionStatement", - "src": "2837:59:18" + "src": "2837:80:10" } ] }, "documentation": null, - "id": 1876, + "id": 1606, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6640,16 +6718,16 @@ "name": "executeInternal", "nodeType": "FunctionDefinition", "parameters": { - "id": 1765, + "id": 1494, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1758, + "id": 1487, "name": "sender", "nodeType": "VariableDeclaration", - "scope": 1876, - "src": "1630:14:18", + "scope": 1606, + "src": "1630:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6657,10 +6735,10 @@ "typeString": "address" }, "typeName": { - "id": 1757, + "id": 1486, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1630:7:18", + "src": "1630:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6671,11 +6749,11 @@ }, { "constant": false, - "id": 1760, + "id": 1489, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1876, - "src": "1646:10:18", + "scope": 1606, + "src": "1646:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6683,10 +6761,10 @@ "typeString": "address" }, "typeName": { - "id": 1759, + "id": 1488, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1646:7:18", + "src": "1646:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6697,11 +6775,11 @@ }, { "constant": false, - "id": 1762, + "id": 1491, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1876, - "src": "1658:13:18", + "scope": 1606, + "src": "1658:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6709,10 +6787,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1761, + "id": 1490, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1658:7:18", + "src": "1658:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6723,11 +6801,11 @@ }, { "constant": false, - "id": 1764, + "id": 1493, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1876, - "src": "1673:10:18", + "scope": 1606, + "src": "1673:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6735,10 +6813,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1763, + "id": 1492, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1673:5:18", + "src": "1673:5:10", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6748,26 +6826,26 @@ "visibility": "internal" } ], - "src": "1629:55:18" + "src": "1629:55:10" }, "payable": false, "returnParameters": { - "id": 1766, + "id": 1495, "nodeType": "ParameterList", "parameters": [], - "src": "1706:0:18" + "src": "1706:0:10" }, - "scope": 1964, - "src": "1605:1298:18", + "scope": 1694, + "src": "1605:1319:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1893, + "id": 1623, "nodeType": "Block", - "src": "3372:61:18", + "src": "3393:61:10", "statements": [ { "expression": { @@ -6777,18 +6855,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1886, + "id": 1616, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "3398:3:18", + "referencedDeclaration": 2396, + "src": "3419:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1887, + "id": 1617, "isConstant": false, "isLValue": false, "isPure": false, @@ -6796,7 +6874,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3398:10:18", + "src": "3419:10:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6804,12 +6882,12 @@ }, { "argumentTypes": null, - "id": 1888, + "id": 1618, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1878, - "src": "3410:2:18", + "referencedDeclaration": 1608, + "src": "3431:2:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6817,12 +6895,12 @@ }, { "argumentTypes": null, - "id": 1889, + "id": 1619, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1880, - "src": "3414:5:18", + "referencedDeclaration": 1610, + "src": "3435:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6830,12 +6908,12 @@ }, { "argumentTypes": null, - "id": 1890, + "id": 1620, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1882, - "src": "3421:4:18", + "referencedDeclaration": 1612, + "src": "3442:4:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6861,18 +6939,18 @@ "typeString": "bytes memory" } ], - "id": 1885, + "id": 1615, "name": "executeInternal", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1876, - "src": "3382:15:18", + "referencedDeclaration": 1606, + "src": "3403:15:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)" } }, - "id": 1891, + "id": 1621, "isConstant": false, "isLValue": false, "isPure": false, @@ -6880,20 +6958,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3382:44:18", + "src": "3403:44:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1892, + "id": 1622, "nodeType": "ExpressionStatement", - "src": "3382:44:18" + "src": "3403:44:10" } ] }, "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n @param value Ether value in case of an Ether transfer.\n @param data Encoded token transfer. Empty in case of Ether transfer.\n @return Returns if transaction can be executed.", - "id": 1894, + "id": 1624, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6901,16 +6979,16 @@ "name": "executeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1883, + "id": 1613, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1878, + "id": 1608, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1894, - "src": "3314:10:18", + "scope": 1624, + "src": "3335:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6918,10 +6996,10 @@ "typeString": "address" }, "typeName": { - "id": 1877, + "id": 1607, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3314:7:18", + "src": "3335:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6932,11 +7010,11 @@ }, { "constant": false, - "id": 1880, + "id": 1610, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1894, - "src": "3326:13:18", + "scope": 1624, + "src": "3347:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6944,10 +7022,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1879, + "id": 1609, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3326:7:18", + "src": "3347:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6958,11 +7036,11 @@ }, { "constant": false, - "id": 1882, + "id": 1612, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1894, - "src": "3341:10:18", + "scope": 1624, + "src": "3362:10:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6970,10 +7048,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1881, + "id": 1611, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3341:5:18", + "src": "3362:5:10", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6983,54 +7061,54 @@ "visibility": "internal" } ], - "src": "3313:39:18" + "src": "3334:39:10" }, "payable": false, "returnParameters": { - "id": 1884, + "id": 1614, "nodeType": "ParameterList", "parameters": [], - "src": "3372:0:18" + "src": "3393:0:10" }, - "scope": 1964, - "src": "3287:146:18", + "scope": 1694, + "src": "3308:146:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1949, + "id": 1679, "nodeType": "Block", - "src": "3536:391:18", + "src": "3557:391:10", "statements": [ { "assignments": [ - 1904 + 1634 ], "declarations": [ { "constant": false, - "id": 1904, + "id": 1634, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1950, - "src": "3546:29:18", + "scope": 1680, + "src": "3567:29:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" }, "typeName": { "contractScope": null, - "id": 1903, + "id": 1633, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1703, - "src": "3546:10:18", + "referencedDeclaration": 1432, + "src": "3567:10:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } }, @@ -7038,31 +7116,31 @@ "visibility": "internal" } ], - "id": 1908, + "id": 1638, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1905, + "id": 1635, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "3578:11:18", + "referencedDeclaration": 1425, + "src": "3599:11:10", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1907, + "id": 1637, "indexExpression": { "argumentTypes": null, - "id": 1906, + "id": 1636, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1896, - "src": "3590:5:18", + "referencedDeclaration": 1626, + "src": "3611:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7073,14 +7151,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3578:18:18", + "src": "3599:18:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "nodeType": "VariableDeclarationStatement", - "src": "3546:50:18" + "src": "3567:50:10" }, { "condition": { @@ -7089,7 +7167,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1913, + "id": 1643, "isConstant": false, "isLValue": false, "isPure": false, @@ -7099,18 +7177,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1909, + "id": 1639, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1963, - "src": "3610:5:18", + "referencedDeclaration": 1693, + "src": "3631:5:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1910, + "id": 1640, "isConstant": false, "isLValue": false, "isPure": false, @@ -7118,7 +7196,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3610:7:18", + "src": "3631:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7130,50 +7208,50 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1911, + "id": 1641, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1904, - "src": "3620:10:18", + "referencedDeclaration": 1634, + "src": "3641:10:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1912, + "id": 1642, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1702, - "src": "3620:18:18", + "referencedDeclaration": 1431, + "src": "3641:18:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3610:28:18", + "src": "3631:28:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1928, + "id": 1658, "nodeType": "IfStatement", - "src": "3606:126:18", + "src": "3627:126:10", "trueBody": { - "id": 1927, + "id": 1657, "nodeType": "Block", - "src": "3640:92:18", + "src": "3661:92:10", "statements": [ { "expression": { "argumentTypes": null, - "id": 1919, + "id": 1649, "isConstant": false, "isLValue": false, "isPure": false, @@ -7182,26 +7260,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1914, + "id": 1644, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1904, - "src": "3654:10:18", + "referencedDeclaration": 1634, + "src": "3675:10:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1916, + "id": 1646, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1702, - "src": "3654:18:18", + "referencedDeclaration": 1431, + "src": "3675:18:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7214,18 +7292,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1917, + "id": 1647, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1963, - "src": "3675:5:18", + "referencedDeclaration": 1693, + "src": "3696:5:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1918, + "id": 1648, "isConstant": false, "isLValue": false, "isPure": false, @@ -7233,26 +7311,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3675:7:18", + "src": "3696:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3654:28:18", + "src": "3675:28:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1920, + "id": 1650, "nodeType": "ExpressionStatement", - "src": "3654:28:18" + "src": "3675:28:10" }, { "expression": { "argumentTypes": null, - "id": 1925, + "id": 1655, "isConstant": false, "isLValue": false, "isPure": false, @@ -7261,26 +7339,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1921, + "id": 1651, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1904, - "src": "3696:10:18", + "referencedDeclaration": 1634, + "src": "3717:10:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1923, + "id": 1653, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1700, - "src": "3696:21:18", + "referencedDeclaration": 1429, + "src": "3717:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7291,14 +7369,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1924, + "id": 1654, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3720:1:18", + "src": "3741:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7306,15 +7384,15 @@ }, "value": "0" }, - "src": "3696:25:18", + "src": "3717:25:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1926, + "id": 1656, "nodeType": "ExpressionStatement", - "src": "3696:25:18" + "src": "3717:25:10" } ] } @@ -7326,7 +7404,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1943, + "id": 1673, "isConstant": false, "isLValue": false, "isPure": false, @@ -7337,7 +7415,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1935, + "id": 1665, "isConstant": false, "isLValue": false, "isPure": false, @@ -7348,7 +7426,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1932, + "id": 1662, "isConstant": false, "isLValue": false, "isPure": false, @@ -7357,26 +7435,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1929, + "id": 1659, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1904, - "src": "3748:10:18", + "referencedDeclaration": 1634, + "src": "3769:10:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1930, + "id": 1660, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1700, - "src": "3748:21:18", + "referencedDeclaration": 1429, + "src": "3769:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7386,18 +7464,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1931, + "id": 1661, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1898, - "src": "3772:6:18", + "referencedDeclaration": 1628, + "src": "3793:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3748:30:18", + "src": "3769:30:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7409,32 +7487,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1933, + "id": 1663, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1904, - "src": "3782:10:18", + "referencedDeclaration": 1634, + "src": "3803:10:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1934, + "id": 1664, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1698, - "src": "3782:21:18", + "referencedDeclaration": 1427, + "src": "3803:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3748:55:18", + "src": "3769:55:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7448,7 +7526,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1942, + "id": 1672, "isConstant": false, "isLValue": false, "isPure": false, @@ -7459,7 +7537,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1939, + "id": 1669, "isConstant": false, "isLValue": false, "isPure": false, @@ -7468,26 +7546,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1936, + "id": 1666, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1904, - "src": "3819:10:18", + "referencedDeclaration": 1634, + "src": "3840:10:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1937, + "id": 1667, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1700, - "src": "3819:21:18", + "referencedDeclaration": 1429, + "src": "3840:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7497,18 +7575,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1938, + "id": 1668, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1898, - "src": "3843:6:18", + "referencedDeclaration": 1628, + "src": "3864:6:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3819:30:18", + "src": "3840:30:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7520,59 +7598,59 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1940, + "id": 1670, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1904, - "src": "3852:10:18", + "referencedDeclaration": 1634, + "src": "3873:10:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1941, + "id": 1671, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1700, - "src": "3852:21:18", + "referencedDeclaration": 1429, + "src": "3873:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3819:54:18", + "src": "3840:54:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3748:125:18", + "src": "3769:125:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1946, + "id": 1676, "nodeType": "IfStatement", - "src": "3741:157:18", + "src": "3762:157:10", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 1944, + "id": 1674, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3894:4:18", + "src": "3915:4:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7580,24 +7658,24 @@ }, "value": "true" }, - "functionReturnParameters": 1902, - "id": 1945, + "functionReturnParameters": 1632, + "id": 1675, "nodeType": "Return", - "src": "3887:11:18" + "src": "3908:11:10" } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 1947, + "id": 1677, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3915:5:18", + "src": "3936:5:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7605,15 +7683,15 @@ }, "value": "false" }, - "functionReturnParameters": 1902, - "id": 1948, + "functionReturnParameters": 1632, + "id": 1678, "nodeType": "Return", - "src": "3908:12:18" + "src": "3929:12:10" } ] }, "documentation": null, - "id": 1950, + "id": 1680, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7621,16 +7699,16 @@ "name": "isUnderLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1899, + "id": 1629, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1896, + "id": 1626, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1950, - "src": "3461:13:18", + "scope": 1680, + "src": "3482:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7638,10 +7716,10 @@ "typeString": "address" }, "typeName": { - "id": 1895, + "id": 1625, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3461:7:18", + "src": "3482:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7652,11 +7730,11 @@ }, { "constant": false, - "id": 1898, + "id": 1628, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1950, - "src": "3476:14:18", + "scope": 1680, + "src": "3497:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7664,10 +7742,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1897, + "id": 1627, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3476:7:18", + "src": "3497:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7677,20 +7755,20 @@ "visibility": "internal" } ], - "src": "3460:31:18" + "src": "3481:31:10" }, "payable": false, "returnParameters": { - "id": 1902, + "id": 1632, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1901, + "id": 1631, "name": "", "nodeType": "VariableDeclaration", - "scope": 1950, - "src": "3526:4:18", + "scope": 1680, + "src": "3547:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7698,10 +7776,10 @@ "typeString": "bool" }, "typeName": { - "id": 1900, + "id": 1630, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3526:4:18", + "src": "3547:4:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7711,19 +7789,19 @@ "visibility": "internal" } ], - "src": "3525:6:18" + "src": "3546:6:10" }, - "scope": 1964, - "src": "3439:488:18", + "scope": 1694, + "src": "3460:488:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1962, + "id": 1692, "nodeType": "Block", - "src": "4091:44:18", + "src": "4112:44:10", "statements": [ { "expression": { @@ -7732,19 +7810,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1960, + "id": 1690, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1955, + "id": 1685, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2467, - "src": "4108:3:18", + "referencedDeclaration": 2398, + "src": "4129:3:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7761,19 +7839,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1958, + "id": 1688, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1956, + "id": 1686, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2467, - "src": "4115:3:18", + "referencedDeclaration": 2398, + "src": "4136:3:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7784,14 +7862,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1957, + "id": 1687, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4121:6:18", + "src": "4142:6:10", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_86400_by_1", @@ -7799,41 +7877,41 @@ }, "value": "1" }, - "src": "4115:12:18", + "src": "4136:12:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 1959, + "id": 1689, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4114:14:18", + "src": "4135:14:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4108:20:18", + "src": "4129:20:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1954, - "id": 1961, + "functionReturnParameters": 1684, + "id": 1691, "nodeType": "Return", - "src": "4101:27:18" + "src": "4122:27:10" } ] }, "documentation": "@dev Returns last midnight as Unix timestamp.\n @return Unix timestamp.", - "id": 1963, + "id": 1693, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7841,23 +7919,23 @@ "name": "today", "nodeType": "FunctionDefinition", "parameters": { - "id": 1951, + "id": 1681, "nodeType": "ParameterList", "parameters": [], - "src": "4033:2:18" + "src": "4054:2:10" }, "payable": false, "returnParameters": { - "id": 1954, + "id": 1684, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1953, + "id": 1683, "name": "", "nodeType": "VariableDeclaration", - "scope": 1963, - "src": "4081:4:18", + "scope": 1693, + "src": "4102:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7865,10 +7943,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1952, + "id": 1682, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "4081:4:18", + "src": "4102:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7878,20 +7956,20 @@ "visibility": "internal" } ], - "src": "4080:6:18" + "src": "4101:6:10" }, - "scope": 1964, - "src": "4019:116:18", + "scope": 1694, + "src": "4040:116:10", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1965, - "src": "296:3841:18" + "scope": 1695, + "src": "296:3862:10" } ], - "src": "0:4138:18" + "src": "0:4159:10" }, "compiler": { "name": "solc", @@ -7901,8 +7979,8 @@ "4": { "events": {}, "links": {}, - "address": "0x302364976f0a5623088f52008335465f6b3389f9", - "transactionHash": "0x8ad6245cc111aa9b30c96651f8729b927e595cb0b6ff86aa6368721896b60a3b" + "address": "0x831ec5aaad91423fb78d3e1ad1fcf9d5006774df", + "transactionHash": "0xdae4c3a40843ab9bf9e62becc882075695bb8c0bcc3f3a3aa3016559b63f90e4" }, "1525950336085": { "events": {}, @@ -7915,8 +7993,14 @@ "links": {}, "address": "0x452dd8d6f81786c3ad3ec3cbcf024687659c682a", "transactionHash": "0xaffd9cdbf1bd14f5f349af2782a1b4dbebd9ac97abedbcfb9aee5fb1707afe96" + }, + "1526478212260": { + "events": {}, + "links": {}, + "address": "0x180cb429f1d8b3e99b718640d3895155e2190452", + "transactionHash": "0xefeddc1db847371ef66ea36caf0a583b6bb2b9a08fdbeb73ee0f1563131ca3e2" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-14T07:39:37.963Z" + "updatedAt": "2018-05-16T13:45:24.523Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json b/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json index 4ce1e783..e58738e8 100644 --- a/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json +++ b/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json @@ -250,40 +250,40 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506111cf806100206000396000f3006080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100ca578063430e47f814610173578063481c6a75146101dc5780634bedd30f146102335780637de7edef146102ef57806381c5e03b14610332578063a3f4df7e1461037f578063affed0e01461040f578063b74e452b1461043a578063b98a34de14610465578063d7bffc921461051e578063fce7379a14610583578063ffa1ad7414610616575b600080fd5b3480156100d657600080fd5b5061017160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506106a6565b005b34801561017f57600080fd5b50610188610745565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101e857600080fd5b506101f1610769565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561023f57600080fd5b506102ed600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291908035600019169060200190929190803560001916906020019092919050505061078f565b005b3480156102fb57600080fd5b50610330600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061084c565b005b34801561033e57600080fd5b5061037d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610911565b005b34801561038b57600080fd5b506103946109b8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103d45780820151818401526020810190506103b9565b50505050905090810190601f1680156104015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041b57600080fd5b506104246109f1565b6040518082815260200191505060405180910390f35b34801561044657600080fd5b5061044f6109f7565b6040518082815260200191505060405180910390f35b34801561047157600080fd5b50610500600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610a0f565b60405180826000191660001916815260200191505060405180910390f35b34801561052a57600080fd5b5061055f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bf2565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561058f57600080fd5b50610614600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c1c565b005b34801561062257600080fd5b5061062b610c2d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561066b578082015181840152602081019050610650565b50505050905090810190601f1680156106985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006106b0610c66565b600090505b82518110156107405781818151811015156106cc57fe5b906020019060200201516002600085848151811015156106e857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506106b5565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806107a0888888600354610a0f565b9150600182868686604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610819573d6000803e3d6000fd5b505050602060405103519050600160036000828254019250508190555061084281898989610cf0565b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156108ce57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561096d57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b60035481565b60006201518042811515610a0757fe5b064203905090565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184815260200183805190602001908083835b602083101515610baf5780518252602082019150602081019050602083039250610b8a565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200197505050505050505060405180910390209050949350505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b610c2833848484610cf0565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cad57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050506040513d6020811015610ddd57600080fd5b81019080805190602001909291905050501515610df957600080fd5b60008551148015610e0a5750600086115b80610e22575060008551118015610e215750600086145b5b1515610e2d57600080fd5b600085511415610e465760009350869250859150610ecb565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610eca57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610ef157600080fd5b600082111515610f0057600080fd5b610f0a84836110f4565b1515610f1557600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b021640a88888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561101f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561105f578082015181840152602081019050611044565b50505050905090810190601f16801561108c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156110ae57600080fd5b505af11580156110c2573d6000803e3d6000fd5b505050506040513d60208110156110d857600080fd5b8101908080519060200190929190505050505050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600201546111456109f7565b1115611166576111536109f7565b8160020181905550600081600101819055505b806000015483826001015401111580156111895750806001015483826001015401115b15611197576001915061119c565b600091505b50929150505600a165627a7a723058209acb3b25560df8e205af786b834cb0120a603a673ce06fbea511bee993d09cd90029", - "deployedBytecode": "0x6080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100ca578063430e47f814610173578063481c6a75146101dc5780634bedd30f146102335780637de7edef146102ef57806381c5e03b14610332578063a3f4df7e1461037f578063affed0e01461040f578063b74e452b1461043a578063b98a34de14610465578063d7bffc921461051e578063fce7379a14610583578063ffa1ad7414610616575b600080fd5b3480156100d657600080fd5b5061017160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506106a6565b005b34801561017f57600080fd5b50610188610745565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101e857600080fd5b506101f1610769565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561023f57600080fd5b506102ed600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291908035600019169060200190929190803560001916906020019092919050505061078f565b005b3480156102fb57600080fd5b50610330600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061084c565b005b34801561033e57600080fd5b5061037d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610911565b005b34801561038b57600080fd5b506103946109b8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103d45780820151818401526020810190506103b9565b50505050905090810190601f1680156104015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041b57600080fd5b506104246109f1565b6040518082815260200191505060405180910390f35b34801561044657600080fd5b5061044f6109f7565b6040518082815260200191505060405180910390f35b34801561047157600080fd5b50610500600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610a0f565b60405180826000191660001916815260200191505060405180910390f35b34801561052a57600080fd5b5061055f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bf2565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561058f57600080fd5b50610614600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c1c565b005b34801561062257600080fd5b5061062b610c2d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561066b578082015181840152602081019050610650565b50505050905090810190601f1680156106985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006106b0610c66565b600090505b82518110156107405781818151811015156106cc57fe5b906020019060200201516002600085848151811015156106e857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506106b5565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806107a0888888600354610a0f565b9150600182868686604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610819573d6000803e3d6000fd5b505050602060405103519050600160036000828254019250508190555061084281898989610cf0565b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156108ce57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561096d57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b60035481565b60006201518042811515610a0757fe5b064203905090565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184815260200183805190602001908083835b602083101515610baf5780518252602082019150602081019050602083039250610b8a565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200197505050505050505060405180910390209050949350505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b610c2833848484610cf0565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cad57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050506040513d6020811015610ddd57600080fd5b81019080805190602001909291905050501515610df957600080fd5b60008551148015610e0a5750600086115b80610e22575060008551118015610e215750600086145b5b1515610e2d57600080fd5b600085511415610e465760009350869250859150610ecb565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610eca57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610ef157600080fd5b600082111515610f0057600080fd5b610f0a84836110f4565b1515610f1557600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b021640a88888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561101f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561105f578082015181840152602081019050611044565b50505050905090810190601f16801561108c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156110ae57600080fd5b505af11580156110c2573d6000803e3d6000fd5b505050506040513d60208110156110d857600080fd5b8101908080519060200190929190505050505050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600201546111456109f7565b1115611166576111536109f7565b8160020181905550600081600101819055505b806000015483826001015401111580156111895750806001015483826001015401115b15611197576001915061119c565b600091505b50929150505600a165627a7a723058209acb3b25560df8e205af786b834cb0120a603a673ce06fbea511bee993d09cd90029", - "sourceMap": "241:1458:19:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;241:1458:19;;;;;;;", - "deployedSourceMap": "241:1458:19:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;991:222:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;441:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;441:67:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:8;;;;;;;;;;;;;;;;;;;;;;;;;;;874:346:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;874:346:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1441:158:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1441: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;307:20:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;307:20:19;;;;;;;;;;;;;;;;;;;;;;;4019:116:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4019:116:18;;;;;;;;;;;;;;;;;;;;;;;1471:226:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1471:226:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;586:50:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;586:50:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3287:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3287:146: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222;1104:9;1077:12;:10;:12::i;:::-;1116:1;1104:13;;1099:107;1123:6;:13;1119:1;:17;1099:107;;;1191:12;1204:1;1191:15;;;;;;;;;;;;;;;;;;1155:11;:22;1167:6;1174:1;1167:9;;;;;;;;;;;;;;;;;;1155:22;;;;;;;;;;;;;;;:33;;:51;;;;1138:3;;;;;;;1099:107;;;991:222;;;:::o;441:67::-;;;:::o;262:28:8:-;;;;;;;;;;;;;:::o;874:346:19:-;1013:23;1091:14;1039:42;1058:2;1062:5;1069:4;1075:5;;1039:18;:42::i;:::-;1013:68;;1108:35;1118:15;1135:1;1138;1141;1108:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1108:35:19;;;;;;;;1091:52;;1162:1;1153:5;;:10;;;;;;;;;;;1173:40;1189:6;1197:2;1201:5;1208:4;1173:15;:40::i;:::-;874:346;;;;;;;;:::o;626:208:6:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1441:158:18:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1582:10:18;1550:11;:18;1562:5;1550:18;;;;;;;;;;;;;;;:29;;:42;;;;1441:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;307:20:19:-;;;;:::o;4019:116:18:-;4081:4;4121:6;4115:3;:12;;;;;;;;4108:3;:20;4101:27;;4019:116;:::o;1471:226:19:-;1599:7;1644:4;1639:10;;1656:1;1651:7;;1660:4;1666:2;1670:5;1677:4;1683:6;1629:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;1629:61:19;;;;;;;;;;;;;;;;;;;;;;;;;;;1622:68;;1471:226;;;;;;:::o;586:50:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3287:146::-;3382:44;3398:10;3410:2;3414:5;3421:4;3382:15;:44::i;:::-;3287:146;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:8:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;1605:1298:18:-;1997:13;2020:16;2046:14;2233:25;1814:7;;;;;;;;;;;1801:29;;;1831:6;1801:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1801:37:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1801:37:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1801:37:18;;;;;;;;;;;;;;;;1793:46;;;;;;;;1939:1;1924:4;:11;:16;:29;;;;;1952:1;1944:5;:9;1924:29;:62;;;;1971:1;1957:4;:11;:15;:29;;;;;1985:1;1976:5;:10;1957:29;1924:62;1916:71;;;;;;;;2089:1;2074:4;:11;:16;2070:538;;;2114:1;2106:9;;2140:2;2129:13;;2165:5;2156:14;;2070:538;;;2217:2;2209:10;;2405:4;2399;2395:15;2389:22;2367:44;;2456:4;2450;2446:15;2440:22;2428:34;;2505:4;2499;2495:15;2489:22;2479:32;;2568:28;2546:50;;;:18;:50;;;;2538:59;;;;;;;;2070:538;2637:1;2625:8;:13;;;;2617:22;;;;;;;;2666:1;2657:6;:10;2649:19;;;;;;;;2750:27;2763:5;2770:6;2750:12;:27::i;:::-;2742:36;;;;;;;;2821:6;2788:11;:18;2800:5;2788:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2837:7;;;;;;;;;;;:21;;;2859:2;2863:5;2870:4;2876:19;2837:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2837:59:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2837:59:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2837:59:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2837:59:18;;;;;;;;;;;;;;;;;1605:1298;;;;;;;;:::o;3439:488::-;3526:4;3546:29;3578:11;:18;3590:5;3578:18;;;;;;;;;;;;;;;3546:50;;3620:10;:18;;;3610:7;:5;:7::i;:::-;:28;3606:126;;;3675:7;:5;:7::i;:::-;3654:10;:18;;:28;;;;3720:1;3696:10;:21;;:25;;;;3606:126;3782:10;:21;;;3772:6;3748:10;:21;;;:30;:55;;:125;;;;;3852:10;:21;;;3843:6;3819:10;:21;;;:30;:54;3748:125;3741:157;;;3894:4;3887:11;;;;3741:157;3915:5;3908:12;;3439:488;;;;;;:::o", + "bytecode": "0x608060405234801561001057600080fd5b506111d9806100206000396000f3006080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100ca578063430e47f814610173578063481c6a75146101dc5780634bedd30f146102335780637de7edef146102ef57806381c5e03b14610332578063a3f4df7e1461037f578063affed0e01461040f578063b74e452b1461043a578063b98a34de14610465578063d7bffc921461051e578063fce7379a14610583578063ffa1ad7414610616575b600080fd5b3480156100d657600080fd5b5061017160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506106a6565b005b34801561017f57600080fd5b50610188610745565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101e857600080fd5b506101f1610769565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561023f57600080fd5b506102ed600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291908035600019169060200190929190803560001916906020019092919050505061078f565b005b3480156102fb57600080fd5b50610330600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061084c565b005b34801561033e57600080fd5b5061037d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610911565b005b34801561038b57600080fd5b506103946109b8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103d45780820151818401526020810190506103b9565b50505050905090810190601f1680156104015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041b57600080fd5b506104246109f1565b6040518082815260200191505060405180910390f35b34801561044657600080fd5b5061044f6109f7565b6040518082815260200191505060405180910390f35b34801561047157600080fd5b50610500600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610a0f565b60405180826000191660001916815260200191505060405180910390f35b34801561052a57600080fd5b5061055f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bf2565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561058f57600080fd5b50610614600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c1c565b005b34801561062257600080fd5b5061062b610c2d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561066b578082015181840152602081019050610650565b50505050905090810190601f1680156106985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006106b0610c66565b600090505b82518110156107405781818151811015156106cc57fe5b906020019060200201516002600085848151811015156106e857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506106b5565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806107a0888888600354610a0f565b9150600182868686604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610819573d6000803e3d6000fd5b505050602060405103519050600160036000828254019250508190555061084281898989610cf0565b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156108ce57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561096d57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b60035481565b60006201518042811515610a0757fe5b064203905090565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184815260200183805190602001908083835b602083101515610baf5780518252602082019150602081019050602083039250610b8a565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200197505050505050505060405180910390209050949350505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b610c2833848484610cf0565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cad57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050506040513d6020811015610ddd57600080fd5b81019080805190602001909291905050501515610df957600080fd5b60008551148015610e0a5750600086115b80610e22575060008551118015610e215750600086145b5b1515610e2d57600080fd5b600085511415610e465760009350869250859150610ecb565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610eca57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610ef157600080fd5b600082111515610f0057600080fd5b610f0a84836110fe565b1515610f1557600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a788888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561101f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561105f578082015181840152602081019050611044565b50505050905090810190601f16801561108c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156110ae57600080fd5b505af11580156110c2573d6000803e3d6000fd5b505050506040513d60208110156110d857600080fd5b810190808051906020019092919050505015156110f457600080fd5b5050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806002015461114f6109f7565b11156111705761115d6109f7565b8160020181905550600081600101819055505b806000015483826001015401111580156111935750806001015483826001015401115b156111a157600191506111a6565b600091505b50929150505600a165627a7a723058206053bd547ec094a1d800289a5c392f5dd89e41cd33f47d9a2cbbbcd1c14c52670029", + "deployedBytecode": "0x6080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100ca578063430e47f814610173578063481c6a75146101dc5780634bedd30f146102335780637de7edef146102ef57806381c5e03b14610332578063a3f4df7e1461037f578063affed0e01461040f578063b74e452b1461043a578063b98a34de14610465578063d7bffc921461051e578063fce7379a14610583578063ffa1ad7414610616575b600080fd5b3480156100d657600080fd5b5061017160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506106a6565b005b34801561017f57600080fd5b50610188610745565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101e857600080fd5b506101f1610769565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561023f57600080fd5b506102ed600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291908035600019169060200190929190803560001916906020019092919050505061078f565b005b3480156102fb57600080fd5b50610330600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061084c565b005b34801561033e57600080fd5b5061037d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610911565b005b34801561038b57600080fd5b506103946109b8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103d45780820151818401526020810190506103b9565b50505050905090810190601f1680156104015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041b57600080fd5b506104246109f1565b6040518082815260200191505060405180910390f35b34801561044657600080fd5b5061044f6109f7565b6040518082815260200191505060405180910390f35b34801561047157600080fd5b50610500600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610a0f565b60405180826000191660001916815260200191505060405180910390f35b34801561052a57600080fd5b5061055f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bf2565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561058f57600080fd5b50610614600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c1c565b005b34801561062257600080fd5b5061062b610c2d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561066b578082015181840152602081019050610650565b50505050905090810190601f1680156106985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006106b0610c66565b600090505b82518110156107405781818151811015156106cc57fe5b906020019060200201516002600085848151811015156106e857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506106b5565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806107a0888888600354610a0f565b9150600182868686604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610819573d6000803e3d6000fd5b505050602060405103519050600160036000828254019250508190555061084281898989610cf0565b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156108ce57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561096d57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b60035481565b60006201518042811515610a0757fe5b064203905090565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184815260200183805190602001908083835b602083101515610baf5780518252602082019150602081019050602083039250610b8a565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200197505050505050505060405180910390209050949350505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b610c2833848484610cf0565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cad57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050506040513d6020811015610ddd57600080fd5b81019080805190602001909291905050501515610df957600080fd5b60008551148015610e0a5750600086115b80610e22575060008551118015610e215750600086145b5b1515610e2d57600080fd5b600085511415610e465760009350869250859150610ecb565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610eca57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610ef157600080fd5b600082111515610f0057600080fd5b610f0a84836110fe565b1515610f1557600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a788888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561101f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561105f578082015181840152602081019050611044565b50505050905090810190601f16801561108c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156110ae57600080fd5b505af11580156110c2573d6000803e3d6000fd5b505050506040513d60208110156110d857600080fd5b810190808051906020019092919050505015156110f457600080fd5b5050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806002015461114f6109f7565b11156111705761115d6109f7565b8160020181905550600081600101819055505b806000015483826001015401111580156111935750806001015483826001015401115b156111a157600191506111a6565b600091505b50929150505600a165627a7a723058206053bd547ec094a1d800289a5c392f5dd89e41cd33f47d9a2cbbbcd1c14c52670029", + "sourceMap": "241:1458:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;241:1458:11;;;;;;;", + "deployedSourceMap": "241:1458:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;991:222:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;441:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;441:67:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;874:346:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;874:346:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1441:158:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1441:158:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;307:20:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;307:20:11;;;;;;;;;;;;;;;;;;;;;;;4040:116:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4040:116:10;;;;;;;;;;;;;;;;;;;;;;;1471:226:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1471:226:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;586:50:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;586:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3308:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3308:146:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:40:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222;1104:9;1077:12;:10;:12::i;:::-;1116:1;1104:13;;1099:107;1123:6;:13;1119:1;:17;1099:107;;;1191:12;1204:1;1191:15;;;;;;;;;;;;;;;;;;1155:11;:22;1167:6;1174:1;1167:9;;;;;;;;;;;;;;;;;;1155:22;;;;;;;;;;;;;;;:33;;:51;;;;1138:3;;;;;;;1099:107;;;991:222;;;:::o;441:67::-;;;:::o;262:28:5:-;;;;;;;;;;;;;:::o;874:346:11:-;1013:23;1091:14;1039:42;1058:2;1062:5;1069:4;1075:5;;1039:18;:42::i;:::-;1013:68;;1108:35;1118:15;1135:1;1138;1141;1108:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1108:35:11;;;;;;;;1091:52;;1162:1;1153:5;;:10;;;;;;;;;;;1173:40;1189:6;1197:2;1201:5;1208:4;1173:15;:40::i;:::-;874:346;;;;;;;;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1441:158:10:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1582:10:10;1550:11;:18;1562:5;1550:18;;;;;;;;;;;;;;;:29;;:42;;;;1441:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;307:20:11:-;;;;:::o;4040:116:10:-;4102:4;4142:6;4136:3;:12;;;;;;;;4129:3;:20;4122:27;;4040:116;:::o;1471:226:11:-;1599:7;1644:4;1639:10;;1656:1;1651:7;;1660:4;1666:2;1670:5;1677:4;1683:6;1629:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;1629:61:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1622:68;;1471:226;;;;;;:::o;586:50:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3308:146::-;3403:44;3419:10;3431:2;3435:5;3442:4;3403:15;:44::i;:::-;3308:146;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:5:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;1605:1319:10:-;1997:13;2020:16;2046:14;2233:25;1814:7;;;;;;;;;;;1801:29;;;1831:6;1801:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1801:37:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1801:37:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1801:37:10;;;;;;;;;;;;;;;;1793:46;;;;;;;;1939:1;1924:4;:11;:16;:29;;;;;1952:1;1944:5;:9;1924:29;:62;;;;1971:1;1957:4;:11;:15;:29;;;;;1985:1;1976:5;:10;1957:29;1924:62;1916:71;;;;;;;;2089:1;2074:4;:11;:16;2070:538;;;2114:1;2106:9;;2140:2;2129:13;;2165:5;2156:14;;2070:538;;;2217:2;2209:10;;2405:4;2399;2395:15;2389:22;2367:44;;2456:4;2450;2446:15;2440:22;2428:34;;2505:4;2499;2495:15;2489:22;2479:32;;2568:28;2546:50;;;:18;:50;;;;2538:59;;;;;;;;2070:538;2637:1;2625:8;:13;;;;2617:22;;;;;;;;2666:1;2657:6;:10;2649:19;;;;;;;;2750:27;2763:5;2770:6;2750:12;:27::i;:::-;2742:36;;;;;;;;2821:6;2788:11;:18;2800:5;2788:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2845:7;;;;;;;;;;;:33;;;2879:2;2883:5;2890:4;2896:19;2845: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;2845:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2845:71:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2845:71:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2845:71:10;;;;;;;;;;;;;;;;2837:80;;;;;;;;1605:1319;;;;;;;;:::o;3460:488::-;3547:4;3567:29;3599:11;:18;3611:5;3599:18;;;;;;;;;;;;;;;3567:50;;3641:10;:18;;;3631:7;:5;:7::i;:::-;:28;3627:126;;;3696:7;:5;:7::i;:::-;3675:10;:18;;:28;;;;3741:1;3717:10;:21;;:25;;;;3627:126;3803:10;:21;;;3793:6;3769:10;:21;;;:30;:55;;:125;;;;;3873:10;:21;;;3864:6;3840:10;:21;;;:30;:54;3769:125;3762:157;;;3915:4;3908:11;;;;3762:157;3936:5;3929:12;;3460:488;;;;;;:::o", "source": "pragma solidity 0.4.23;\nimport \"./DailyLimitModule.sol\";\n\n\n/// @title Daily Limit Module With Signature - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Richard Meissner - \ncontract DailyLimitModuleWithSignature is DailyLimitModule {\n\n uint256 public nonce;\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n /// @param value Ether value in case of an Ether transfer.\n /// @param data Encoded token transfer. Empty in case of Ether transfer.\n /// @param v Part of the signature of the sender.\n /// @param r Part of the signature of the sender.\n /// @param s Part of the signature of the sender.\n /// @return Returns if transaction can be executed.\n function executeDailyLimitWithSignature(address to, uint256 value, bytes data, uint8 v, bytes32 r, bytes32 s)\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, nonce);\n address sender = ecrecover(transactionHash, v, r, s);\n nonce += 1;\n executeInternal(sender, to, value, data);\n }\n\n /// @dev Returns transactions hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(address to, uint256 value, bytes data, uint256 _nonce)\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), byte(0), this, to, value, data, _nonce);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModuleWithSignature.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModuleWithSignature.sol", "exportedSymbols": { "DailyLimitModuleWithSignature": [ - 2045 + 1775 ] }, - "id": 2046, + "id": 1776, "nodeType": "SourceUnit", "nodes": [ { - "id": 1966, + "id": 1696, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:19" + "src": "0:23:11" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "file": "./DailyLimitModule.sol", - "id": 1967, + "id": 1697, "nodeType": "ImportDirective", - "scope": 2046, - "sourceUnit": 1965, - "src": "24:32:19", + "scope": 1776, + "sourceUnit": 1695, + "src": "24:32:11", "symbolAliases": [], "unitAlias": "" }, @@ -293,48 +293,48 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1968, + "id": 1698, "name": "DailyLimitModule", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1964, - "src": "283:16:19", + "referencedDeclaration": 1694, + "src": "283:16:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitModule_$1964", + "typeIdentifier": "t_contract$_DailyLimitModule_$1694", "typeString": "contract DailyLimitModule" } }, - "id": 1969, + "id": 1699, "nodeType": "InheritanceSpecifier", - "src": "283:16:19" + "src": "283:16:11" } ], "contractDependencies": [ - 779, - 877, - 1559, - 1964 + 580, + 621, + 1359, + 1694 ], "contractKind": "contract", "documentation": "@title Daily Limit Module With Signature - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 2045, + "id": 1775, "linearizedBaseContracts": [ - 2045, - 1964, - 877, - 779, - 1559 + 1775, + 1694, + 621, + 580, + 1359 ], "name": "DailyLimitModuleWithSignature", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1971, + "id": 1701, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 2045, - "src": "307:20:19", + "scope": 1775, + "src": "307:20:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -342,10 +342,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1970, + "id": 1700, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "307:7:19", + "src": "307:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -356,22 +356,22 @@ }, { "body": { - "id": 2015, + "id": 1745, "nodeType": "Block", - "src": "1003:217:19", + "src": "1003:217:11", "statements": [ { "assignments": [ - 1987 + 1717 ], "declarations": [ { "constant": false, - "id": 1987, + "id": 1717, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 2016, - "src": "1013:23:19", + "scope": 1746, + "src": "1013:23:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -379,10 +379,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1986, + "id": 1716, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1013:7:19", + "src": "1013:7:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -392,18 +392,18 @@ "visibility": "internal" } ], - "id": 1994, + "id": 1724, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1989, + "id": 1719, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1973, - "src": "1058:2:19", + "referencedDeclaration": 1703, + "src": "1058:2:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -411,12 +411,12 @@ }, { "argumentTypes": null, - "id": 1990, + "id": 1720, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1975, - "src": "1062:5:19", + "referencedDeclaration": 1705, + "src": "1062:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -424,12 +424,12 @@ }, { "argumentTypes": null, - "id": 1991, + "id": 1721, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1977, - "src": "1069:4:19", + "referencedDeclaration": 1707, + "src": "1069:4:11", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -437,12 +437,12 @@ }, { "argumentTypes": null, - "id": 1992, + "id": 1722, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1971, - "src": "1075:5:19", + "referencedDeclaration": 1701, + "src": "1075:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -468,18 +468,18 @@ "typeString": "uint256" } ], - "id": 1988, + "id": 1718, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "1039:18:19", + "referencedDeclaration": 1774, + "src": "1039:18:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,uint256) view returns (bytes32)" } }, - "id": 1993, + "id": 1723, "isConstant": false, "isLValue": false, "isPure": false, @@ -487,27 +487,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1039:42:19", + "src": "1039:42:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "1013:68:19" + "src": "1013:68:11" }, { "assignments": [ - 1996 + 1726 ], "declarations": [ { "constant": false, - "id": 1996, + "id": 1726, "name": "sender", "nodeType": "VariableDeclaration", - "scope": 2016, - "src": "1091:14:19", + "scope": 1746, + "src": "1091:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -515,10 +515,10 @@ "typeString": "address" }, "typeName": { - "id": 1995, + "id": 1725, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1091:7:19", + "src": "1091:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -528,18 +528,18 @@ "visibility": "internal" } ], - "id": 2003, + "id": 1733, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1998, + "id": 1728, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1987, - "src": "1118:15:19", + "referencedDeclaration": 1717, + "src": "1118:15:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -547,12 +547,12 @@ }, { "argumentTypes": null, - "id": 1999, + "id": 1729, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1979, - "src": "1135:1:19", + "referencedDeclaration": 1709, + "src": "1135:1:11", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -560,12 +560,12 @@ }, { "argumentTypes": null, - "id": 2000, + "id": 1730, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1981, - "src": "1138:1:19", + "referencedDeclaration": 1711, + "src": "1138:1:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -573,12 +573,12 @@ }, { "argumentTypes": null, - "id": 2001, + "id": 1731, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1983, - "src": "1141:1:19", + "referencedDeclaration": 1713, + "src": "1141:1:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -604,18 +604,18 @@ "typeString": "bytes32" } ], - "id": 1997, + "id": 1727, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2457, - "src": "1108:9:19", + "referencedDeclaration": 2388, + "src": "1108:9:11", "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": 2002, + "id": 1732, "isConstant": false, "isLValue": false, "isPure": false, @@ -623,31 +623,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1108:35:19", + "src": "1108:35:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1091:52:19" + "src": "1091:52:11" }, { "expression": { "argumentTypes": null, - "id": 2006, + "id": 1736, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2004, + "id": 1734, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1971, - "src": "1153:5:19", + "referencedDeclaration": 1701, + "src": "1153:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -658,14 +658,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 2005, + "id": 1735, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1162:1:19", + "src": "1162:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -673,15 +673,15 @@ }, "value": "1" }, - "src": "1153:10:19", + "src": "1153:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2007, + "id": 1737, "nodeType": "ExpressionStatement", - "src": "1153:10:19" + "src": "1153:10:11" }, { "expression": { @@ -689,12 +689,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2009, + "id": 1739, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1996, - "src": "1189:6:19", + "referencedDeclaration": 1726, + "src": "1189:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -702,12 +702,12 @@ }, { "argumentTypes": null, - "id": 2010, + "id": 1740, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1973, - "src": "1197:2:19", + "referencedDeclaration": 1703, + "src": "1197:2:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -715,12 +715,12 @@ }, { "argumentTypes": null, - "id": 2011, + "id": 1741, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1975, - "src": "1201:5:19", + "referencedDeclaration": 1705, + "src": "1201:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -728,12 +728,12 @@ }, { "argumentTypes": null, - "id": 2012, + "id": 1742, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1977, - "src": "1208:4:19", + "referencedDeclaration": 1707, + "src": "1208:4:11", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -759,18 +759,18 @@ "typeString": "bytes memory" } ], - "id": 2008, + "id": 1738, "name": "executeInternal", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1876, - "src": "1173:15:19", + "referencedDeclaration": 1606, + "src": "1173:15:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)" } }, - "id": 2013, + "id": 1743, "isConstant": false, "isLValue": false, "isPure": false, @@ -778,20 +778,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1173:40:19", + "src": "1173:40:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2014, + "id": 1744, "nodeType": "ExpressionStatement", - "src": "1173:40:19" + "src": "1173:40:11" } ] }, "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n @param value Ether value in case of an Ether transfer.\n @param data Encoded token transfer. Empty in case of Ether transfer.\n @param v Part of the signature of the sender.\n @param r Part of the signature of the sender.\n @param s Part of the signature of the sender.\n @return Returns if transaction can be executed.", - "id": 2016, + "id": 1746, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -799,16 +799,16 @@ "name": "executeDailyLimitWithSignature", "nodeType": "FunctionDefinition", "parameters": { - "id": 1984, + "id": 1714, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1973, + "id": 1703, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2016, - "src": "914:10:19", + "scope": 1746, + "src": "914:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -816,10 +816,10 @@ "typeString": "address" }, "typeName": { - "id": 1972, + "id": 1702, "name": "address", "nodeType": "ElementaryTypeName", - "src": "914:7:19", + "src": "914:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -830,11 +830,11 @@ }, { "constant": false, - "id": 1975, + "id": 1705, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2016, - "src": "926:13:19", + "scope": 1746, + "src": "926:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -842,10 +842,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1974, + "id": 1704, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "926:7:19", + "src": "926:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -856,11 +856,11 @@ }, { "constant": false, - "id": 1977, + "id": 1707, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2016, - "src": "941:10:19", + "scope": 1746, + "src": "941:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -868,10 +868,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1976, + "id": 1706, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "941:5:19", + "src": "941:5:11", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -882,11 +882,11 @@ }, { "constant": false, - "id": 1979, + "id": 1709, "name": "v", "nodeType": "VariableDeclaration", - "scope": 2016, - "src": "953:7:19", + "scope": 1746, + "src": "953:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -894,10 +894,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1978, + "id": 1708, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "953:5:19", + "src": "953:5:11", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -908,11 +908,11 @@ }, { "constant": false, - "id": 1981, + "id": 1711, "name": "r", "nodeType": "VariableDeclaration", - "scope": 2016, - "src": "962:9:19", + "scope": 1746, + "src": "962:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -920,10 +920,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1980, + "id": 1710, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "962:7:19", + "src": "962:7:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -934,11 +934,11 @@ }, { "constant": false, - "id": 1983, + "id": 1713, "name": "s", "nodeType": "VariableDeclaration", - "scope": 2016, - "src": "973:9:19", + "scope": 1746, + "src": "973:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -946,10 +946,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1982, + "id": 1712, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "973:7:19", + "src": "973:7:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -959,26 +959,26 @@ "visibility": "internal" } ], - "src": "913:70:19" + "src": "913:70:11" }, "payable": false, "returnParameters": { - "id": 1985, + "id": 1715, "nodeType": "ParameterList", "parameters": [], - "src": "1003:0:19" + "src": "1003:0:11" }, - "scope": 2045, - "src": "874:346:19", + "scope": 1775, + "src": "874:346:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2043, + "id": 1773, "nodeType": "Block", - "src": "1612:85:19", + "src": "1612:85:11", "statements": [ { "expression": { @@ -990,14 +990,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 2031, + "id": 1761, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1644:4:19", + "src": "1644:4:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -1013,20 +1013,20 @@ "typeString": "int_const 25" } ], - "id": 2030, + "id": 1760, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1639:4:19", + "src": "1639:4:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 2032, + "id": 1762, "isConstant": false, "isLValue": false, "isPure": true, @@ -1034,7 +1034,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1639:10:19", + "src": "1639:10:11", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -1046,14 +1046,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 2034, + "id": 1764, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1656:1:19", + "src": "1656:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1069,20 +1069,20 @@ "typeString": "int_const 0" } ], - "id": 2033, + "id": 1763, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1651:4:19", + "src": "1651:4:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 2035, + "id": 1765, "isConstant": false, "isLValue": false, "isPure": true, @@ -1090,7 +1090,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1651:7:19", + "src": "1651:7:11", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -1098,25 +1098,25 @@ }, { "argumentTypes": null, - "id": 2036, + "id": 1766, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2516, - "src": "1660:4:19", + "referencedDeclaration": 2431, + "src": "1660:4:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$2045", + "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$1775", "typeString": "contract DailyLimitModuleWithSignature" } }, { "argumentTypes": null, - "id": 2037, + "id": 1767, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2018, - "src": "1666:2:19", + "referencedDeclaration": 1748, + "src": "1666:2:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1124,12 +1124,12 @@ }, { "argumentTypes": null, - "id": 2038, + "id": 1768, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2020, - "src": "1670:5:19", + "referencedDeclaration": 1750, + "src": "1670:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1137,12 +1137,12 @@ }, { "argumentTypes": null, - "id": 2039, + "id": 1769, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2022, - "src": "1677:4:19", + "referencedDeclaration": 1752, + "src": "1677:4:11", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1150,12 +1150,12 @@ }, { "argumentTypes": null, - "id": 2040, + "id": 1770, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2024, - "src": "1683:6:19", + "referencedDeclaration": 1754, + "src": "1683:6:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1173,7 +1173,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$2045", + "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$1775", "typeString": "contract DailyLimitModuleWithSignature" }, { @@ -1193,18 +1193,18 @@ "typeString": "uint256" } ], - "id": 2029, + "id": 1759, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2459, - "src": "1629:9:19", + "referencedDeclaration": 2390, + "src": "1629:9:11", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2041, + "id": 1771, "isConstant": false, "isLValue": false, "isPure": false, @@ -1212,21 +1212,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1629:61:19", + "src": "1629:61:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2028, - "id": 2042, + "functionReturnParameters": 1758, + "id": 1772, "nodeType": "Return", - "src": "1622:68:19" + "src": "1622:68:11" } ] }, "documentation": "@dev Returns transactions hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param _nonce Transaction nonce.\n @return Transaction hash.", - "id": 2044, + "id": 1774, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -1234,16 +1234,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2025, + "id": 1755, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2018, + "id": 1748, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2044, - "src": "1499:10:19", + "scope": 1774, + "src": "1499:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1251,10 +1251,10 @@ "typeString": "address" }, "typeName": { - "id": 2017, + "id": 1747, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1499:7:19", + "src": "1499:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1265,11 +1265,11 @@ }, { "constant": false, - "id": 2020, + "id": 1750, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2044, - "src": "1511:13:19", + "scope": 1774, + "src": "1511:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1277,10 +1277,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2019, + "id": 1749, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1511:7:19", + "src": "1511:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1291,11 +1291,11 @@ }, { "constant": false, - "id": 2022, + "id": 1752, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2044, - "src": "1526:10:19", + "scope": 1774, + "src": "1526:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1303,10 +1303,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2021, + "id": 1751, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1526:5:19", + "src": "1526:5:11", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1317,11 +1317,11 @@ }, { "constant": false, - "id": 2024, + "id": 1754, "name": "_nonce", "nodeType": "VariableDeclaration", - "scope": 2044, - "src": "1538:14:19", + "scope": 1774, + "src": "1538:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1329,10 +1329,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2023, + "id": 1753, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1538:7:19", + "src": "1538:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1342,20 +1342,20 @@ "visibility": "internal" } ], - "src": "1498:55:19" + "src": "1498:55:11" }, "payable": false, "returnParameters": { - "id": 2028, + "id": 1758, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2027, + "id": 1757, "name": "", "nodeType": "VariableDeclaration", - "scope": 2044, - "src": "1599:7:19", + "scope": 1774, + "src": "1599:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1363,10 +1363,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2026, + "id": 1756, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1599:7:19", + "src": "1599:7:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1376,49 +1376,49 @@ "visibility": "internal" } ], - "src": "1598:9:19" + "src": "1598:9:11" }, - "scope": 2045, - "src": "1471:226:19", + "scope": 1775, + "src": "1471:226:11", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 2046, - "src": "241:1458:19" + "scope": 1776, + "src": "241:1458:11" } ], - "src": "0:1700:19" + "src": "0:1700:11" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModuleWithSignature.sol", "exportedSymbols": { "DailyLimitModuleWithSignature": [ - 2045 + 1775 ] }, - "id": 2046, + "id": 1776, "nodeType": "SourceUnit", "nodes": [ { - "id": 1966, + "id": 1696, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:19" + "src": "0:23:11" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "file": "./DailyLimitModule.sol", - "id": 1967, + "id": 1697, "nodeType": "ImportDirective", - "scope": 2046, - "sourceUnit": 1965, - "src": "24:32:19", + "scope": 1776, + "sourceUnit": 1695, + "src": "24:32:11", "symbolAliases": [], "unitAlias": "" }, @@ -1428,48 +1428,48 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1968, + "id": 1698, "name": "DailyLimitModule", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1964, - "src": "283:16:19", + "referencedDeclaration": 1694, + "src": "283:16:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitModule_$1964", + "typeIdentifier": "t_contract$_DailyLimitModule_$1694", "typeString": "contract DailyLimitModule" } }, - "id": 1969, + "id": 1699, "nodeType": "InheritanceSpecifier", - "src": "283:16:19" + "src": "283:16:11" } ], "contractDependencies": [ - 779, - 877, - 1559, - 1964 + 580, + 621, + 1359, + 1694 ], "contractKind": "contract", "documentation": "@title Daily Limit Module With Signature - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 2045, + "id": 1775, "linearizedBaseContracts": [ - 2045, - 1964, - 877, - 779, - 1559 + 1775, + 1694, + 621, + 580, + 1359 ], "name": "DailyLimitModuleWithSignature", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1971, + "id": 1701, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 2045, - "src": "307:20:19", + "scope": 1775, + "src": "307:20:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1477,10 +1477,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1970, + "id": 1700, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "307:7:19", + "src": "307:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1491,22 +1491,22 @@ }, { "body": { - "id": 2015, + "id": 1745, "nodeType": "Block", - "src": "1003:217:19", + "src": "1003:217:11", "statements": [ { "assignments": [ - 1987 + 1717 ], "declarations": [ { "constant": false, - "id": 1987, + "id": 1717, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 2016, - "src": "1013:23:19", + "scope": 1746, + "src": "1013:23:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1514,10 +1514,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1986, + "id": 1716, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1013:7:19", + "src": "1013:7:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1527,18 +1527,18 @@ "visibility": "internal" } ], - "id": 1994, + "id": 1724, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1989, + "id": 1719, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1973, - "src": "1058:2:19", + "referencedDeclaration": 1703, + "src": "1058:2:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1546,12 +1546,12 @@ }, { "argumentTypes": null, - "id": 1990, + "id": 1720, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1975, - "src": "1062:5:19", + "referencedDeclaration": 1705, + "src": "1062:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1559,12 +1559,12 @@ }, { "argumentTypes": null, - "id": 1991, + "id": 1721, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1977, - "src": "1069:4:19", + "referencedDeclaration": 1707, + "src": "1069:4:11", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1572,12 +1572,12 @@ }, { "argumentTypes": null, - "id": 1992, + "id": 1722, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1971, - "src": "1075:5:19", + "referencedDeclaration": 1701, + "src": "1075:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1603,18 +1603,18 @@ "typeString": "uint256" } ], - "id": 1988, + "id": 1718, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "1039:18:19", + "referencedDeclaration": 1774, + "src": "1039:18:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,uint256) view returns (bytes32)" } }, - "id": 1993, + "id": 1723, "isConstant": false, "isLValue": false, "isPure": false, @@ -1622,27 +1622,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1039:42:19", + "src": "1039:42:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "1013:68:19" + "src": "1013:68:11" }, { "assignments": [ - 1996 + 1726 ], "declarations": [ { "constant": false, - "id": 1996, + "id": 1726, "name": "sender", "nodeType": "VariableDeclaration", - "scope": 2016, - "src": "1091:14:19", + "scope": 1746, + "src": "1091:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1650,10 +1650,10 @@ "typeString": "address" }, "typeName": { - "id": 1995, + "id": 1725, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1091:7:19", + "src": "1091:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1663,18 +1663,18 @@ "visibility": "internal" } ], - "id": 2003, + "id": 1733, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1998, + "id": 1728, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1987, - "src": "1118:15:19", + "referencedDeclaration": 1717, + "src": "1118:15:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1682,12 +1682,12 @@ }, { "argumentTypes": null, - "id": 1999, + "id": 1729, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1979, - "src": "1135:1:19", + "referencedDeclaration": 1709, + "src": "1135:1:11", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1695,12 +1695,12 @@ }, { "argumentTypes": null, - "id": 2000, + "id": 1730, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1981, - "src": "1138:1:19", + "referencedDeclaration": 1711, + "src": "1138:1:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1708,12 +1708,12 @@ }, { "argumentTypes": null, - "id": 2001, + "id": 1731, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1983, - "src": "1141:1:19", + "referencedDeclaration": 1713, + "src": "1141:1:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1739,18 +1739,18 @@ "typeString": "bytes32" } ], - "id": 1997, + "id": 1727, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2457, - "src": "1108:9:19", + "referencedDeclaration": 2388, + "src": "1108:9:11", "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": 2002, + "id": 1732, "isConstant": false, "isLValue": false, "isPure": false, @@ -1758,31 +1758,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1108:35:19", + "src": "1108:35:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1091:52:19" + "src": "1091:52:11" }, { "expression": { "argumentTypes": null, - "id": 2006, + "id": 1736, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2004, + "id": 1734, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1971, - "src": "1153:5:19", + "referencedDeclaration": 1701, + "src": "1153:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1793,14 +1793,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 2005, + "id": 1735, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1162:1:19", + "src": "1162:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -1808,15 +1808,15 @@ }, "value": "1" }, - "src": "1153:10:19", + "src": "1153:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2007, + "id": 1737, "nodeType": "ExpressionStatement", - "src": "1153:10:19" + "src": "1153:10:11" }, { "expression": { @@ -1824,12 +1824,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2009, + "id": 1739, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1996, - "src": "1189:6:19", + "referencedDeclaration": 1726, + "src": "1189:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1837,12 +1837,12 @@ }, { "argumentTypes": null, - "id": 2010, + "id": 1740, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1973, - "src": "1197:2:19", + "referencedDeclaration": 1703, + "src": "1197:2:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1850,12 +1850,12 @@ }, { "argumentTypes": null, - "id": 2011, + "id": 1741, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1975, - "src": "1201:5:19", + "referencedDeclaration": 1705, + "src": "1201:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1863,12 +1863,12 @@ }, { "argumentTypes": null, - "id": 2012, + "id": 1742, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1977, - "src": "1208:4:19", + "referencedDeclaration": 1707, + "src": "1208:4:11", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1894,18 +1894,18 @@ "typeString": "bytes memory" } ], - "id": 2008, + "id": 1738, "name": "executeInternal", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1876, - "src": "1173:15:19", + "referencedDeclaration": 1606, + "src": "1173:15:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)" } }, - "id": 2013, + "id": 1743, "isConstant": false, "isLValue": false, "isPure": false, @@ -1913,20 +1913,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1173:40:19", + "src": "1173:40:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2014, + "id": 1744, "nodeType": "ExpressionStatement", - "src": "1173:40:19" + "src": "1173:40:11" } ] }, "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n @param value Ether value in case of an Ether transfer.\n @param data Encoded token transfer. Empty in case of Ether transfer.\n @param v Part of the signature of the sender.\n @param r Part of the signature of the sender.\n @param s Part of the signature of the sender.\n @return Returns if transaction can be executed.", - "id": 2016, + "id": 1746, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1934,16 +1934,16 @@ "name": "executeDailyLimitWithSignature", "nodeType": "FunctionDefinition", "parameters": { - "id": 1984, + "id": 1714, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1973, + "id": 1703, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2016, - "src": "914:10:19", + "scope": 1746, + "src": "914:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1951,10 +1951,10 @@ "typeString": "address" }, "typeName": { - "id": 1972, + "id": 1702, "name": "address", "nodeType": "ElementaryTypeName", - "src": "914:7:19", + "src": "914:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1965,11 +1965,11 @@ }, { "constant": false, - "id": 1975, + "id": 1705, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2016, - "src": "926:13:19", + "scope": 1746, + "src": "926:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1977,10 +1977,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1974, + "id": 1704, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "926:7:19", + "src": "926:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1991,11 +1991,11 @@ }, { "constant": false, - "id": 1977, + "id": 1707, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2016, - "src": "941:10:19", + "scope": 1746, + "src": "941:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2003,10 +2003,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1976, + "id": 1706, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "941:5:19", + "src": "941:5:11", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2017,11 +2017,11 @@ }, { "constant": false, - "id": 1979, + "id": 1709, "name": "v", "nodeType": "VariableDeclaration", - "scope": 2016, - "src": "953:7:19", + "scope": 1746, + "src": "953:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2029,10 +2029,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1978, + "id": 1708, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "953:5:19", + "src": "953:5:11", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2043,11 +2043,11 @@ }, { "constant": false, - "id": 1981, + "id": 1711, "name": "r", "nodeType": "VariableDeclaration", - "scope": 2016, - "src": "962:9:19", + "scope": 1746, + "src": "962:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2055,10 +2055,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1980, + "id": 1710, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "962:7:19", + "src": "962:7:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2069,11 +2069,11 @@ }, { "constant": false, - "id": 1983, + "id": 1713, "name": "s", "nodeType": "VariableDeclaration", - "scope": 2016, - "src": "973:9:19", + "scope": 1746, + "src": "973:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2081,10 +2081,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1982, + "id": 1712, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "973:7:19", + "src": "973:7:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2094,26 +2094,26 @@ "visibility": "internal" } ], - "src": "913:70:19" + "src": "913:70:11" }, "payable": false, "returnParameters": { - "id": 1985, + "id": 1715, "nodeType": "ParameterList", "parameters": [], - "src": "1003:0:19" + "src": "1003:0:11" }, - "scope": 2045, - "src": "874:346:19", + "scope": 1775, + "src": "874:346:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2043, + "id": 1773, "nodeType": "Block", - "src": "1612:85:19", + "src": "1612:85:11", "statements": [ { "expression": { @@ -2125,14 +2125,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 2031, + "id": 1761, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1644:4:19", + "src": "1644:4:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -2148,20 +2148,20 @@ "typeString": "int_const 25" } ], - "id": 2030, + "id": 1760, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1639:4:19", + "src": "1639:4:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 2032, + "id": 1762, "isConstant": false, "isLValue": false, "isPure": true, @@ -2169,7 +2169,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1639:10:19", + "src": "1639:10:11", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -2181,14 +2181,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 2034, + "id": 1764, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1656:1:19", + "src": "1656:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2204,20 +2204,20 @@ "typeString": "int_const 0" } ], - "id": 2033, + "id": 1763, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1651:4:19", + "src": "1651:4:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 2035, + "id": 1765, "isConstant": false, "isLValue": false, "isPure": true, @@ -2225,7 +2225,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1651:7:19", + "src": "1651:7:11", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -2233,25 +2233,25 @@ }, { "argumentTypes": null, - "id": 2036, + "id": 1766, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2516, - "src": "1660:4:19", + "referencedDeclaration": 2431, + "src": "1660:4:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$2045", + "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$1775", "typeString": "contract DailyLimitModuleWithSignature" } }, { "argumentTypes": null, - "id": 2037, + "id": 1767, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2018, - "src": "1666:2:19", + "referencedDeclaration": 1748, + "src": "1666:2:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2259,12 +2259,12 @@ }, { "argumentTypes": null, - "id": 2038, + "id": 1768, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2020, - "src": "1670:5:19", + "referencedDeclaration": 1750, + "src": "1670:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2272,12 +2272,12 @@ }, { "argumentTypes": null, - "id": 2039, + "id": 1769, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2022, - "src": "1677:4:19", + "referencedDeclaration": 1752, + "src": "1677:4:11", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2285,12 +2285,12 @@ }, { "argumentTypes": null, - "id": 2040, + "id": 1770, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2024, - "src": "1683:6:19", + "referencedDeclaration": 1754, + "src": "1683:6:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2308,7 +2308,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$2045", + "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$1775", "typeString": "contract DailyLimitModuleWithSignature" }, { @@ -2328,18 +2328,18 @@ "typeString": "uint256" } ], - "id": 2029, + "id": 1759, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2459, - "src": "1629:9:19", + "referencedDeclaration": 2390, + "src": "1629:9:11", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2041, + "id": 1771, "isConstant": false, "isLValue": false, "isPure": false, @@ -2347,21 +2347,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1629:61:19", + "src": "1629:61:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2028, - "id": 2042, + "functionReturnParameters": 1758, + "id": 1772, "nodeType": "Return", - "src": "1622:68:19" + "src": "1622:68:11" } ] }, "documentation": "@dev Returns transactions hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param _nonce Transaction nonce.\n @return Transaction hash.", - "id": 2044, + "id": 1774, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -2369,16 +2369,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2025, + "id": 1755, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2018, + "id": 1748, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2044, - "src": "1499:10:19", + "scope": 1774, + "src": "1499:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2386,10 +2386,10 @@ "typeString": "address" }, "typeName": { - "id": 2017, + "id": 1747, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1499:7:19", + "src": "1499:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2400,11 +2400,11 @@ }, { "constant": false, - "id": 2020, + "id": 1750, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2044, - "src": "1511:13:19", + "scope": 1774, + "src": "1511:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2412,10 +2412,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2019, + "id": 1749, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1511:7:19", + "src": "1511:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2426,11 +2426,11 @@ }, { "constant": false, - "id": 2022, + "id": 1752, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2044, - "src": "1526:10:19", + "scope": 1774, + "src": "1526:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2438,10 +2438,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2021, + "id": 1751, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1526:5:19", + "src": "1526:5:11", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2452,11 +2452,11 @@ }, { "constant": false, - "id": 2024, + "id": 1754, "name": "_nonce", "nodeType": "VariableDeclaration", - "scope": 2044, - "src": "1538:14:19", + "scope": 1774, + "src": "1538:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2464,10 +2464,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2023, + "id": 1753, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1538:7:19", + "src": "1538:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2477,20 +2477,20 @@ "visibility": "internal" } ], - "src": "1498:55:19" + "src": "1498:55:11" }, "payable": false, "returnParameters": { - "id": 2028, + "id": 1758, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2027, + "id": 1757, "name": "", "nodeType": "VariableDeclaration", - "scope": 2044, - "src": "1599:7:19", + "scope": 1774, + "src": "1599:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2498,10 +2498,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2026, + "id": 1756, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1599:7:19", + "src": "1599:7:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2511,20 +2511,20 @@ "visibility": "internal" } ], - "src": "1598:9:19" + "src": "1598:9:11" }, - "scope": 2045, - "src": "1471:226:19", + "scope": 1775, + "src": "1471:226:11", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 2046, - "src": "241:1458:19" + "scope": 1776, + "src": "241:1458:11" } ], - "src": "0:1700:19" + "src": "0:1700:11" }, "compiler": { "name": "solc", @@ -2534,8 +2534,8 @@ "4": { "events": {}, "links": {}, - "address": "0x27ebb1e1cff8e9474d387bc760e4d6882f35c7cc", - "transactionHash": "0x74279a96ad8398a8cbdd3b4a8c6d2d1716cde44ab7d1533d0cfc39d2780fe39a" + "address": "0x7e0c709947a6d2c283c16a69182104016c7e212c", + "transactionHash": "0x4d4459efdc04c3c67835de906ac494897ade960b27a6353943677b35f5a3b555" }, "1525950336085": { "events": {}, @@ -2548,8 +2548,14 @@ "links": {}, "address": "0x3e2ade0d97956160691a96fb2adf83844155708d", "transactionHash": "0x13942c7ebe4c7c49493ac8d9d8ee3c329a0be8b7a78717117e0c5d43cbf8632c" + }, + "1526478212260": { + "events": {}, + "links": {}, + "address": "0xdb5a513347baaf6454bdfcb439d6c712c52a754e", + "transactionHash": "0x21a453f823a02858ff598704a36731ed3a5264592902c73a7e68ee53d3fb635d" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-14T07:39:37.966Z" + "updatedAt": "2018-05-16T13:45:24.518Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Enum.json b/safe-contracts/build/contracts/Enum.json index 91cba627..432757f6 100644 --- a/safe-contracts/build/contracts/Enum.json +++ b/safe-contracts/build/contracts/Enum.json @@ -3,29 +3,29 @@ "abi": [], "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820346c40fd38e691d9042d78bf7c33e05e8eafc3767b153318d8f2a9f5daf08bcf0029", "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820346c40fd38e691d9042d78bf7c33e05e8eafc3767b153318d8f2a9f5daf08bcf0029", - "sourceMap": "115:95:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;115:95:1;;;;;;;", - "deployedSourceMap": "115:95:1:-;;;;;", + "sourceMap": "115:95:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;115:95:0;;;;;;;", + "deployedSourceMap": "115:95:0:-;;;;;", "source": "pragma solidity 0.4.23;\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": [ - 30 + 6 ] }, - "id": 31, + "id": 7, "nodeType": "SourceUnit", "nodes": [ { - "id": 25, + "id": 1, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:1" + "src": "0:23:0" }, { "baseContracts": [], @@ -33,66 +33,66 @@ "contractKind": "contract", "documentation": "@title Enum - Collection of enums\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 30, + "id": 6, "linearizedBaseContracts": [ - 30 + 6 ], "name": "Enum", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Enum.Operation", - "id": 29, + "id": 5, "members": [ { - "id": 26, + "id": 2, "name": "Call", "nodeType": "EnumValue", - "src": "160:4:1" + "src": "160:4:0" }, { - "id": 27, + "id": 3, "name": "DelegateCall", "nodeType": "EnumValue", - "src": "174:12:1" + "src": "174:12:0" }, { - "id": 28, + "id": 4, "name": "Create", "nodeType": "EnumValue", - "src": "196:6:1" + "src": "196:6:0" } ], "name": "Operation", "nodeType": "EnumDefinition", - "src": "135:73:1" + "src": "135:73:0" } ], - "scope": 31, - "src": "115:95:1" + "scope": 7, + "src": "115:95:0" } ], - "src": "0:211:1" + "src": "0:211:0" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "exportedSymbols": { "Enum": [ - 30 + 6 ] }, - "id": 31, + "id": 7, "nodeType": "SourceUnit", "nodes": [ { - "id": 25, + "id": 1, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:1" + "src": "0:23:0" }, { "baseContracts": [], @@ -100,46 +100,46 @@ "contractKind": "contract", "documentation": "@title Enum - Collection of enums\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 30, + "id": 6, "linearizedBaseContracts": [ - 30 + 6 ], "name": "Enum", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Enum.Operation", - "id": 29, + "id": 5, "members": [ { - "id": 26, + "id": 2, "name": "Call", "nodeType": "EnumValue", - "src": "160:4:1" + "src": "160:4:0" }, { - "id": 27, + "id": 3, "name": "DelegateCall", "nodeType": "EnumValue", - "src": "174:12:1" + "src": "174:12:0" }, { - "id": 28, + "id": 4, "name": "Create", "nodeType": "EnumValue", - "src": "196:6:1" + "src": "196:6:0" } ], "name": "Operation", "nodeType": "EnumDefinition", - "src": "135:73:1" + "src": "135:73:0" } ], - "scope": 31, - "src": "115:95:1" + "scope": 7, + "src": "115:95:0" } ], - "src": "0:211:1" + "src": "0:211:0" }, "compiler": { "name": "solc", @@ -147,5 +147,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T10:43:07.892Z" + "updatedAt": "2018-05-16T10:51:14.736Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafe.json b/safe-contracts/build/contracts/GnosisSafe.json index 3333ecba..b132687a 100644 --- a/safe-contracts/build/contracts/GnosisSafe.json +++ b/safe-contracts/build/contracts/GnosisSafe.json @@ -1,57 +1,6 @@ { "contractName": "GnosisSafe", "abi": [ - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "owners", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - }, - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "addOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "module", - "type": "address" - } - ], - "name": "addModule", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { "constant": true, "inputs": [ @@ -71,57 +20,33 @@ "stateMutability": "view", "type": "function" }, - { - "constant": true, - "inputs": [], - "name": "threshold", - "outputs": [ - { - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "isModule", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": false, "inputs": [ { - "name": "oldOwnerIndex", + "name": "to", + "type": "address" + }, + { + "name": "value", "type": "uint256" }, { - "name": "oldOwner", - "type": "address" + "name": "data", + "type": "bytes" }, { - "name": "newOwner", - "type": "address" + "name": "operation", + "type": "uint8" + } + ], + "name": "execTransactionFromModule", + "outputs": [ + { + "name": "success", + "type": "bool" } ], - "name": "replaceOwner", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" @@ -129,16 +54,12 @@ { "constant": false, "inputs": [ - { - "name": "moduleIndex", - "type": "uint256" - }, { "name": "module", "type": "address" } ], - "name": "removeModule", + "name": "enableModule", "outputs": [], "payable": false, "stateMutability": "nonpayable", @@ -146,13 +67,8 @@ }, { "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "modules", + "inputs": [], + "name": "SENTINEL_MODULES", "outputs": [ { "name": "", @@ -167,8 +83,8 @@ "constant": false, "inputs": [ { - "name": "ownerIndex", - "type": "uint256" + "name": "prevOwner", + "type": "address" }, { "name": "owner", @@ -185,6 +101,20 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "SENTINEL_OWNERS", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [], @@ -213,37 +143,6 @@ "stateMutability": "view", "type": "function" }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - } - ], - "name": "executeModule", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { "constant": true, "inputs": [], @@ -272,6 +171,78 @@ "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": [ + { + "name": "prevModule", + "type": "address" + }, + { + "name": "module", + "type": "address" + } + ], + "name": "disableModule", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "prevOwner", + "type": "address" + }, + { + "name": "oldOwner", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" + } + ], + "name": "swapOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getThreshold", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [], @@ -330,62 +301,62 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061193e806100206000396000f3006080604052600436106100f1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146100f35780630e5229b0146101605780631ed86f19146101b05780632f54bf6e146101f357806342cde4e81461024e57806342f6e3891461027f57806354e99c6e146102da5780637c6401d31461034757806381b2248a14610394578063842b954e14610401578063a04222e11461045b578063a0e67e2b14610534578063a3f4df7e146105a0578063b021640a14610630578063b2494df3146106e8578063b7f3358d14610754578063ffa1ad7414610784575b005b3480156100ff57600080fd5b5061011e60048036038101908080359060200190929190505050610814565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016c57600080fd5b506101ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610852565b005b3480156101bc57600080fd5b506101f1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109f5565b005b3480156101ff57600080fd5b50610234600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b6e565b604051808215151515815260200191505060405180910390f35b34801561025a57600080fd5b50610263610bc4565b604051808260ff1660ff16815260200191505060405180910390f35b34801561028b57600080fd5b506102c0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bdb565b604051808215151515815260200191505060405180910390f35b3480156102e657600080fd5b5061034560048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bfb565b005b34801561035357600080fd5b5061039260048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e34565b005b3480156103a057600080fd5b506103bf60048036038101908080359060200190929190505050610fec565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040d57600080fd5b5061045960048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061102a565b005b34801561046757600080fd5b5061053260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611225565b005b34801561054057600080fd5b5061054961123f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058c578082015181840152602081019050610571565b505050509050019250505060405180910390f35b3480156105ac57600080fd5b506105b56112cd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105f55780820151818401526020810190506105da565b50505050905090810190601f1680156106225780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561063c57600080fd5b506106ce600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611306565b604051808215151515815260200191505060405180910390f35b3480156106f457600080fd5b506106fd611377565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610740578082015181840152602081019050610725565b505050509050019250505060405180910390f35b34801561076057600080fd5b50610782600480360381019080803560ff169060200190929190505050611405565b005b34801561079057600080fd5b50610799611487565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107d95780820151818401526020810190506107be565b50505050905090810190601f1680156108065780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60028181548110151561082357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561088c57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141515156108b257600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561090b57600080fd5b60028290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600360009054906101000a900460ff1660ff161415156109f1576109f081611405565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a2f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a5557600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610aae57600080fd5b60008190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360009054906101000a900460ff16905090565b60016020528060005260406000206000915054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c3557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610c5b57600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610cb457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600284815481101515610cda57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d2757600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600284815481101515610de757fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e6e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600083815481101515610e9457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ee157600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600160008054905003815481101515610f5057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600083815481101515610f8a57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000805480919060019003610fe791906117c8565b505050565b600081815481101515610ffb57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561106457600080fd5b8060ff166001600280549050031015151561107e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166002848154811015156110a457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156110f157600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260016002805490500381548110151561116057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660028481548110151561119a57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060028054809190600190036111f791906117f4565b508060ff16600360009054906101000a900460ff1660ff161415156112205761121f81611405565b5b505050565b61122f84846114c0565b611239828261164e565b50505050565b606060028054806020026020016040519081016040528092919081815260200182805480156112c357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611279575b5050505050905090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561136057600080fd5b61136d858585855a611689565b9050949350505050565b606060008054806020026020016040519081016040528092919081815260200182805480156113fb57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116113b1575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561143f57600080fd5b6002805490508160ff161115151561145657600080fd5b60018160ff161015151561146957600080fd5b80600360006101000a81548160ff021916908360ff16021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000600360009054906101000a900460ff1660ff161415156114e457600080fd5b83518360ff16111515156114f757600080fd5b60018360ff161015151561150a57600080fd5b600091505b835182101561161657838281518110151561152657fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561155857600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156115b157600080fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818060010192505061150f565b836002908051906020019061162c929190611820565b5082600360006101000a81548160ff021916908360ff16021790555050505050565b60008273ffffffffffffffffffffffffffffffffffffffff161415156116855761167982825a611786565b151561168457600080fd5b5b5050565b6000806000600281111561169957fe5b8460028111156116a557fe5b14156116be576116b78787878661179d565b915061177c565b600160028111156116cb57fe5b8460028111156116d757fe5b14156116ef576116e8878685611786565b915061177b565b6116f8856117b6565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b60008060008451602086018786f490509392505050565b6000806000845160208601878987f19050949350505050565b60008151602083016000f09050919050565b8154818355818111156117ef578183600052602060002091820191016117ee91906118aa565b5b505050565b81548183558181111561181b5781836000526020600020918201910161181a91906118aa565b5b505050565b828054828255906000526020600020908101928215611899579160200282015b828111156118985782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611840565b5b5090506118a691906118cf565b5090565b6118cc91905b808211156118c85760008160009055506001016118b0565b5090565b90565b61190f91905b8082111561190b57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016118d5565b5090565b905600a165627a7a7230582017c4588fe302e0126f687d1c0be11e55a0b32f3c3ba0cc695da0c68dddd6d9270029", - "deployedBytecode": "0x6080604052600436106100f1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146100f35780630e5229b0146101605780631ed86f19146101b05780632f54bf6e146101f357806342cde4e81461024e57806342f6e3891461027f57806354e99c6e146102da5780637c6401d31461034757806381b2248a14610394578063842b954e14610401578063a04222e11461045b578063a0e67e2b14610534578063a3f4df7e146105a0578063b021640a14610630578063b2494df3146106e8578063b7f3358d14610754578063ffa1ad7414610784575b005b3480156100ff57600080fd5b5061011e60048036038101908080359060200190929190505050610814565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016c57600080fd5b506101ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610852565b005b3480156101bc57600080fd5b506101f1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109f5565b005b3480156101ff57600080fd5b50610234600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b6e565b604051808215151515815260200191505060405180910390f35b34801561025a57600080fd5b50610263610bc4565b604051808260ff1660ff16815260200191505060405180910390f35b34801561028b57600080fd5b506102c0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bdb565b604051808215151515815260200191505060405180910390f35b3480156102e657600080fd5b5061034560048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bfb565b005b34801561035357600080fd5b5061039260048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e34565b005b3480156103a057600080fd5b506103bf60048036038101908080359060200190929190505050610fec565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040d57600080fd5b5061045960048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061102a565b005b34801561046757600080fd5b5061053260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611225565b005b34801561054057600080fd5b5061054961123f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058c578082015181840152602081019050610571565b505050509050019250505060405180910390f35b3480156105ac57600080fd5b506105b56112cd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105f55780820151818401526020810190506105da565b50505050905090810190601f1680156106225780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561063c57600080fd5b506106ce600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611306565b604051808215151515815260200191505060405180910390f35b3480156106f457600080fd5b506106fd611377565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610740578082015181840152602081019050610725565b505050509050019250505060405180910390f35b34801561076057600080fd5b50610782600480360381019080803560ff169060200190929190505050611405565b005b34801561079057600080fd5b50610799611487565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107d95780820151818401526020810190506107be565b50505050905090810190601f1680156108065780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60028181548110151561082357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561088c57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141515156108b257600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561090b57600080fd5b60028290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600360009054906101000a900460ff1660ff161415156109f1576109f081611405565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a2f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a5557600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610aae57600080fd5b60008190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360009054906101000a900460ff16905090565b60016020528060005260406000206000915054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c3557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610c5b57600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610cb457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600284815481101515610cda57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d2757600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600284815481101515610de757fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e6e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600083815481101515610e9457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ee157600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600160008054905003815481101515610f5057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600083815481101515610f8a57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000805480919060019003610fe791906117c8565b505050565b600081815481101515610ffb57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561106457600080fd5b8060ff166001600280549050031015151561107e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166002848154811015156110a457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156110f157600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260016002805490500381548110151561116057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660028481548110151561119a57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060028054809190600190036111f791906117f4565b508060ff16600360009054906101000a900460ff1660ff161415156112205761121f81611405565b5b505050565b61122f84846114c0565b611239828261164e565b50505050565b606060028054806020026020016040519081016040528092919081815260200182805480156112c357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611279575b5050505050905090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561136057600080fd5b61136d858585855a611689565b9050949350505050565b606060008054806020026020016040519081016040528092919081815260200182805480156113fb57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116113b1575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561143f57600080fd5b6002805490508160ff161115151561145657600080fd5b60018160ff161015151561146957600080fd5b80600360006101000a81548160ff021916908360ff16021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000600360009054906101000a900460ff1660ff161415156114e457600080fd5b83518360ff16111515156114f757600080fd5b60018360ff161015151561150a57600080fd5b600091505b835182101561161657838281518110151561152657fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561155857600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156115b157600080fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818060010192505061150f565b836002908051906020019061162c929190611820565b5082600360006101000a81548160ff021916908360ff16021790555050505050565b60008273ffffffffffffffffffffffffffffffffffffffff161415156116855761167982825a611786565b151561168457600080fd5b5b5050565b6000806000600281111561169957fe5b8460028111156116a557fe5b14156116be576116b78787878661179d565b915061177c565b600160028111156116cb57fe5b8460028111156116d757fe5b14156116ef576116e8878685611786565b915061177b565b6116f8856117b6565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b60008060008451602086018786f490509392505050565b6000806000845160208601878987f19050949350505050565b60008151602083016000f09050919050565b8154818355818111156117ef578183600052602060002091820191016117ee91906118aa565b5b505050565b81548183558181111561181b5781836000526020600020918201910161181a91906118aa565b5b505050565b828054828255906000526020600020908101928215611899579160200282015b828111156118985782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611840565b5b5090506118a691906118cf565b5090565b6118cc91905b808211156118c85760008160009055506001016118b0565b5090565b90565b61190f91905b8082111561190b57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016118d5565b5090565b905600a165627a7a7230582017c4588fe302e0126f687d1c0be11e55a0b32f3c3ba0cc695da0c68dddd6d9270029", - "sourceMap": "322:674:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;322:674:2;;;;;;;", - "deployedSourceMap": "322:674:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1737:431;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1737:431:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1166:300:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1166:300:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;4552:125:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4552:125:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4436:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4436:110:10;;;;;;;;;;;;;;;;;;;;;;;;;;;599:41:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;599:41:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3419:501:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3419:501:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1722:336:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1722:336:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;500:23:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:599:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2499:599:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4759:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4759:111:10;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2394:361;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2394:361:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4279:112: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;4279:112:9;;;;;;;;;;;;;;;;;4109:321:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4109:321:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1737:431::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1894:1:10;1885:5;:10;;;;1877:19;;;;;;;;1955:7;:14;1963:5;1955:14;;;;;;;;;;;;;;;;;;;;;;;;;1954:15;1946:24;;;;;;;;1980:6;1992:5;1980:18;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1980:18:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025:4;2008:7;:14;2016:5;2008:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;2110:10;2097:23;;:9;;;;;;;;;;;:23;;;;2093:68;;;2134:27;2150:10;2134:15;:27::i;:::-;2093:68;1737:431;;:::o;1166:300:9:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1317:1:9;1306:6;1298:20;;;;1290:29;;;;;;;;1379:8;:16;1388:6;1379:16;;;;;;;;;;;;;;;;;;;;;;;;;1378:17;1370:26;;;;;;;;1406:7;1419:6;1406:20;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1406:20:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1455:4;1436:8;:16;1445:6;1436:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1166:300;:::o;4552:125:10:-;4629:4;4656:7;:14;4664:5;4656:14;;;;;;;;;;;;;;;;;;;;;;;;;4649:21;;4552:125;;;:::o;4436:110::-;4502:5;4530:9;;;;;;;;;;;4523:16;;4436:110;:::o;599:41:9:-;;;;;;;;;;;;;;;;;;;;;;:::o;3419:501:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;3609:1:10;3597:8;:13;;;;3589:22;;;;;;;;3670:7;:17;3678:8;3670:17;;;;;;;;;;;;;;;;;;;;;;;;;3669:18;3661:27;;;;;;;;3793:8;3768:33;;:6;3775:13;3768:21;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;3760:42;;;;;;;;3832:5;3812:7;:17;3820:8;3812:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;3867:4;3847:7;:17;3855:8;3847:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3905:8;3881:6;3888:13;3881:21;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;3419:501;;;:::o;1722:336:9:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1924:6:9;1900:30;;:7;1908:11;1900:20;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;1892:39;;;;;;;;1960:5;1941:8;:16;1950:6;1941:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;1998:7;2023:1;2006:7;:14;;;;:18;1998:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:7;1983:11;1975:20;;;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;2035:7;:16;;;;;;;;;;;;:::i;:::-;;1722:336;;:::o;500:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2499:599:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;2727:10:10;2706:31;;2722:1;2706:6;:13;;;;:17;:31;;2698:40;;;;;;;;2840:5;2818:27;;:6;2825:10;2818:18;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;2810:36;;;;;;;;2873:5;2856:7;:14;2864:5;2856:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;2909:6;2932:1;2916:6;:13;;;;:17;2909:25;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:6;2895:10;2888:18;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2944:6;:15;;;;;;;;;;;;:::i;:::-;;3040:10;3027:23;;:9;;;;;;;;;;;:23;;;;3023:68;;;3064:27;3080:10;3064:15;:27::i;:::-;3023:68;2499:599;;;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;4759:111:10:-;4825:9;4857:6;4850:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111;:::o;401:46:9:-;;;;;;;;;;;;;;;;;;;;:::o;2394:361::-;2514:12;2599:8;:20;2608:10;2599:20;;;;;;;;;;;;;;;;;;;;;;;;;2591:29;;;;;;;;2702:46;2710:2;2714:5;2721:4;2727:9;2738;2702:7;:46::i;:::-;2692:56;;2394:361;;;;;;:::o;4279:112::-;4346:8;4377:7;4370:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;:::o;4109:321:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;4291:6:10;:13;;;;4277:10;:27;;;;4269:36;;;;;;;;4389:1;4375:10;:15;;;;4367:24;;;;;;;;4413:10;4401:9;;:22;;;;;;;;;;;;;;;;;;4109:321;:::o;453:40:9:-;;;;;;;;;;;;;;;;;;;;:::o;651:846:10:-;1147:9;1246:13;885:1;872:9;;;;;;;;;;;:14;;;864:23;;;;;;;;994:7;:14;980:10;:28;;;;972:37;;;;;;;;1093:1;1079:10;:15;;;;1071:24;;;;;;;;1159:1;1147:13;;1142:291;1166:7;:14;1162:1;:18;1142:291;;;1262:7;1270:1;1262:10;;;;;;;;;;;;;;;;;;1246:26;;1303:1;1294:5;:10;;;;1286:19;;;;;;;;1372:7;:14;1380:5;1372:14;;;;;;;;;;;;;;;;;;;;;;;;;1371:15;1363:24;;;;;;;;1418:4;1401:7;:14;1409:5;1401:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;1182:3;;;;;;;1142:291;;;1451:7;1442:6;:16;;;;;;;;;;;;:::i;:::-;;1480:10;1468:9;;:22;;;;;;;;;;;;;;;;;;651:846;;;;:::o;769:230:9:-;856:1;850:2;:7;;;;846:146;;;951:40;971:2;975:4;981:9;951:19;:40::i;:::-;943:49;;;;;;;;846:146;769:230;;:::o;2761:548::-;2892:12;3163:19;2937;2924:32;;;;;;;;:9;:32;;;;;;;;;2920:383;;;2980:35;2992:2;2996:5;3003:4;3009:5;2980:11;:35::i;:::-;2970:45;;2920:383;;;3047:27;3034:40;;;;;;;;:9;:40;;;;;;;;;3030:273;;;3098:36;3118:2;3122:4;3128:5;3098:19;:36::i;:::-;3088:46;;3030:273;;;3185:19;3199:4;3185:13;:19::i;:::-;3163:41;;3243:1;3228:11;:16;;;;3218:26;;3263:29;3280:11;3263:29;;;;;;;;;;;;;;;;;;;;;;3030:273;2920:383;2761:548;;;;;;;;:::o;3630:303::-;3732:12;3915:1;3912;3905:4;3899:11;3892:4;3886;3882:15;3878:2;3871:5;3858:59;3847:70;;3833:94;;;;;:::o;3315:309::-;3424:12;3606:1;3603;3596:4;3590:11;3583:4;3577;3573:15;3566:5;3562:2;3555:5;3550:58;3539:69;;3525:93;;;;;;:::o;3939:261::-;4008:19;4178:4;4172:11;4165:4;4159;4155:15;4152:1;4145:39;4130:54;;4116:78;;;:::o;322:674:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "bytecode": "0x608060405234801561001057600080fd5b50612100806100206000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e2565b005b34801561024a57600080fd5b50610253610b5b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b60565b005b34801561031157600080fd5b5061031a610de6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610deb565b005b34801561044157600080fd5b5061044a610e05565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b6610fa0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b50610546610fd9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff16906020019092919050505061127c565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506112fb565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b3565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e2565b005b34801561070f57600080fd5b50610718611b77565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749611b8e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156108cb57600080fd5b6108d8858585855a611bc7565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561091c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156109705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561097b57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156109fe57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b9a57600080fd5b8060ff1660016002540310151515610bb157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4a57600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff16600360009054906101000a900460ff1660ff16141515610de157610de08161127c565b5b505050565b600181565b610df58484611cc4565b610dff8282611f54565b50505050565b606080600080600254604051908082528060200260200182016040528015610e3c5781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610f9757808383815181101515610eec57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610ea7565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156110eb576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611047565b8260405190808252806020026020018201604052801561111a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611273578181848151811015156111c957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611184565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b657600080fd5b6002548160ff16111515156112ca57600080fd5b60018160ff16101515156112dd57600080fd5b80600360006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156113895750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561139457600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561141857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600360009054906101000a900460ff1660ff161415156115af576115ae8161127c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ed57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168557600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156118705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561187b57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156118ff57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561199857600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115611bd757fe5b846002811115611be357fe5b1415611bfc57611bf587878786612092565b9150611cba565b60016002811115611c0957fe5b846002811115611c1557fe5b1415611c2d57611c268786856120ab565b9150611cb9565b611c36856120c2565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600360009054906101000a900460ff1660ff16141515611ce957600080fd5b84518460ff1611151515611cfc57600080fd5b60018460ff1610151515611d0f57600080fd5b60019250600091505b8451821015611eac578482815181101515611d2f57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015611d8f5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611d9a57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e1e57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050611d18565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160028190555083600360006101000a81548160ff021916908360ff1602179055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fd857600080fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff1614151561208e5761208282825a6120ab565b151561208d57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a723058208d0d6dcd63a5e2ddebea816d26f7dc74ebbf2ef27fc9c39f932838e0e2d2710f0029", + "deployedBytecode": "0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e2565b005b34801561024a57600080fd5b50610253610b5b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b60565b005b34801561031157600080fd5b5061031a610de6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610deb565b005b34801561044157600080fd5b5061044a610e05565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b6610fa0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b50610546610fd9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff16906020019092919050505061127c565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506112fb565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b3565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e2565b005b34801561070f57600080fd5b50610718611b77565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749611b8e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156108cb57600080fd5b6108d8858585855a611bc7565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561091c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156109705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561097b57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156109fe57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b9a57600080fd5b8060ff1660016002540310151515610bb157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4a57600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff16600360009054906101000a900460ff1660ff16141515610de157610de08161127c565b5b505050565b600181565b610df58484611cc4565b610dff8282611f54565b50505050565b606080600080600254604051908082528060200260200182016040528015610e3c5781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610f9757808383815181101515610eec57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610ea7565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156110eb576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611047565b8260405190808252806020026020018201604052801561111a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611273578181848151811015156111c957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611184565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b657600080fd5b6002548160ff16111515156112ca57600080fd5b60018160ff16101515156112dd57600080fd5b80600360006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156113895750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561139457600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561141857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600360009054906101000a900460ff1660ff161415156115af576115ae8161127c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ed57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168557600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156118705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561187b57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156118ff57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561199857600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115611bd757fe5b846002811115611be357fe5b1415611bfc57611bf587878786612092565b9150611cba565b60016002811115611c0957fe5b846002811115611c1557fe5b1415611c2d57611c268786856120ab565b9150611cb9565b611c36856120c2565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600360009054906101000a900460ff1660ff16141515611ce957600080fd5b84518460ff1611151515611cfc57600080fd5b60018460ff1610151515611d0f57600080fd5b60019250600091505b8451821015611eac578482815181101515611d2f57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015611d8f5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611d9a57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e1e57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050611d18565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160028190555083600360006101000a81548160ff021916908360ff1602179055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fd857600080fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff1614151561208e5761208282825a6120ab565b151561208d57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a723058208d0d6dcd63a5e2ddebea816d26f7dc74ebbf2ef27fc9c39f932838e0e2d2710f0029", + "sourceMap": "322:674:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;322:674:1;;;;;;;", + "deployedSourceMap": "322:674:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052: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;5052: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423: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;4423:738:6;;;;;;;;;;;;;;;;;4398:318:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:7;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:6:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:6;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;499:55::-;550:3;499:55;:::o;2776:573:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:7;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::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;5052:458:7:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168: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;5168:25:7;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;401:46:6:-;;;;;;;;;;;;;;;;;;;;:::o;4423:738::-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807: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;4807:26:6;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:7;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:7;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;1887:299:6:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:6;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:7;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;453:40:6:-;;;;;;;;;;;;;;;;;;;;:::o;2905:548::-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:7:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:6:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", "source": "pragma solidity 0.4.23;\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", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "exportedSymbols": { "GnosisSafe": [ - 63 + 39 ] }, - "id": 64, + "id": 40, "nodeType": "SourceUnit", "nodes": [ { - "id": 32, + "id": 8, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:2" + "src": "0:23:1" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 33, + "id": 9, "nodeType": "ImportDirective", - "scope": 64, - "sourceUnit": 878, - "src": "24:22:2", + "scope": 40, + "sourceUnit": 622, + "src": "24:22:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 34, + "id": 10, "nodeType": "ImportDirective", - "scope": 64, - "sourceUnit": 1143, - "src": "47:29:2", + "scope": 40, + "sourceUnit": 972, + "src": "47:29:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "./OwnerManager.sol", - "id": 35, + "id": 11, "nodeType": "ImportDirective", - "scope": 64, - "sourceUnit": 1439, - "src": "77:28:2", + "scope": 40, + "sourceUnit": 1344, + "src": "77:28:1", "symbolAliases": [], "unitAlias": "" }, @@ -395,62 +366,62 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 36, + "id": 12, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1142, - "src": "345:13:2", + "referencedDeclaration": 971, + "src": "345:13:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } }, - "id": 37, + "id": 13, "nodeType": "InheritanceSpecifier", - "src": "345:13:2" + "src": "345:13:1" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 38, + "id": 14, "name": "OwnerManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1438, - "src": "360:12:2", + "referencedDeclaration": 1343, + "src": "360:12:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1438", + "typeIdentifier": "t_contract$_OwnerManager_$1343", "typeString": "contract OwnerManager" } }, - "id": 39, + "id": 15, "nodeType": "InheritanceSpecifier", - "src": "360:12:2" + "src": "360:12:1" } ], "contractDependencies": [ - 1142, - 1438, - 1559 + 971, + 1343, + 1359 ], "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": 63, + "id": 39, "linearizedBaseContracts": [ - 63, - 1438, - 1142, - 1559 + 39, + 1343, + 971, + 1359 ], "name": "GnosisSafe", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 61, + "id": 37, "nodeType": "Block", - "src": "788:206:2", + "src": "788:206:1", "statements": [ { "expression": { @@ -458,12 +429,12 @@ "arguments": [ { "argumentTypes": null, - "id": 52, + "id": 28, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42, - "src": "810:7:2", + "referencedDeclaration": 18, + "src": "810:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" @@ -471,12 +442,12 @@ }, { "argumentTypes": null, - "id": 53, + "id": 29, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44, - "src": "819:10:2", + "referencedDeclaration": 20, + "src": "819:10:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -494,18 +465,18 @@ "typeString": "uint8" } ], - "id": 51, + "id": 27, "name": "setupOwners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1230, - "src": "798:11:2", + "referencedDeclaration": 1083, + "src": "798:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", "typeString": "function (address[] memory,uint8)" } }, - "id": 54, + "id": 30, "isConstant": false, "isLValue": false, "isPure": false, @@ -513,15 +484,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "798:32:2", + "src": "798:32:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 55, + "id": 31, "nodeType": "ExpressionStatement", - "src": "798:32:2" + "src": "798:32:1" }, { "expression": { @@ -529,12 +500,12 @@ "arguments": [ { "argumentTypes": null, - "id": 57, + "id": 33, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46, - "src": "978:2:2", + "referencedDeclaration": 22, + "src": "978:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -542,12 +513,12 @@ }, { "argumentTypes": null, - "id": 58, + "id": 34, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48, - "src": "982:4:2", + "referencedDeclaration": 24, + "src": "982:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -565,18 +536,18 @@ "typeString": "bytes memory" } ], - "id": 56, + "id": 32, "name": "setupModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 926, - "src": "965:12:2", + "referencedDeclaration": 686, + "src": "965:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,bytes memory)" } }, - "id": 59, + "id": 35, "isConstant": false, "isLValue": false, "isPure": false, @@ -584,20 +555,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "965:22:2", + "src": "965:22:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 60, + "id": 36, "nodeType": "ExpressionStatement", - "src": "965:22:2" + "src": "965:22:1" } ] }, "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": 62, + "id": 38, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -605,16 +576,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 49, + "id": 25, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 42, + "id": 18, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 62, - "src": "708:17:2", + "scope": 38, + "src": "708:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -623,19 +594,19 @@ }, "typeName": { "baseType": { - "id": 40, + "id": 16, "name": "address", "nodeType": "ElementaryTypeName", - "src": "708:7:2", + "src": "708:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 41, + "id": 17, "length": null, "nodeType": "ArrayTypeName", - "src": "708:9:2", + "src": "708:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -646,11 +617,11 @@ }, { "constant": false, - "id": 44, + "id": 20, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 62, - "src": "727:16:2", + "scope": 38, + "src": "727:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -658,10 +629,10 @@ "typeString": "uint8" }, "typeName": { - "id": 43, + "id": 19, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "727:5:2", + "src": "727:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -672,11 +643,11 @@ }, { "constant": false, - "id": 46, + "id": 22, "name": "to", "nodeType": "VariableDeclaration", - "scope": 62, - "src": "745:10:2", + "scope": 38, + "src": "745:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -684,10 +655,10 @@ "typeString": "address" }, "typeName": { - "id": 45, + "id": 21, "name": "address", "nodeType": "ElementaryTypeName", - "src": "745:7:2", + "src": "745:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -698,11 +669,11 @@ }, { "constant": false, - "id": 48, + "id": 24, "name": "data", "nodeType": "VariableDeclaration", - "scope": 62, - "src": "757:10:2", + "scope": 38, + "src": "757:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -710,10 +681,10 @@ "typeString": "bytes" }, "typeName": { - "id": 47, + "id": 23, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "757:5:2", + "src": "757:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -723,78 +694,78 @@ "visibility": "internal" } ], - "src": "707:61:2" + "src": "707:61:1" }, "payable": false, "returnParameters": { - "id": 50, + "id": 26, "nodeType": "ParameterList", "parameters": [], - "src": "788:0:2" + "src": "788:0:1" }, - "scope": 63, - "src": "693:301:2", + "scope": 39, + "src": "693:301:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 64, - "src": "322:674:2" + "scope": 40, + "src": "322:674:1" } ], - "src": "0:997:2" + "src": "0:997:1" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "exportedSymbols": { "GnosisSafe": [ - 63 + 39 ] }, - "id": 64, + "id": 40, "nodeType": "SourceUnit", "nodes": [ { - "id": 32, + "id": 8, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:2" + "src": "0:23:1" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 33, + "id": 9, "nodeType": "ImportDirective", - "scope": 64, - "sourceUnit": 878, - "src": "24:22:2", + "scope": 40, + "sourceUnit": 622, + "src": "24:22:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 34, + "id": 10, "nodeType": "ImportDirective", - "scope": 64, - "sourceUnit": 1143, - "src": "47:29:2", + "scope": 40, + "sourceUnit": 972, + "src": "47:29:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "./OwnerManager.sol", - "id": 35, + "id": 11, "nodeType": "ImportDirective", - "scope": 64, - "sourceUnit": 1439, - "src": "77:28:2", + "scope": 40, + "sourceUnit": 1344, + "src": "77:28:1", "symbolAliases": [], "unitAlias": "" }, @@ -804,62 +775,62 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 36, + "id": 12, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1142, - "src": "345:13:2", + "referencedDeclaration": 971, + "src": "345:13:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } }, - "id": 37, + "id": 13, "nodeType": "InheritanceSpecifier", - "src": "345:13:2" + "src": "345:13:1" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 38, + "id": 14, "name": "OwnerManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1438, - "src": "360:12:2", + "referencedDeclaration": 1343, + "src": "360:12:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1438", + "typeIdentifier": "t_contract$_OwnerManager_$1343", "typeString": "contract OwnerManager" } }, - "id": 39, + "id": 15, "nodeType": "InheritanceSpecifier", - "src": "360:12:2" + "src": "360:12:1" } ], "contractDependencies": [ - 1142, - 1438, - 1559 + 971, + 1343, + 1359 ], "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": 63, + "id": 39, "linearizedBaseContracts": [ - 63, - 1438, - 1142, - 1559 + 39, + 1343, + 971, + 1359 ], "name": "GnosisSafe", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 61, + "id": 37, "nodeType": "Block", - "src": "788:206:2", + "src": "788:206:1", "statements": [ { "expression": { @@ -867,12 +838,12 @@ "arguments": [ { "argumentTypes": null, - "id": 52, + "id": 28, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 42, - "src": "810:7:2", + "referencedDeclaration": 18, + "src": "810:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" @@ -880,12 +851,12 @@ }, { "argumentTypes": null, - "id": 53, + "id": 29, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44, - "src": "819:10:2", + "referencedDeclaration": 20, + "src": "819:10:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -903,18 +874,18 @@ "typeString": "uint8" } ], - "id": 51, + "id": 27, "name": "setupOwners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1230, - "src": "798:11:2", + "referencedDeclaration": 1083, + "src": "798:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", "typeString": "function (address[] memory,uint8)" } }, - "id": 54, + "id": 30, "isConstant": false, "isLValue": false, "isPure": false, @@ -922,15 +893,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "798:32:2", + "src": "798:32:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 55, + "id": 31, "nodeType": "ExpressionStatement", - "src": "798:32:2" + "src": "798:32:1" }, { "expression": { @@ -938,12 +909,12 @@ "arguments": [ { "argumentTypes": null, - "id": 57, + "id": 33, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 46, - "src": "978:2:2", + "referencedDeclaration": 22, + "src": "978:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -951,12 +922,12 @@ }, { "argumentTypes": null, - "id": 58, + "id": 34, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48, - "src": "982:4:2", + "referencedDeclaration": 24, + "src": "982:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -974,18 +945,18 @@ "typeString": "bytes memory" } ], - "id": 56, + "id": 32, "name": "setupModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 926, - "src": "965:12:2", + "referencedDeclaration": 686, + "src": "965:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,bytes memory)" } }, - "id": 59, + "id": 35, "isConstant": false, "isLValue": false, "isPure": false, @@ -993,20 +964,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "965:22:2", + "src": "965:22:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 60, + "id": 36, "nodeType": "ExpressionStatement", - "src": "965:22:2" + "src": "965:22:1" } ] }, "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": 62, + "id": 38, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1014,16 +985,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 49, + "id": 25, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 42, + "id": 18, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 62, - "src": "708:17:2", + "scope": 38, + "src": "708:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1032,19 +1003,19 @@ }, "typeName": { "baseType": { - "id": 40, + "id": 16, "name": "address", "nodeType": "ElementaryTypeName", - "src": "708:7:2", + "src": "708:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 41, + "id": 17, "length": null, "nodeType": "ArrayTypeName", - "src": "708:9:2", + "src": "708:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -1055,11 +1026,11 @@ }, { "constant": false, - "id": 44, + "id": 20, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 62, - "src": "727:16:2", + "scope": 38, + "src": "727:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1067,10 +1038,10 @@ "typeString": "uint8" }, "typeName": { - "id": 43, + "id": 19, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "727:5:2", + "src": "727:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1081,11 +1052,11 @@ }, { "constant": false, - "id": 46, + "id": 22, "name": "to", "nodeType": "VariableDeclaration", - "scope": 62, - "src": "745:10:2", + "scope": 38, + "src": "745:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1093,10 +1064,10 @@ "typeString": "address" }, "typeName": { - "id": 45, + "id": 21, "name": "address", "nodeType": "ElementaryTypeName", - "src": "745:7:2", + "src": "745:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1107,11 +1078,11 @@ }, { "constant": false, - "id": 48, + "id": 24, "name": "data", "nodeType": "VariableDeclaration", - "scope": 62, - "src": "757:10:2", + "scope": 38, + "src": "757:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1119,10 +1090,10 @@ "typeString": "bytes" }, "typeName": { - "id": 47, + "id": 23, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "757:5:2", + "src": "757:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1132,27 +1103,27 @@ "visibility": "internal" } ], - "src": "707:61:2" + "src": "707:61:1" }, "payable": false, "returnParameters": { - "id": 50, + "id": 26, "nodeType": "ParameterList", "parameters": [], - "src": "788:0:2" + "src": "788:0:1" }, - "scope": 63, - "src": "693:301:2", + "scope": 39, + "src": "693:301:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 64, - "src": "322:674:2" + "scope": 40, + "src": "322:674:1" } ], - "src": "0:997:2" + "src": "0:997:1" }, "compiler": { "name": "solc", @@ -1160,5 +1131,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T10:43:07.892Z" + "updatedAt": "2018-05-16T10:51:14.736Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json index c404e0ca..c799fb76 100644 --- a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json +++ b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json @@ -1,57 +1,6 @@ { "contractName": "GnosisSafePersonalEdition", "abi": [ - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "owners", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - }, - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "addOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "module", - "type": "address" - } - ], - "name": "addModule", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { "constant": true, "inputs": [ @@ -71,57 +20,33 @@ "stateMutability": "view", "type": "function" }, - { - "constant": true, - "inputs": [], - "name": "threshold", - "outputs": [ - { - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "isModule", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": false, "inputs": [ { - "name": "oldOwnerIndex", + "name": "to", + "type": "address" + }, + { + "name": "value", "type": "uint256" }, { - "name": "oldOwner", - "type": "address" + "name": "data", + "type": "bytes" }, { - "name": "newOwner", - "type": "address" + "name": "operation", + "type": "uint8" + } + ], + "name": "execTransactionFromModule", + "outputs": [ + { + "name": "success", + "type": "bool" } ], - "name": "replaceOwner", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" @@ -129,16 +54,12 @@ { "constant": false, "inputs": [ - { - "name": "moduleIndex", - "type": "uint256" - }, { "name": "module", "type": "address" } ], - "name": "removeModule", + "name": "enableModule", "outputs": [], "payable": false, "stateMutability": "nonpayable", @@ -160,13 +81,8 @@ }, { "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "modules", + "inputs": [], + "name": "SENTINEL_MODULES", "outputs": [ { "name": "", @@ -181,8 +97,8 @@ "constant": false, "inputs": [ { - "name": "ownerIndex", - "type": "uint256" + "name": "prevOwner", + "type": "address" }, { "name": "owner", @@ -199,6 +115,20 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "SENTINEL_OWNERS", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": false, "inputs": [ @@ -267,37 +197,6 @@ "stateMutability": "view", "type": "function" }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - } - ], - "name": "executeModule", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { "constant": true, "inputs": [], @@ -326,6 +225,78 @@ "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": [ + { + "name": "prevModule", + "type": "address" + }, + { + "name": "module", + "type": "address" + } + ], + "name": "disableModule", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "prevOwner", + "type": "address" + }, + { + "name": "oldOwner", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" + } + ], + "name": "swapOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getThreshold", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [], @@ -407,7 +378,7 @@ "type": "bytes32[]" } ], - "name": "payAndExecuteTransaction", + "name": "execPayTransaction", "outputs": [], "payable": false, "stateMutability": "nonpayable", @@ -456,7 +427,7 @@ "type": "uint8" } ], - "name": "estimate", + "name": "requiredTxGas", "outputs": [ { "name": "", @@ -515,51 +486,51 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612339806100206000396000f300608060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146101355780630e5229b0146101a25780631ed86f19146101f25780632f54bf6e1461023557806342cde4e81461029057806342f6e389146102c15780634db5d0391461031c57806351cf63851461040057806354e99c6e146104b45780637b6d3eeb146105215780637c6401d3146106a85780637de7edef146106f557806381b2248a14610738578063842b954e146107a5578063a04222e1146107ff578063a0e67e2b146108d8578063a3f4df7e14610944578063ad8a0450146109d4578063affed0e014610a1f578063b021640a14610a4a578063b2494df314610b02578063b7f3358d14610b6e578063ffa1ad7414610b9e575b005b34801561014157600080fd5b5061016060048036038101908080359060200190929190505050610c2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101ae57600080fd5b506101f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610c6c565b005b3480156101fe57600080fd5b50610233600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e0f565b005b34801561024157600080fd5b50610276600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f89565b604051808215151515815260200191505060405180910390f35b34801561029c57600080fd5b506102a5610fdf565b604051808260ff1660ff16815260200191505060405180910390f35b3480156102cd57600080fd5b50610302600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ff6565b604051808215151515815260200191505060405180910390f35b34801561032857600080fd5b506103e2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611016565b60405180826000191660001916815260200191505060405180910390f35b34801561040c57600080fd5b5061049e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919050505061124d565b6040518082815260200191505060405180910390f35b3480156104c057600080fd5b5061051f60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112b3565b005b34801561052d57600080fd5b506106a6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506114ec565b005b3480156106b457600080fd5b506106f360048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115d9565b005b34801561070157600080fd5b50610736600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061178f565b005b34801561074457600080fd5b5061076360048036038101908080359060200190929190505050611832565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107b157600080fd5b506107fd60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611870565b005b34801561080b57600080fd5b506108d660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611a6b565b005b3480156108e457600080fd5b506108ed611a85565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610930578082015181840152602081019050610915565b505050509050019250505060405180910390f35b34801561095057600080fd5b50610959611b13565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561099957808201518184015260208101905061097e565b50505050905090810190601f1680156109c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109e057600080fd5b50610a096004803603810190808035906020019092919080359060200190929190505050611b4c565b6040518082815260200191505060405180910390f35b348015610a2b57600080fd5b50610a34611b61565b6040518082815260200191505060405180910390f35b348015610a5657600080fd5b50610ae8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611b67565b604051808215151515815260200191505060405180910390f35b348015610b0e57600080fd5b50610b17611bd8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610b5a578082015181840152602081019050610b3f565b505050509050019250505060405180910390f35b348015610b7a57600080fd5b50610b9c600480360381019080803560ff169060200190929190505050611c66565b005b348015610baa57600080fd5b50610bb3611ce8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bf3578082015181840152602081019050610bd8565b50505050905090810190601f168015610c205780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600381815481101515610c3d57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ca657600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ccc57600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610d2557600080fd5b60038290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600460009054906101000a900460ff1660ff16141515610e0b57610e0a81611c66565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e4957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610e6f57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610ec857600080fd5b60018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460009054906101000a900460ff16905090565b60026020528060005260406000206000915054906101000a900460ff1681565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308b8b8b8b8b8b8b8b604051808c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140188815260200187805190602001908083835b6020831015156111ba5780518252602082019150602081019050602083039250611195565b6001836020036101000a0380198251168184511680821785525050505050509050018660028111156111e857fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018581526020018481526020018381526020018281526020019b5050505050505050505050506040518091039020905098975050505050505050565b6000803073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561128a57600080fd5b5a905061129a868686865a611d21565b15156112a557600080fd5b5a8103915050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112ed57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561131357600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561136c57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660038481548110151561139257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156113df57600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060038481548110151561149f57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000805a915061150f6115078d8d8d8d8d8d8d600654611016565b868686611e1e565b600660008154809291906001019190505550876127105a031015151561153457600080fd5b6115418c8c8c8c8c611d21565b1515611574577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b6115805a830388611b4c565b90503273ffffffffffffffffffffffffffffffffffffffff166108fc8783029081150290604051600060405180830381858888f193505050501580156115ca573d6000803e3d6000fd5b50505050505050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561161357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660018381548110151561163957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168657600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001808080549050038154811015156116f357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018381548110151561172d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600180548091906001900361178a91906121c3565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117c957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156117ef57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018181548110151561184157fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118aa57600080fd5b8060ff16600160038054905003101515156118c457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166003848154811015156118ea57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561193757600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060036001600380549050038154811015156119a657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003848154811015156119e057fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003805480919060019003611a3d91906121ef565b508060ff16600460009054906101000a900460ff1660ff16141515611a6657611a6581611c66565b5b505050565b611a758484611fb8565b611a7f8282612146565b50505050565b60606003805480602002602001604051908101604052809291908181526020018280548015611b0957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611abf575b5050505050905090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b60006152086127108385010101905092915050565b60065481565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611bc157600080fd5b611bce858585855a611d21565b9050949350505050565b60606001805480602002602001604051908101604052809291908181526020018280548015611c5c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611c12575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ca057600080fd5b6003805490508160ff1611151515611cb757600080fd5b60018160ff1610151515611cca57600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115611d3157fe5b846002811115611d3d57fe5b1415611d5657611d4f87878786612181565b9150611e14565b60016002811115611d6357fe5b846002811115611d6f57fe5b1415611d8757611d8087868561219a565b9150611e13565b611d90856121b1565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000809250600090505b600460009054906101000a900460ff1660ff16811015611faf576001878783815181101515611e5657fe5b906020019060200201518784815181101515611e6e57fe5b906020019060200201518785815181101515611e8657fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611f01573d6000803e3d6000fd5b505050602060405103519150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611f6557600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16111515611f9f57600080fd5b8192508080600101915050611e2b565b50505050505050565b6000806000600460009054906101000a900460ff1660ff16141515611fdc57600080fd5b83518360ff1611151515611fef57600080fd5b60018360ff161015151561200257600080fd5b600091505b835182101561210e57838281518110151561201e57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561205057600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156120a957600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050612007565b836003908051906020019061212492919061221b565b5082600460006101000a81548160ff021916908360ff16021790555050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1614151561217d5761217182825a61219a565b151561217c57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b8154818355818111156121ea578183600052602060002091820191016121e991906122a5565b5b505050565b8154818355818111156122165781836000526020600020918201910161221591906122a5565b5b505050565b828054828255906000526020600020908101928215612294579160200282015b828111156122935782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061223b565b5b5090506122a191906122ca565b5090565b6122c791905b808211156122c35760008160009055506001016122ab565b5090565b90565b61230a91905b8082111561230657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016122d0565b5090565b905600a165627a7a72305820ca10892c4ea05a472842c591f096020bf8935e317ef2e73a23019987aca937590029", - "deployedBytecode": "0x608060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146101355780630e5229b0146101a25780631ed86f19146101f25780632f54bf6e1461023557806342cde4e81461029057806342f6e389146102c15780634db5d0391461031c57806351cf63851461040057806354e99c6e146104b45780637b6d3eeb146105215780637c6401d3146106a85780637de7edef146106f557806381b2248a14610738578063842b954e146107a5578063a04222e1146107ff578063a0e67e2b146108d8578063a3f4df7e14610944578063ad8a0450146109d4578063affed0e014610a1f578063b021640a14610a4a578063b2494df314610b02578063b7f3358d14610b6e578063ffa1ad7414610b9e575b005b34801561014157600080fd5b5061016060048036038101908080359060200190929190505050610c2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101ae57600080fd5b506101f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610c6c565b005b3480156101fe57600080fd5b50610233600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e0f565b005b34801561024157600080fd5b50610276600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f89565b604051808215151515815260200191505060405180910390f35b34801561029c57600080fd5b506102a5610fdf565b604051808260ff1660ff16815260200191505060405180910390f35b3480156102cd57600080fd5b50610302600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ff6565b604051808215151515815260200191505060405180910390f35b34801561032857600080fd5b506103e2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611016565b60405180826000191660001916815260200191505060405180910390f35b34801561040c57600080fd5b5061049e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919050505061124d565b6040518082815260200191505060405180910390f35b3480156104c057600080fd5b5061051f60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112b3565b005b34801561052d57600080fd5b506106a6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506114ec565b005b3480156106b457600080fd5b506106f360048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115d9565b005b34801561070157600080fd5b50610736600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061178f565b005b34801561074457600080fd5b5061076360048036038101908080359060200190929190505050611832565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107b157600080fd5b506107fd60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611870565b005b34801561080b57600080fd5b506108d660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611a6b565b005b3480156108e457600080fd5b506108ed611a85565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610930578082015181840152602081019050610915565b505050509050019250505060405180910390f35b34801561095057600080fd5b50610959611b13565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561099957808201518184015260208101905061097e565b50505050905090810190601f1680156109c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109e057600080fd5b50610a096004803603810190808035906020019092919080359060200190929190505050611b4c565b6040518082815260200191505060405180910390f35b348015610a2b57600080fd5b50610a34611b61565b6040518082815260200191505060405180910390f35b348015610a5657600080fd5b50610ae8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611b67565b604051808215151515815260200191505060405180910390f35b348015610b0e57600080fd5b50610b17611bd8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610b5a578082015181840152602081019050610b3f565b505050509050019250505060405180910390f35b348015610b7a57600080fd5b50610b9c600480360381019080803560ff169060200190929190505050611c66565b005b348015610baa57600080fd5b50610bb3611ce8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bf3578082015181840152602081019050610bd8565b50505050905090810190601f168015610c205780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600381815481101515610c3d57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ca657600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ccc57600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610d2557600080fd5b60038290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600460009054906101000a900460ff1660ff16141515610e0b57610e0a81611c66565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e4957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610e6f57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610ec857600080fd5b60018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460009054906101000a900460ff16905090565b60026020528060005260406000206000915054906101000a900460ff1681565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308b8b8b8b8b8b8b8b604051808c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140188815260200187805190602001908083835b6020831015156111ba5780518252602082019150602081019050602083039250611195565b6001836020036101000a0380198251168184511680821785525050505050509050018660028111156111e857fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018581526020018481526020018381526020018281526020019b5050505050505050505050506040518091039020905098975050505050505050565b6000803073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561128a57600080fd5b5a905061129a868686865a611d21565b15156112a557600080fd5b5a8103915050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112ed57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561131357600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561136c57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660038481548110151561139257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156113df57600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060038481548110151561149f57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000805a915061150f6115078d8d8d8d8d8d8d600654611016565b868686611e1e565b600660008154809291906001019190505550876127105a031015151561153457600080fd5b6115418c8c8c8c8c611d21565b1515611574577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b6115805a830388611b4c565b90503273ffffffffffffffffffffffffffffffffffffffff166108fc8783029081150290604051600060405180830381858888f193505050501580156115ca573d6000803e3d6000fd5b50505050505050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561161357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660018381548110151561163957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168657600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001808080549050038154811015156116f357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018381548110151561172d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600180548091906001900361178a91906121c3565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117c957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156117ef57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018181548110151561184157fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118aa57600080fd5b8060ff16600160038054905003101515156118c457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166003848154811015156118ea57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561193757600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060036001600380549050038154811015156119a657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003848154811015156119e057fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003805480919060019003611a3d91906121ef565b508060ff16600460009054906101000a900460ff1660ff16141515611a6657611a6581611c66565b5b505050565b611a758484611fb8565b611a7f8282612146565b50505050565b60606003805480602002602001604051908101604052809291908181526020018280548015611b0957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611abf575b5050505050905090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b60006152086127108385010101905092915050565b60065481565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611bc157600080fd5b611bce858585855a611d21565b9050949350505050565b60606001805480602002602001604051908101604052809291908181526020018280548015611c5c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611c12575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ca057600080fd5b6003805490508160ff1611151515611cb757600080fd5b60018160ff1610151515611cca57600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115611d3157fe5b846002811115611d3d57fe5b1415611d5657611d4f87878786612181565b9150611e14565b60016002811115611d6357fe5b846002811115611d6f57fe5b1415611d8757611d8087868561219a565b9150611e13565b611d90856121b1565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000809250600090505b600460009054906101000a900460ff1660ff16811015611faf576001878783815181101515611e5657fe5b906020019060200201518784815181101515611e6e57fe5b906020019060200201518785815181101515611e8657fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611f01573d6000803e3d6000fd5b505050602060405103519150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611f6557600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16111515611f9f57600080fd5b8192508080600101915050611e2b565b50505050505050565b6000806000600460009054906101000a900460ff1660ff16141515611fdc57600080fd5b83518360ff1611151515611fef57600080fd5b60018360ff161015151561200257600080fd5b600091505b835182101561210e57838281518110151561201e57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561205057600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156120a957600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050612007565b836003908051906020019061212492919061221b565b5082600460006101000a81548160ff021916908360ff16021790555050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1614151561217d5761217182825a61219a565b151561217c57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b8154818355818111156121ea578183600052602060002091820191016121e991906122a5565b5b505050565b8154818355818111156122165781836000526020600020918201910161221591906122a5565b5b505050565b828054828255906000526020600020908101928215612294579160200282015b828111156122935782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061223b565b5b5090506122a191906122ca565b5090565b6122c791905b808211156122c35760008160009055506001016122ab565b5090565b90565b61230a91905b8082111561230657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016122d0565b5090565b905600a165627a7a72305820ca10892c4ea05a472842c591f096020bf8935e317ef2e73a23019987aca937590029", - "sourceMap": "314:5265:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;314:5265:3;;;;;;;", - "deployedSourceMap": "314:5265:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1737:431;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1737:431:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1166:300:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1166:300:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;4552:125:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4552:125:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4436:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4436:110:10;;;;;;;;;;;;;;;;;;;;;;;;;;;599:41:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;599:41:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5153:424:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5153:424:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3798:294;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3798:294:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3419:501:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3419:501:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1443:1009:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1443:1009:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1722:336:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1722:336:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;500:23:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:599:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2499:599:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4759:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4759:111:10;;;;;;;;;;;;;;;;;382:60:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;382: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;382:60:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2884:209:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;644:20:3;;;;;;;;;;;;;;;;;;;;;;;2394:361:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2394:361:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4279:112: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;4279:112:9;;;;;;;;;;;;;;;;;4109:321:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4109:321:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;448:40:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;448: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;448:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1737:431::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1894:1:10;1885:5;:10;;;;1877:19;;;;;;;;1955:7;:14;1963:5;1955:14;;;;;;;;;;;;;;;;;;;;;;;;;1954:15;1946:24;;;;;;;;1980:6;1992:5;1980:18;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1980:18:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025:4;2008:7;:14;2016:5;2008:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;2110:10;2097:23;;:9;;;;;;;;;;;:23;;;;2093:68;;;2134:27;2150:10;2134:15;:27::i;:::-;2093:68;1737:431;;:::o;1166:300:9:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1317:1:9;1306:6;1298:20;;;;1290:29;;;;;;;;1379:8;:16;1388:6;1379:16;;;;;;;;;;;;;;;;;;;;;;;;;1378:17;1370:26;;;;;;;;1406:7;1419:6;1406:20;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1406:20:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1455:4;1436:8;:16;1445:6;1436:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1166:300;:::o;4552:125:10:-;4629:4;4656:7;:14;4664:5;4656:14;;;;;;;;;;;;;;;;;;;;;;;;;4649:21;;4552:125;;;:::o;4436:110::-;4502:5;4530:9;;;;;;;;;;;4523:16;;4436:110;:::o;599:41:9:-;;;;;;;;;;;;;;;;;;;;;;:::o;5153:424:3:-;5438:7;5483:4;5478:10;;5495:1;5490:7;;5499:4;5505:2;5509:5;5516:4;5522:9;5533;5544:7;5553:8;5563:6;5468:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;5468:102:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5461:109;;5153:424;;;;;;;;;;:::o;3798:294::-;3932:7;3955:16;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;3974:9:3;3955:28;;4001:46;4009:2;4013:5;4020:4;4026:9;4037;4001:7;:46::i;:::-;3993:55;;;;;;;;4076:9;4065:8;:20;4058:27;;3798:294;;;;;;;:::o;3419:501:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;3609:1:10;3597:8;:13;;;;3589:22;;;;;;;;3670:7;:17;3678:8;3670:17;;;;;;;;;;;;;;;;;;;;;;;;;3669:18;3661:27;;;;;;;;3793:8;3768:33;;:6;3775:13;3768:21;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;3760:42;;;;;;;;3832:5;3812:7;:17;3820:8;3812:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;3867:4;3847:7;:17;3855:8;3847:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3905:8;3881:6;3888:13;3881:21;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;3419:501;;;:::o;1443:1009:3:-;1754:16;2143;1773:9;1754:28;;1792:103;1802:83;1821:2;1825:5;1832:4;1838:9;1849;1860:7;1869:8;1879:5;;1802:18;:83::i;:::-;1887:1;1890;1893;1792:9;:103::i;:::-;1956:5;;:7;;;;;;;;;;;;;2014:9;602:5;1981:9;:29;:42;;1973:51;;;;;;;;2039:46;2047:2;2051:5;2058:4;2064:9;2075;2039:7;:46::i;:::-;2038:47;2034:100;;;2106:17;;;;;;;;;;2034:100;2162:44;2187:9;2176:8;:20;2198:7;2162:13;:44::i;:::-;2143:63;;2406:9;:18;;:39;2436:8;2425;:19;2406:39;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2406:39:3;1443:1009;;;;;;;;;;;;:::o;1722:336:9:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1924:6:9;1900:30;;:7;1908:11;1900:20;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;1892:39;;;;;;;;1960:5;1941:8;:16;1950:6;1941:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;1998:7;2023:1;2006:7;:14;;;;:18;1998:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:7;1983:11;1975:20;;;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;2035:7;:16;;;;;;;;;;;;:::i;:::-;;1722:336;;:::o;626:208:6:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;500:23:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2499:599:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;2727:10:10;2706:31;;2722:1;2706:6;:13;;;;:17;:31;;2698:40;;;;;;;;2840:5;2818:27;;:6;2825:10;2818:18;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;2810:36;;;;;;;;2873:5;2856:7;:14;2864:5;2856:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;2909:6;2932:1;2916:6;:13;;;;:17;2909:25;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:6;2895:10;2888:18;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2944:6;:15;;;;;;;;;;;;:::i;:::-;;3040:10;3027:23;;:9;;;;;;;;;;;:23;;;;3023:68;;;3064:27;3080:10;3064:15;:27::i;:::-;3023:68;2499:599;;;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;4759:111:10:-;4825:9;4857:6;4850:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111;:::o;382:60:3:-;;;;;;;;;;;;;;;;;;;;:::o;2884:209::-;2993:7;545:5;602;3039:7;3024:12;:22;:42;:62;3017:69;;2884:209;;;;:::o;644:20::-;;;;:::o;2394:361:9:-;2514:12;2599:8;:20;2608:10;2599:20;;;;;;;;;;;;;;;;;;;;;;;;;2591:29;;;;;;;;2702:46;2710:2;2714:5;2721:4;2727:9;2738;2702:7;:46::i;:::-;2692:56;;2394:361;;;;;;:::o;4279:112::-;4346:8;4377:7;4370:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;:::o;4109:321:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;4291:6:10;:13;;;;4277:10;:27;;;;4269:36;;;;;;;;4389:1;4375:10;:15;;;;4367:24;;;;;;;;4413:10;4401:9;;:22;;;;;;;;;;;;;;;;;;4109:321;:::o;448:40:3:-;;;;;;;;;;;;;;;;;;;;:::o;2761:548:9:-;2892:12;3163:19;2937;2924:32;;;;;;;;:9;:32;;;;;;;;;2920:383;;;2980:35;2992:2;2996:5;3003:4;3009:5;2980:11;:35::i;:::-;2970:45;;2920:383;;;3047:27;3034:40;;;;;;;;:9;:40;;;;;;;;;3030:273;;;3098:36;3118:2;3122:4;3128:5;3098:19;:36::i;:::-;3088:46;;3030:273;;;3185:19;3199:4;3185:13;:19::i;:::-;3163:41;;3243:1;3228:11;:16;;;;3218:26;;3263:29;3280:11;3263:29;;;;;;;;;;;;;;;;;;;;;;3030:273;2920:383;2761:548;;;;;;;;:::o;4098:537:3:-;4264:17;4304:20;4334:9;4292:1;4264:30;;4404:1;4400:5;;4395:234;4411:9;;;;;;;;;;;4407:13;;:1;:13;4395:234;;;4456:33;4466:4;4472:1;4474;4472:4;;;;;;;;;;;;;;;;;;4478:1;4480;4478:4;;;;;;;;;;;;;;;;;;4484:1;4486;4484:4;;;;;;;;;;;;;;;;;;4456:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4456:33:3;;;;;;;;4441:48;;4511:7;:21;4519:12;4511:21;;;;;;;;;;;;;;;;;;;;;;;;;4503:30;;;;;;;;4570:9;4555:24;;:12;:24;;;4547:33;;;;;;;;4606:12;4594:24;;4422:3;;;;;;;4395:234;;;4098:537;;;;;;;:::o;651:846:10:-;1147:9;1246:13;885:1;872:9;;;;;;;;;;;:14;;;864:23;;;;;;;;994:7;:14;980:10;:28;;;;972:37;;;;;;;;1093:1;1079:10;:15;;;;1071:24;;;;;;;;1159:1;1147:13;;1142:291;1166:7;:14;1162:1;:18;1142:291;;;1262:7;1270:1;1262:10;;;;;;;;;;;;;;;;;;1246:26;;1303:1;1294:5;:10;;;;1286:19;;;;;;;;1372:7;:14;1380:5;1372:14;;;;;;;;;;;;;;;;;;;;;;;;;1371:15;1363:24;;;;;;;;1418:4;1401:7;:14;1409:5;1401:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;1182:3;;;;;;;1142:291;;;1451:7;1442:6;:16;;;;;;;;;;;;:::i;:::-;;1480:10;1468:9;;:22;;;;;;;;;;;;;;;;;;651:846;;;;:::o;769:230:9:-;856:1;850:2;:7;;;;846:146;;;951:40;971:2;975:4;981:9;951:19;:40::i;:::-;943:49;;;;;;;;846:146;769:230;;:::o;3315:309::-;3424:12;3606:1;3603;3596:4;3590:11;3583:4;3577;3573:15;3566:5;3562:2;3555:5;3550:58;3539:69;;3525:93;;;;;;:::o;3630:303::-;3732:12;3915:1;3912;3905:4;3899:11;3892:4;3886;3882:15;3878:2;3871:5;3858:59;3847:70;;3833:94;;;;;:::o;3939:261::-;4008:19;4178:4;4172:11;4165:4;4159;4155:15;4152:1;4145:39;4130:54;;4116:78;;;:::o;314:5265:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.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 - \ncontract GnosisSafePersonalEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Personal Edition\";\n string public constant VERSION = \"0.0.1\";\n \n uint256 internal constant BASE_TX_GAS_COSTS = 21000;\n uint256 internal constant PAYMENT_GAS_COSTS = 10000;\n\n event ExecutionFailed();\n\n uint256 public nonce;\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 safeTxGas Gas that should be used for the Safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Gas price that should be used for the payment calculation.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function payAndExecuteTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas,\n uint256 dataGas,\n uint256 gasPrice,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n uint256 startGas = gasleft();\n checkHash(getTransactionHash(to, value, data, operation, safeTxGas, dataGas, gasPrice, nonce), v, r, s);\n // Increase nonce and execute transaction.\n nonce++;\n require(gasleft() - PAYMENT_GAS_COSTS >= safeTxGas);\n if (!execute(to, value, data, operation, safeTxGas)) {\n emit ExecutionFailed();\n }\n uint256 gasCosts = totalGasCosts(startGas - gasleft(), dataGas);\n\n // We transfer the calculated tx costs to the tx.origin to avoid sending it to intermediate contracts that have made calls\n // solium-disable-next-line security/no-tx-origin\n tx.origin.transfer(gasCosts * gasPrice);\n }\n\n /// @dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n /// @param executionGas Gas costs for the execution of the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).\n function totalGasCosts(uint256 executionGas, uint256 dataGas) \n public \n pure\n returns (uint256) \n {\n return executionGas + dataGas + PAYMENT_GAS_COSTS + BASE_TX_GAS_COSTS;\n }\n\n /// @dev Allows to estimate a Safe transaction. \n /// This method can only be used by the safe itself in a transaction. 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 `payAndExecuteTransaction`\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 estimate(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n authorized\n returns (uint256)\n {\n uint256 startGas = gasleft();\n require(execute(to, value, data, operation, gasleft()));\n return startGas - gasleft();\n }\n\n function checkHash(bytes32 hash, uint8[] v, bytes32[] r, bytes32[] s)\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 = ecrecover(hash, v[i], r[i], s[i]);\n require(isOwner[currentOwner]);\n require(currentOwner > lastOwner);\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 _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 uint256 _nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), byte(0), this, to, value, data, operation, safeTxGas, dataGas, gasPrice, _nonce);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50612b38806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630a51b01c1461012a5780632f54bf6e146102b1578063468721a71461030c5780634db5d039146103c4578063610b5925146104a85780637de7edef146104eb57806385e332cd1461052e57806386040aa9146105855780638cff6355146105f5578063a04222e11461064c578063a0e67e2b14610725578063a3f4df7e14610791578063ad8a045014610821578063affed0e01461086c578063b2494df314610897578063b7f3358d14610903578063b91a667f14610933578063c4ca3a9c14610983578063e009cfde14610a37578063e318b52b14610a9a578063e75235b814610b1d578063ffa1ad7414610b4e575b005b34801561013657600080fd5b506102af600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610bde565b005b3480156102bd57600080fd5b506102f2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ccb565b604051808215151515815260200191505060405180910390f35b34801561031857600080fd5b506103aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610d4d565b604051808215151515815260200191505060405180910390f35b3480156103d057600080fd5b5061048a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610dea565b60405180826000191660001916815260200191505060405180910390f35b3480156104b457600080fd5b506104e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611021565b005b3480156104f757600080fd5b5061052c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129e565b005b34801561053a57600080fd5b50610543611341565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059157600080fd5b506105f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611346565b005b34801561060157600080fd5b5061060a6115cc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065857600080fd5b5061072360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506115d1565b005b34801561073157600080fd5b5061073a6115eb565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561077d578082015181840152602081019050610762565b505050509050019250505060405180910390f35b34801561079d57600080fd5b506107a6611786565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107e65780820151818401526020810190506107cb565b50505050905090810190601f1680156108135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561082d57600080fd5b5061085660048036038101908080359060200190929190803590602001909291905050506117bf565b6040518082815260200191505060405180910390f35b34801561087857600080fd5b506108816117d4565b6040518082815260200191505060405180910390f35b3480156108a357600080fd5b506108ac6117da565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108ef5780820151818401526020810190506108d4565b505050509050019250505060405180910390f35b34801561090f57600080fd5b50610931600480360381019080803560ff169060200190929190505050611a81565b005b34801561093f57600080fd5b50610981600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b00565b005b34801561098f57600080fd5b50610a21600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611db8565b6040518082815260200191505060405180910390f35b348015610a4357600080fd5b50610a98600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e1e565b005b348015610aa657600080fd5b50610b1b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612051565b005b348015610b2957600080fd5b50610b326123e6565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b5a57600080fd5b50610b636123fd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ba3578082015181840152602081019050610b88565b50505050905090810190601f168015610bd05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000805a9150610c01610bf98d8d8d8d8d8d8d600554610dea565b868686612436565b60056000815480929190600101919050555087612af85a0310151515610c2657600080fd5b610c338c8c8c8c8c6125fd565b1515610c66577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b610c725a8303886117bf565b90503273ffffffffffffffffffffffffffffffffffffffff166108fc8783029081150290604051600060405180830381858888f19350505050158015610cbc573d6000803e3d6000fd5b50505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610dd357600080fd5b610de0858585855a6125fd565b9050949350505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308b8b8b8b8b8b8b8b604051808c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140188815260200187805190602001908083835b602083101515610f8e5780518252602082019150602081019050602083039250610f69565b6001836020036101000a038019825116818451168082178552505050505050905001866002811115610fbc57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018581526020018481526020018381526020018281526020019b5050505050505050505050506040518091039020905098975050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561105b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156110af5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156110ba57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561113e57600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112d857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156112fe57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561138057600080fd5b8060ff166001600354031015151561139757600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561143057600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff161415156115c7576115c681611a81565b5b505050565b600181565b6115db84846126fa565b6115e5828261298b565b50505050565b6060806000806003546040519080825280602002602001820160405280156116225781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561177d578083838151811015156116d257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818060010192505061168d565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156118ee57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611849565b8260405190808252806020026020018201604052801561191d5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611a78578181848151811015156119cd57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611988565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611abb57600080fd5b6003548160ff1611151515611acf57600080fd5b60018160ff1610151515611ae257600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b3a57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611b8e5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611b9957600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c1d57600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611db457611db381611a81565b5b5050565b6000803073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611df557600080fd5b5a9050611e05868686865a6125fd565b1515611e1057600080fd5b5a8103915050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e5857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611ef157600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561208b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120df5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156120ea57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561216e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561220757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156125f457600187878381518110151561246e57fe5b90602001906020020151878481518110151561248657fe5b90602001906020020151878581518110151561249e57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015612519573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156125aa57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161115156125e457600080fd5b8192508080600101915050612443565b50505050505050565b6000806000600281111561260d57fe5b84600281111561261957fe5b14156126325761262b87878786612aca565b91506126f0565b6001600281111561263f57fe5b84600281111561264b57fe5b14156126635761265c878685612ae3565b91506126ef565b61266c85612afa565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff1614151561271f57600080fd5b84518460ff161115151561273257600080fd5b60018460ff161015151561274557600080fd5b60019250600091505b84518210156128e257848281518110151561276557fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156127c55750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156127d057600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561285457600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550809250818060010192505061274e565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a1057600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612ac657612aba82825a612ae3565b1515612ac557600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820ae084368703023e0af23298ba3bdd986ab72eb9889663044cee13cf3e0ae154c0029", + "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630a51b01c1461012a5780632f54bf6e146102b1578063468721a71461030c5780634db5d039146103c4578063610b5925146104a85780637de7edef146104eb57806385e332cd1461052e57806386040aa9146105855780638cff6355146105f5578063a04222e11461064c578063a0e67e2b14610725578063a3f4df7e14610791578063ad8a045014610821578063affed0e01461086c578063b2494df314610897578063b7f3358d14610903578063b91a667f14610933578063c4ca3a9c14610983578063e009cfde14610a37578063e318b52b14610a9a578063e75235b814610b1d578063ffa1ad7414610b4e575b005b34801561013657600080fd5b506102af600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610bde565b005b3480156102bd57600080fd5b506102f2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ccb565b604051808215151515815260200191505060405180910390f35b34801561031857600080fd5b506103aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610d4d565b604051808215151515815260200191505060405180910390f35b3480156103d057600080fd5b5061048a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610dea565b60405180826000191660001916815260200191505060405180910390f35b3480156104b457600080fd5b506104e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611021565b005b3480156104f757600080fd5b5061052c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129e565b005b34801561053a57600080fd5b50610543611341565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059157600080fd5b506105f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611346565b005b34801561060157600080fd5b5061060a6115cc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065857600080fd5b5061072360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506115d1565b005b34801561073157600080fd5b5061073a6115eb565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561077d578082015181840152602081019050610762565b505050509050019250505060405180910390f35b34801561079d57600080fd5b506107a6611786565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107e65780820151818401526020810190506107cb565b50505050905090810190601f1680156108135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561082d57600080fd5b5061085660048036038101908080359060200190929190803590602001909291905050506117bf565b6040518082815260200191505060405180910390f35b34801561087857600080fd5b506108816117d4565b6040518082815260200191505060405180910390f35b3480156108a357600080fd5b506108ac6117da565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108ef5780820151818401526020810190506108d4565b505050509050019250505060405180910390f35b34801561090f57600080fd5b50610931600480360381019080803560ff169060200190929190505050611a81565b005b34801561093f57600080fd5b50610981600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b00565b005b34801561098f57600080fd5b50610a21600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611db8565b6040518082815260200191505060405180910390f35b348015610a4357600080fd5b50610a98600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e1e565b005b348015610aa657600080fd5b50610b1b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612051565b005b348015610b2957600080fd5b50610b326123e6565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b5a57600080fd5b50610b636123fd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ba3578082015181840152602081019050610b88565b50505050905090810190601f168015610bd05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000805a9150610c01610bf98d8d8d8d8d8d8d600554610dea565b868686612436565b60056000815480929190600101919050555087612af85a0310151515610c2657600080fd5b610c338c8c8c8c8c6125fd565b1515610c66577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b610c725a8303886117bf565b90503273ffffffffffffffffffffffffffffffffffffffff166108fc8783029081150290604051600060405180830381858888f19350505050158015610cbc573d6000803e3d6000fd5b50505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610dd357600080fd5b610de0858585855a6125fd565b9050949350505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308b8b8b8b8b8b8b8b604051808c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140188815260200187805190602001908083835b602083101515610f8e5780518252602082019150602081019050602083039250610f69565b6001836020036101000a038019825116818451168082178552505050505050905001866002811115610fbc57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018581526020018481526020018381526020018281526020019b5050505050505050505050506040518091039020905098975050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561105b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156110af5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156110ba57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561113e57600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112d857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156112fe57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561138057600080fd5b8060ff166001600354031015151561139757600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561143057600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff161415156115c7576115c681611a81565b5b505050565b600181565b6115db84846126fa565b6115e5828261298b565b50505050565b6060806000806003546040519080825280602002602001820160405280156116225781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561177d578083838151811015156116d257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818060010192505061168d565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156118ee57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611849565b8260405190808252806020026020018201604052801561191d5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611a78578181848151811015156119cd57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611988565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611abb57600080fd5b6003548160ff1611151515611acf57600080fd5b60018160ff1610151515611ae257600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b3a57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611b8e5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611b9957600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c1d57600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611db457611db381611a81565b5b5050565b6000803073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611df557600080fd5b5a9050611e05868686865a6125fd565b1515611e1057600080fd5b5a8103915050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e5857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611ef157600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561208b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120df5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156120ea57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561216e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561220757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156125f457600187878381518110151561246e57fe5b90602001906020020151878481518110151561248657fe5b90602001906020020151878581518110151561249e57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015612519573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156125aa57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161115156125e457600080fd5b8192508080600101915050612443565b50505050505050565b6000806000600281111561260d57fe5b84600281111561261957fe5b14156126325761262b87878786612aca565b91506126f0565b6001600281111561263f57fe5b84600281111561264b57fe5b14156126635761265c878685612ae3565b91506126ef565b61266c85612afa565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff1614151561271f57600080fd5b84518460ff161115151561273257600080fd5b60018460ff161015151561274557600080fd5b60019250600091505b84518210156128e257848281518110151561276557fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156127c55750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156127d057600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561285457600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550809250818060010192505061274e565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a1057600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612ac657612aba82825a612ae3565b1515612ac557600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820ae084368703023e0af23298ba3bdd986ab72eb9889663044cee13cf3e0ae154c0029", + "sourceMap": "314:5262:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;314:5262:2;;;;;;;", + "deployedSourceMap": "314:5262:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1443:1003;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1443:1003:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5150:424:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5150:424:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052: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;5052:458:7;;;;;;;;;;;;;;;;;382:60:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;382: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;382:60:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2878:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2878:209:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;644:20:2;;;;;;;;;;;;;;;;;;;;;;;4423:738:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423: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;4423:738:6;;;;;;;;;;;;;;;;;4398:318:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3786:299:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3786:299:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887::6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:7;;;;;;;;;;;;;;;;;;;;;;;;;;;448:40:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;448: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;448:40:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1443:1003;1748:16;2137;1767:9;1748:28;;1786:103;1796:83;1815:2;1819:5;1826:4;1832:9;1843;1854:7;1863:8;1873:5;;1796:18;:83::i;:::-;1881:1;1884;1887;1786:9;:103::i;:::-;1950:5;;:7;;;;;;;;;;;;;2008:9;602:5;1975:9;:29;:42;;1967:51;;;;;;;;2033:46;2041:2;2045:5;2052:4;2058:9;2069;2033:7;:46::i;:::-;2032:47;2028:100;;;2100:17;;;;;;;;;;2028:100;2156:44;2181:9;2170:8;:20;2192:7;2156:13;:44::i;:::-;2137:63;;2400:9;:18;;:39;2430:8;2419;:19;2400:39;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2400:39:2;1443:1003;;;;;;;;;;;;:::o;4841:129:7:-;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:6:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;5150:424:2:-;5435:7;5480:4;5475:10;;5492:1;5487:7;;5496:4;5502:2;5506:5;5513:4;5519:9;5530;5541:7;5550:8;5560:6;5465:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;5465:102:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5458:109;;5150:424;;;;;;;;;;:::o;1235:391:6:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:6;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;626:208:4:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;499:55:6:-;550:3;499:55;:::o;2776:573:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:7;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::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;5052:458:7:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168: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;5168:25:7;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;382:60:2:-;;;;;;;;;;;;;;;;;;;;:::o;2878:209::-;2987:7;545:5;602;3033:7;3018:12;:22;:42;:62;3011:69;;2878:209;;;;:::o;644:20::-;;;;:::o;4423:738:6:-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807: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;4807:26:6;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:7;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:7;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;3786:299:2:-;3925:7;3948:16;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3967:9:2;3948:28;;3994:46;4002:2;4006:5;4013:4;4019:9;4030;3994:7;:46::i;:::-;3986:55;;;;;;;;4069:9;4058:8;:20;4051:27;;3786:299;;;;;;;:::o;1887::6:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:6;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:7;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;448:40:2:-;;;;;;;;;;;;;;;;;;;;:::o;4091:541::-;4257:17;4297:20;4327:9;4285:1;4257:30;;4397:1;4393:5;;4388:238;4404:9;;;;;;;;;;;4400:13;;:1;:13;4388:238;;;4449:33;4459:4;4465:1;4467;4465:4;;;;;;;;;;;;;;;;;;4471:1;4473;4471:4;;;;;;;;;;;;;;;;;;4477:1;4479;4477:4;;;;;;;;;;;;;;;;;;4449:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4449:33:2;;;;;;;;4434:48;;4528:1;4504:6;:20;4511:12;4504:20;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;4496:34;;;;;;;;4567:9;4552:24;;:12;:24;;;4544:33;;;;;;;;4603:12;4591:24;;4415:3;;;;;;;4388:238;;;4091:541;;;;;;;:::o;2905:548:6:-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:7:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:6:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", + "source": "pragma solidity 0.4.23;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.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 - \ncontract GnosisSafePersonalEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Personal Edition\";\n string public constant VERSION = \"0.0.1\";\n \n uint256 internal constant BASE_TX_GAS_COSTS = 21000;\n uint256 internal constant PAYMENT_GAS_COSTS = 11000;\n\n event ExecutionFailed();\n\n uint256 public nonce;\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 safeTxGas Gas that should be used for the Safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Gas price that should be used for the payment calculation.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execPayTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas,\n uint256 dataGas,\n uint256 gasPrice,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n uint256 startGas = gasleft();\n checkHash(getTransactionHash(to, value, data, operation, safeTxGas, dataGas, gasPrice, nonce), v, r, s);\n // Increase nonce and execute transaction.\n nonce++;\n require(gasleft() - PAYMENT_GAS_COSTS >= safeTxGas);\n if (!execute(to, value, data, operation, safeTxGas)) {\n emit ExecutionFailed();\n }\n uint256 gasCosts = totalGasCosts(startGas - gasleft(), dataGas);\n\n // We transfer the calculated tx costs to the tx.origin to avoid sending it to intermediate contracts that have made calls\n // solium-disable-next-line security/no-tx-origin\n tx.origin.transfer(gasCosts * gasPrice);\n }\n\n /// @dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n /// @param executionGas Gas costs for the execution of the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).\n function totalGasCosts(uint256 executionGas, uint256 dataGas) \n public \n pure\n returns (uint256) \n {\n return executionGas + dataGas + PAYMENT_GAS_COSTS + BASE_TX_GAS_COSTS;\n }\n\n /// @dev Allows to estimate a Safe transaction. \n /// This method can only be used by the safe itself in a transaction. 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 `execPayTransaction`\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 require(execute(to, value, data, operation, gasleft()));\n return startGas - gasleft();\n }\n\n function checkHash(bytes32 hash, uint8[] v, bytes32[] r, bytes32[] s)\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 = ecrecover(hash, v[i], r[i], s[i]);\n require(owners[currentOwner] != 0);\n require(currentOwner > lastOwner);\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 _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 uint256 _nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), byte(0), this, to, value, data, operation, safeTxGas, dataGas, gasPrice, _nonce);\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": [ - 346 + 324 ] }, - "id": 347, + "id": 325, "nodeType": "SourceUnit", "nodes": [ { - "id": 65, + "id": 41, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:3" + "src": "0:23:2" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 66, + "id": 42, "nodeType": "ImportDirective", - "scope": 347, - "sourceUnit": 64, - "src": "24:26:3", + "scope": 325, + "sourceUnit": 40, + "src": "24:26:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 67, + "id": 43, "nodeType": "ImportDirective", - "scope": 347, - "sourceUnit": 780, - "src": "51:26:3", + "scope": 325, + "sourceUnit": 581, + "src": "51:26:2", "symbolAliases": [], "unitAlias": "" }, @@ -569,68 +540,68 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 68, + "id": 44, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 779, - "src": "352:10:3", + "referencedDeclaration": 580, + "src": "352:10:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$779", + "typeIdentifier": "t_contract$_MasterCopy_$580", "typeString": "contract MasterCopy" } }, - "id": 69, + "id": 45, "nodeType": "InheritanceSpecifier", - "src": "352:10:3" + "src": "352:10:2" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 70, + "id": 46, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 63, - "src": "364:10:3", + "referencedDeclaration": 39, + "src": "364:10:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$63", + "typeIdentifier": "t_contract$_GnosisSafe_$39", "typeString": "contract GnosisSafe" } }, - "id": 71, + "id": 47, "nodeType": "InheritanceSpecifier", - "src": "364:10:3" + "src": "364:10:2" } ], "contractDependencies": [ - 63, - 779, - 1142, - 1438, - 1559 + 39, + 580, + 971, + 1343, + 1359 ], "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 - ", "fullyImplemented": true, - "id": 346, + "id": 324, "linearizedBaseContracts": [ - 346, - 63, - 1438, - 1142, - 779, - 1559 + 324, + 39, + 1343, + 971, + 580, + 1359 ], "name": "GnosisSafePersonalEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 74, + "id": 50, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 346, - "src": "382:60:3", + "scope": 324, + "src": "382:60:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -638,10 +609,10 @@ "typeString": "string" }, "typeName": { - "id": 72, + "id": 48, "name": "string", "nodeType": "ElementaryTypeName", - "src": "382:6:3", + "src": "382:6:2", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -650,14 +621,14 @@ "value": { "argumentTypes": null, "hexValue": "476e6f736973205361666520506572736f6e616c2045646974696f6e", - "id": 73, + "id": 49, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "412:30:3", + "src": "412:30:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b657d2895d137bf089ce1df776b732639b1ebc2a3aec3bd837e225e9e0965154", @@ -669,11 +640,11 @@ }, { "constant": true, - "id": 77, + "id": 53, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 346, - "src": "448:40:3", + "scope": 324, + "src": "448:40:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -681,10 +652,10 @@ "typeString": "string" }, "typeName": { - "id": 75, + "id": 51, "name": "string", "nodeType": "ElementaryTypeName", - "src": "448:6:3", + "src": "448:6:2", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -693,14 +664,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 76, + "id": 52, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "481:7:3", + "src": "481:7:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -712,11 +683,11 @@ }, { "constant": true, - "id": 80, + "id": 56, "name": "BASE_TX_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 346, - "src": "499:51:3", + "scope": 324, + "src": "499:51:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -724,10 +695,10 @@ "typeString": "uint256" }, "typeName": { - "id": 78, + "id": 54, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "499:7:3", + "src": "499:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -736,14 +707,14 @@ "value": { "argumentTypes": null, "hexValue": "3231303030", - "id": 79, + "id": 55, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "545:5:3", + "src": "545:5:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_21000_by_1", @@ -755,11 +726,11 @@ }, { "constant": true, - "id": 83, + "id": 59, "name": "PAYMENT_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 346, - "src": "556:51:3", + "scope": 324, + "src": "556:51:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -767,10 +738,10 @@ "typeString": "uint256" }, "typeName": { - "id": 81, + "id": 57, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "556:7:3", + "src": "556:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -778,45 +749,45 @@ }, "value": { "argumentTypes": null, - "hexValue": "3130303030", - "id": 82, + "hexValue": "3131303030", + "id": 58, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "602:5:3", + "src": "602:5:2", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_rational_10000_by_1", - "typeString": "int_const 10000" + "typeIdentifier": "t_rational_11000_by_1", + "typeString": "int_const 11000" }, - "value": "10000" + "value": "11000" }, "visibility": "internal" }, { "anonymous": false, "documentation": null, - "id": 85, + "id": 61, "name": "ExecutionFailed", "nodeType": "EventDefinition", "parameters": { - "id": 84, + "id": 60, "nodeType": "ParameterList", "parameters": [], - "src": "635:2:3" + "src": "635:2:2" }, - "src": "614:24:3" + "src": "614:24:2" }, { "constant": false, - "id": 87, + "id": 63, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 346, - "src": "644:20:3", + "scope": 324, + "src": "644:20:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -824,10 +795,10 @@ "typeString": "uint256" }, "typeName": { - "id": 86, + "id": 62, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "644:7:3", + "src": "644:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -838,22 +809,22 @@ }, { "body": { - "id": 179, + "id": 155, "nodeType": "Block", - "src": "1744:708:3", + "src": "1738:708:2", "statements": [ { "assignments": [ - 114 + 90 ], "declarations": [ { "constant": false, - "id": 114, + "id": 90, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1754:16:3", + "scope": 156, + "src": "1748:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -861,10 +832,10 @@ "typeString": "uint256" }, "typeName": { - "id": 113, + "id": 89, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1754:7:3", + "src": "1748:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -874,24 +845,24 @@ "visibility": "internal" } ], - "id": 117, + "id": 93, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 115, + "id": 91, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "1773:7:3", + "referencedDeclaration": 2389, + "src": "1767:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 116, + "id": 92, "isConstant": false, "isLValue": false, "isPure": false, @@ -899,14 +870,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1773:9:3", + "src": "1767:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1754:28:3" + "src": "1748:28:2" }, { "expression": { @@ -917,12 +888,12 @@ "arguments": [ { "argumentTypes": null, - "id": 120, + "id": 96, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 89, - "src": "1821:2:3", + "referencedDeclaration": 65, + "src": "1815:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -930,12 +901,12 @@ }, { "argumentTypes": null, - "id": 121, + "id": 97, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 91, - "src": "1825:5:3", + "referencedDeclaration": 67, + "src": "1819:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -943,12 +914,12 @@ }, { "argumentTypes": null, - "id": 122, + "id": 98, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 93, - "src": "1832:4:3", + "referencedDeclaration": 69, + "src": "1826:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -956,25 +927,25 @@ }, { "argumentTypes": null, - "id": 123, + "id": 99, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 95, - "src": "1838:9:3", + "referencedDeclaration": 71, + "src": "1832:9:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 124, + "id": 100, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 97, - "src": "1849:9:3", + "referencedDeclaration": 73, + "src": "1843:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -982,12 +953,12 @@ }, { "argumentTypes": null, - "id": 125, + "id": 101, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 99, - "src": "1860:7:3", + "referencedDeclaration": 75, + "src": "1854:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -995,12 +966,12 @@ }, { "argumentTypes": null, - "id": 126, + "id": 102, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "1869:8:3", + "referencedDeclaration": 77, + "src": "1863:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1008,12 +979,12 @@ }, { "argumentTypes": null, - "id": 127, + "id": 103, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 87, - "src": "1879:5:3", + "referencedDeclaration": 63, + "src": "1873:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1035,7 +1006,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { @@ -1055,18 +1026,18 @@ "typeString": "uint256" } ], - "id": 119, + "id": 95, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 345, - "src": "1802:18:3", + "referencedDeclaration": 323, + "src": "1796:18:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,uint256) view returns (bytes32)" } }, - "id": 128, + "id": 104, "isConstant": false, "isLValue": false, "isPure": false, @@ -1074,7 +1045,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1802:83:3", + "src": "1796:83:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1082,12 +1053,12 @@ }, { "argumentTypes": null, - "id": 129, + "id": 105, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 104, - "src": "1887:1:3", + "referencedDeclaration": 80, + "src": "1881:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" @@ -1095,12 +1066,12 @@ }, { "argumentTypes": null, - "id": 130, + "id": 106, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 107, - "src": "1890:1:3", + "referencedDeclaration": 83, + "src": "1884:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -1108,12 +1079,12 @@ }, { "argumentTypes": null, - "id": 131, + "id": 107, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 110, - "src": "1893:1:3", + "referencedDeclaration": 86, + "src": "1887:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -1139,18 +1110,18 @@ "typeString": "bytes32[] memory" } ], - "id": 118, + "id": 94, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 305, - "src": "1792:9:3", + "referencedDeclaration": 283, + "src": "1786:9:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" } }, - "id": 132, + "id": 108, "isConstant": false, "isLValue": false, "isPure": false, @@ -1158,20 +1129,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1792:103:3", + "src": "1786:103:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 133, + "id": 109, "nodeType": "ExpressionStatement", - "src": "1792:103:3" + "src": "1786:103:2" }, { "expression": { "argumentTypes": null, - "id": 135, + "id": 111, "isConstant": false, "isLValue": false, "isPure": false, @@ -1179,15 +1150,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1956:7:3", + "src": "1950:7:2", "subExpression": { "argumentTypes": null, - "id": 134, + "id": 110, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 87, - "src": "1956:5:3", + "referencedDeclaration": 63, + "src": "1950:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1198,9 +1169,9 @@ "typeString": "uint256" } }, - "id": 136, + "id": 112, "nodeType": "ExpressionStatement", - "src": "1956:7:3" + "src": "1950:7:2" }, { "expression": { @@ -1212,7 +1183,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 143, + "id": 119, "isConstant": false, "isLValue": false, "isPure": false, @@ -1223,7 +1194,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 141, + "id": 117, "isConstant": false, "isLValue": false, "isPure": false, @@ -1233,18 +1204,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 138, + "id": 114, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "1981:7:3", + "referencedDeclaration": 2389, + "src": "1975:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 139, + "id": 115, "isConstant": false, "isLValue": false, "isPure": false, @@ -1252,7 +1223,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1981:9:3", + "src": "1975:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1262,18 +1233,18 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 140, + "id": 116, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 83, - "src": "1993:17:3", + "referencedDeclaration": 59, + "src": "1987:17:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1981:29:3", + "src": "1975:29:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1283,18 +1254,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 142, + "id": 118, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 97, - "src": "2014:9:3", + "referencedDeclaration": 73, + "src": "2008:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1981:42:3", + "src": "1975:42:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1308,21 +1279,21 @@ "typeString": "bool" } ], - "id": 137, + "id": 113, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1973:7:3", + "referencedDeclaration": 2399, + "src": "1967:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 144, + "id": 120, "isConstant": false, "isLValue": false, "isPure": false, @@ -1330,20 +1301,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1973:51:3", + "src": "1967:51:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 145, + "id": 121, "nodeType": "ExpressionStatement", - "src": "1973:51:3" + "src": "1967:51:2" }, { "condition": { "argumentTypes": null, - "id": 153, + "id": 129, "isConstant": false, "isLValue": false, "isPure": false, @@ -1351,18 +1322,18 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2038:47:3", + "src": "2032:47:2", "subExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 147, + "id": 123, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 89, - "src": "2047:2:3", + "referencedDeclaration": 65, + "src": "2041:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1370,12 +1341,12 @@ }, { "argumentTypes": null, - "id": 148, + "id": 124, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 91, - "src": "2051:5:3", + "referencedDeclaration": 67, + "src": "2045:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1383,12 +1354,12 @@ }, { "argumentTypes": null, - "id": 149, + "id": 125, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 93, - "src": "2058:4:3", + "referencedDeclaration": 69, + "src": "2052:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1396,25 +1367,25 @@ }, { "argumentTypes": null, - "id": 150, + "id": 126, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 95, - "src": "2064:9:3", + "referencedDeclaration": 71, + "src": "2058:9:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 151, + "id": 127, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 97, - "src": "2075:9:3", + "referencedDeclaration": 73, + "src": "2069:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1436,7 +1407,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { @@ -1444,18 +1415,18 @@ "typeString": "uint256" } ], - "id": 146, + "id": 122, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1095, - "src": "2039:7:3", + "referencedDeclaration": 860, + "src": "2033:7:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 152, + "id": 128, "isConstant": false, "isLValue": false, "isPure": false, @@ -1463,7 +1434,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2039:46:3", + "src": "2033:46:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1475,13 +1446,13 @@ } }, "falseBody": null, - "id": 158, + "id": 134, "nodeType": "IfStatement", - "src": "2034:100:3", + "src": "2028:100:2", "trueBody": { - "id": 157, + "id": 133, "nodeType": "Block", - "src": "2087:47:3", + "src": "2081:47:2", "statements": [ { "eventCall": { @@ -1489,18 +1460,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 154, + "id": 130, "name": "ExecutionFailed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "2106:15:3", + "referencedDeclaration": 61, + "src": "2100:15:2", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 155, + "id": 131, "isConstant": false, "isLValue": false, "isPure": false, @@ -1508,31 +1479,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2106:17:3", + "src": "2100:17:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 156, + "id": 132, "nodeType": "EmitStatement", - "src": "2101:22:3" + "src": "2095:22:2" } ] } }, { "assignments": [ - 160 + 136 ], "declarations": [ { "constant": false, - "id": 160, + "id": 136, "name": "gasCosts", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "2143:16:3", + "scope": 156, + "src": "2137:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1540,10 +1511,10 @@ "typeString": "uint256" }, "typeName": { - "id": 159, + "id": 135, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2143:7:3", + "src": "2137:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1553,7 +1524,7 @@ "visibility": "internal" } ], - "id": 168, + "id": 144, "initialValue": { "argumentTypes": null, "arguments": [ @@ -1563,19 +1534,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 165, + "id": 141, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 162, + "id": 138, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 114, - "src": "2176:8:3", + "referencedDeclaration": 90, + "src": "2170:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1588,18 +1559,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 163, + "id": 139, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "2187:7:3", + "referencedDeclaration": 2389, + "src": "2181:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 164, + "id": 140, "isConstant": false, "isLValue": false, "isPure": false, @@ -1607,13 +1578,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2187:9:3", + "src": "2181:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2176:20:3", + "src": "2170:20:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1621,12 +1592,12 @@ }, { "argumentTypes": null, - "id": 166, + "id": 142, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 99, - "src": "2198:7:3", + "referencedDeclaration": 75, + "src": "2192:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1644,18 +1615,18 @@ "typeString": "uint256" } ], - "id": 161, + "id": 137, "name": "totalGasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 198, - "src": "2162:13:3", + "referencedDeclaration": 174, + "src": "2156:13:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 167, + "id": 143, "isConstant": false, "isLValue": false, "isPure": false, @@ -1663,14 +1634,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2162:44:3", + "src": "2156:44:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2143:63:3" + "src": "2137:63:2" }, { "expression": { @@ -1682,19 +1653,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 176, + "id": 152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 174, + "id": 150, "name": "gasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 160, - "src": "2425:8:3", + "referencedDeclaration": 136, + "src": "2419:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1704,18 +1675,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 175, + "id": 151, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2436:8:3", + "referencedDeclaration": 77, + "src": "2430:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2425:19:3", + "src": "2419:19:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1733,18 +1704,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 169, + "id": 145, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2477, - "src": "2406:2:3", + "referencedDeclaration": 2408, + "src": "2400:2:2", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", "typeString": "tx" } }, - "id": 172, + "id": 148, "isConstant": false, "isLValue": false, "isPure": false, @@ -1752,13 +1723,13 @@ "memberName": "origin", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2406:9:3", + "src": "2400:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 173, + "id": 149, "isConstant": false, "isLValue": false, "isPure": false, @@ -1766,13 +1737,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2406:18:3", + "src": "2400:18:2", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 177, + "id": 153, "isConstant": false, "isLValue": false, "isPure": false, @@ -1780,37 +1751,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2406:39:3", + "src": "2400:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 178, + "id": 154, "nodeType": "ExpressionStatement", - "src": "2406:39:3" + "src": "2400:39:2" } ] }, "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 safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Gas price that should be used for the payment calculation.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 180, + "id": 156, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "payAndExecuteTransaction", + "name": "execPayTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 111, + "id": 87, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 89, + "id": 65, "name": "to", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1486:10:3", + "scope": 156, + "src": "1480:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1818,10 +1789,10 @@ "typeString": "address" }, "typeName": { - "id": 88, + "id": 64, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1486:7:3", + "src": "1480:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1832,11 +1803,11 @@ }, { "constant": false, - "id": 91, + "id": 67, "name": "value", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1507:13:3", + "scope": 156, + "src": "1501:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1844,10 +1815,10 @@ "typeString": "uint256" }, "typeName": { - "id": 90, + "id": 66, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1507:7:3", + "src": "1501:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1858,11 +1829,11 @@ }, { "constant": false, - "id": 93, + "id": 69, "name": "data", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1531:10:3", + "scope": 156, + "src": "1525:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1870,10 +1841,10 @@ "typeString": "bytes" }, "typeName": { - "id": 92, + "id": 68, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1531:5:3", + "src": "1525:5:2", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1884,26 +1855,26 @@ }, { "constant": false, - "id": 95, + "id": 71, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1552:24:3", + "scope": 156, + "src": "1546:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 94, + "id": 70, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "1552:14:3", + "referencedDeclaration": 5, + "src": "1546:14:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -1912,11 +1883,11 @@ }, { "constant": false, - "id": 97, + "id": 73, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1587:17:3", + "scope": 156, + "src": "1581:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1924,10 +1895,10 @@ "typeString": "uint256" }, "typeName": { - "id": 96, + "id": 72, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1587:7:3", + "src": "1581:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1938,11 +1909,11 @@ }, { "constant": false, - "id": 99, + "id": 75, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1614:15:3", + "scope": 156, + "src": "1608:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1950,10 +1921,10 @@ "typeString": "uint256" }, "typeName": { - "id": 98, + "id": 74, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1614:7:3", + "src": "1608:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1964,11 +1935,11 @@ }, { "constant": false, - "id": 101, + "id": 77, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1639:16:3", + "scope": 156, + "src": "1633:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1976,10 +1947,10 @@ "typeString": "uint256" }, "typeName": { - "id": 100, + "id": 76, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1639:7:3", + "src": "1633:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1990,11 +1961,11 @@ }, { "constant": false, - "id": 104, + "id": 80, "name": "v", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1665:9:3", + "scope": 156, + "src": "1659:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2003,19 +1974,19 @@ }, "typeName": { "baseType": { - "id": 102, + "id": 78, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1665:5:3", + "src": "1659:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 103, + "id": 79, "length": null, "nodeType": "ArrayTypeName", - "src": "1665:7:3", + "src": "1659:7:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -2026,11 +1997,11 @@ }, { "constant": false, - "id": 107, + "id": 83, "name": "r", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1685:11:3", + "scope": 156, + "src": "1679:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2039,19 +2010,19 @@ }, "typeName": { "baseType": { - "id": 105, + "id": 81, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1685:7:3", + "src": "1679:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 106, + "id": 82, "length": null, "nodeType": "ArrayTypeName", - "src": "1685:9:3", + "src": "1679:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -2062,11 +2033,11 @@ }, { "constant": false, - "id": 110, + "id": 86, "name": "s", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1707:11:3", + "scope": 156, + "src": "1701:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2075,19 +2046,19 @@ }, "typeName": { "baseType": { - "id": 108, + "id": 84, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1707:7:3", + "src": "1701:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 109, + "id": 85, "length": null, "nodeType": "ArrayTypeName", - "src": "1707:9:3", + "src": "1701:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -2097,26 +2068,26 @@ "visibility": "internal" } ], - "src": "1476:248:3" + "src": "1470:248:2" }, "payable": false, "returnParameters": { - "id": 112, + "id": 88, "nodeType": "ParameterList", "parameters": [], - "src": "1744:0:3" + "src": "1738:0:2" }, - "scope": 346, - "src": "1443:1009:3", + "scope": 324, + "src": "1443:1003:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 197, + "id": 173, "nodeType": "Block", - "src": "3007:86:3", + "src": "3001:86:2", "statements": [ { "expression": { @@ -2125,7 +2096,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 195, + "id": 171, "isConstant": false, "isLValue": false, "isPure": false, @@ -2136,7 +2107,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 193, + "id": 169, "isConstant": false, "isLValue": false, "isPure": false, @@ -2147,19 +2118,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 191, + "id": 167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 189, + "id": 165, "name": "executionGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 182, - "src": "3024:12:3", + "referencedDeclaration": 158, + "src": "3018:12:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2169,18 +2140,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 190, + "id": 166, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 184, - "src": "3039:7:3", + "referencedDeclaration": 160, + "src": "3033:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3024:22:3", + "src": "3018:22:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2190,18 +2161,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 192, + "id": 168, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 83, - "src": "3049:17:3", + "referencedDeclaration": 59, + "src": "3043:17:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3024:42:3", + "src": "3018:42:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2211,32 +2182,32 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 194, + "id": 170, "name": "BASE_TX_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 80, - "src": "3069:17:3", + "referencedDeclaration": 56, + "src": "3063:17:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3024:62:3", + "src": "3018:62:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 188, - "id": 196, + "functionReturnParameters": 164, + "id": 172, "nodeType": "Return", - "src": "3017:69:3" + "src": "3011:69:2" } ] }, "documentation": "@dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n @param executionGas Gas costs for the execution of the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).", - "id": 198, + "id": 174, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -2244,16 +2215,16 @@ "name": "totalGasCosts", "nodeType": "FunctionDefinition", "parameters": { - "id": 185, + "id": 161, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 182, + "id": 158, "name": "executionGas", "nodeType": "VariableDeclaration", - "scope": 198, - "src": "2907:20:3", + "scope": 174, + "src": "2901:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2261,10 +2232,10 @@ "typeString": "uint256" }, "typeName": { - "id": 181, + "id": 157, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2907:7:3", + "src": "2901:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2275,11 +2246,11 @@ }, { "constant": false, - "id": 184, + "id": 160, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 198, - "src": "2929:15:3", + "scope": 174, + "src": "2923:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2287,10 +2258,10 @@ "typeString": "uint256" }, "typeName": { - "id": 183, + "id": 159, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2929:7:3", + "src": "2923:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2300,20 +2271,20 @@ "visibility": "internal" } ], - "src": "2906:39:3" + "src": "2900:39:2" }, "payable": false, "returnParameters": { - "id": 188, + "id": 164, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 187, + "id": 163, "name": "", "nodeType": "VariableDeclaration", - "scope": 198, - "src": "2993:7:3", + "scope": 174, + "src": "2987:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2321,10 +2292,10 @@ "typeString": "uint256" }, "typeName": { - "id": 186, + "id": 162, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2993:7:3", + "src": "2987:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2334,32 +2305,32 @@ "visibility": "internal" } ], - "src": "2992:9:3" + "src": "2986:9:2" }, - "scope": 346, - "src": "2884:209:3", + "scope": 324, + "src": "2878:209:2", "stateMutability": "pure", "superFunction": null, "visibility": "public" }, { "body": { - "id": 234, + "id": 210, "nodeType": "Block", - "src": "3945:147:3", + "src": "3938:147:2", "statements": [ { "assignments": [ - 214 + 190 ], "declarations": [ { "constant": false, - "id": 214, + "id": 190, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 235, - "src": "3955:16:3", + "scope": 211, + "src": "3948:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2367,10 +2338,10 @@ "typeString": "uint256" }, "typeName": { - "id": 213, + "id": 189, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3955:7:3", + "src": "3948:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2380,24 +2351,24 @@ "visibility": "internal" } ], - "id": 217, + "id": 193, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 215, + "id": 191, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "3974:7:3", + "referencedDeclaration": 2389, + "src": "3967:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 216, + "id": 192, "isConstant": false, "isLValue": false, "isPure": false, @@ -2405,14 +2376,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3974:9:3", + "src": "3967:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3955:28:3" + "src": "3948:28:2" }, { "expression": { @@ -2423,12 +2394,12 @@ "arguments": [ { "argumentTypes": null, - "id": 220, + "id": 196, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 200, - "src": "4009:2:3", + "referencedDeclaration": 176, + "src": "4002:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2436,12 +2407,12 @@ }, { "argumentTypes": null, - "id": 221, + "id": 197, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "4013:5:3", + "referencedDeclaration": 178, + "src": "4006:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2449,12 +2420,12 @@ }, { "argumentTypes": null, - "id": 222, + "id": 198, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 204, - "src": "4020:4:3", + "referencedDeclaration": 180, + "src": "4013:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2462,14 +2433,14 @@ }, { "argumentTypes": null, - "id": 223, + "id": 199, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 206, - "src": "4026:9:3", + "referencedDeclaration": 182, + "src": "4019:9:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -2478,18 +2449,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 224, + "id": 200, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "4037:7:3", + "referencedDeclaration": 2389, + "src": "4030:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 225, + "id": 201, "isConstant": false, "isLValue": false, "isPure": false, @@ -2497,7 +2468,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4037:9:3", + "src": "4030:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2519,7 +2490,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { @@ -2527,18 +2498,18 @@ "typeString": "uint256" } ], - "id": 219, + "id": 195, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1095, - "src": "4001:7:3", + "referencedDeclaration": 860, + "src": "3994:7:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 226, + "id": 202, "isConstant": false, "isLValue": false, "isPure": false, @@ -2546,7 +2517,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4001:46:3", + "src": "3994:46:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2560,21 +2531,21 @@ "typeString": "bool" } ], - "id": 218, + "id": 194, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "3993:7:3", + "referencedDeclaration": 2399, + "src": "3986:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 227, + "id": 203, "isConstant": false, "isLValue": false, "isPure": false, @@ -2582,15 +2553,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3993:55:3", + "src": "3986:55:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 228, + "id": 204, "nodeType": "ExpressionStatement", - "src": "3993:55:3" + "src": "3986:55:2" }, { "expression": { @@ -2599,19 +2570,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 232, + "id": 208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 229, + "id": 205, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 214, - "src": "4065:8:3", + "referencedDeclaration": 190, + "src": "4058:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2624,18 +2595,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 230, + "id": 206, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "4076:7:3", + "referencedDeclaration": 2389, + "src": "4069:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 231, + "id": 207, "isConstant": false, "isLValue": false, "isPure": false, @@ -2643,64 +2614,64 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4076:9:3", + "src": "4069:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4065:20:3", + "src": "4058:20:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 212, - "id": 233, + "functionReturnParameters": 188, + "id": 209, "nodeType": "Return", - "src": "4058:27:3" + "src": "4051:27:2" } ] }, - "documentation": "@dev Allows to estimate a Safe transaction. \n This method can only be used by the safe itself in a transaction. 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 `payAndExecuteTransaction`\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": 235, + "documentation": "@dev Allows to estimate a Safe transaction. \n This method can only be used by the safe itself in a transaction. 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 `execPayTransaction`\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": 211, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 209, + "id": 185, "modifierName": { "argumentTypes": null, - "id": 208, + "id": 184, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "3904:10:3", + "referencedDeclaration": 1358, + "src": "3897:10:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3904:10:3" + "src": "3897:10:2" } ], - "name": "estimate", + "name": "requiredTxGas", "nodeType": "FunctionDefinition", "parameters": { - "id": 207, + "id": 183, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 200, + "id": 176, "name": "to", "nodeType": "VariableDeclaration", - "scope": 235, - "src": "3816:10:3", + "scope": 211, + "src": "3809:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2708,10 +2679,10 @@ "typeString": "address" }, "typeName": { - "id": 199, + "id": 175, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3816:7:3", + "src": "3809:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2722,11 +2693,11 @@ }, { "constant": false, - "id": 202, + "id": 178, "name": "value", "nodeType": "VariableDeclaration", - "scope": 235, - "src": "3828:13:3", + "scope": 211, + "src": "3821:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2734,10 +2705,10 @@ "typeString": "uint256" }, "typeName": { - "id": 201, + "id": 177, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3828:7:3", + "src": "3821:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2748,11 +2719,11 @@ }, { "constant": false, - "id": 204, + "id": 180, "name": "data", "nodeType": "VariableDeclaration", - "scope": 235, - "src": "3843:10:3", + "scope": 211, + "src": "3836:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2760,10 +2731,10 @@ "typeString": "bytes" }, "typeName": { - "id": 203, + "id": 179, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3843:5:3", + "src": "3836:5:2", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2774,26 +2745,26 @@ }, { "constant": false, - "id": 206, + "id": 182, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 235, - "src": "3855:24:3", + "scope": 211, + "src": "3848:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 205, + "id": 181, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "3855:14:3", + "referencedDeclaration": 5, + "src": "3848:14:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -2801,20 +2772,20 @@ "visibility": "internal" } ], - "src": "3815:65:3" + "src": "3808:65:2" }, "payable": false, "returnParameters": { - "id": 212, + "id": 188, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 211, + "id": 187, "name": "", "nodeType": "VariableDeclaration", - "scope": 235, - "src": "3932:7:3", + "scope": 211, + "src": "3925:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2822,10 +2793,10 @@ "typeString": "uint256" }, "typeName": { - "id": 210, + "id": 186, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3932:7:3", + "src": "3925:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2835,32 +2806,32 @@ "visibility": "internal" } ], - "src": "3931:9:3" + "src": "3924:9:2" }, - "scope": 346, - "src": "3798:294:3", + "scope": 324, + "src": "3786:299:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 304, + "id": 282, "nodeType": "Block", - "src": "4202:433:3", + "src": "4195:437:2", "statements": [ { "assignments": [ - 250 + 226 ], "declarations": [ { "constant": false, - "id": 250, + "id": 226, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 305, - "src": "4264:17:3", + "scope": 283, + "src": "4257:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2868,10 +2839,10 @@ "typeString": "address" }, "typeName": { - "id": 249, + "id": 225, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4264:7:3", + "src": "4257:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2881,21 +2852,21 @@ "visibility": "internal" } ], - "id": 254, + "id": 230, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 252, + "id": 228, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4292:1:3", + "src": "4285:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2911,20 +2882,20 @@ "typeString": "int_const 0" } ], - "id": 251, + "id": 227, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4284:7:3", + "src": "4277:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 253, + "id": 229, "isConstant": false, "isLValue": false, "isPure": true, @@ -2932,25 +2903,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4284:10:3", + "src": "4277:10:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4264:30:3" + "src": "4257:30:2" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 256, + "id": 232, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 305, - "src": "4304:20:3", + "scope": 283, + "src": "4297:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2958,10 +2929,10 @@ "typeString": "address" }, "typeName": { - "id": 255, + "id": 231, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4304:7:3", + "src": "4297:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2971,21 +2942,21 @@ "visibility": "internal" } ], - "id": 257, + "id": 233, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "4304:20:3" + "src": "4297:20:2" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 259, + "id": 235, "name": "i", "nodeType": "VariableDeclaration", - "scope": 305, - "src": "4334:9:3", + "scope": 283, + "src": "4327:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2993,10 +2964,10 @@ "typeString": "uint256" }, "typeName": { - "id": 258, + "id": 234, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4334:7:3", + "src": "4327:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3006,33 +2977,33 @@ "visibility": "internal" } ], - "id": 260, + "id": 236, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "4334:9:3" + "src": "4327:9:2" }, { "body": { - "id": 302, + "id": 280, "nodeType": "Block", - "src": "4427:202:3", + "src": "4420:206:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 284, + "id": 260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 271, + "id": 247, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "4441:12:3", + "referencedDeclaration": 232, + "src": "4434:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3045,12 +3016,12 @@ "arguments": [ { "argumentTypes": null, - "id": 273, + "id": 249, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 237, - "src": "4466:4:3", + "referencedDeclaration": 213, + "src": "4459:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3060,26 +3031,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 274, + "id": 250, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 240, - "src": "4472:1:3", + "referencedDeclaration": 216, + "src": "4465:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, - "id": 276, + "id": 252, "indexExpression": { "argumentTypes": null, - "id": 275, + "id": 251, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "4474:1:3", + "referencedDeclaration": 235, + "src": "4467:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3090,7 +3061,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4472:4:3", + "src": "4465:4:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3100,26 +3071,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 277, + "id": 253, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 243, - "src": "4478:1:3", + "referencedDeclaration": 219, + "src": "4471:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 279, + "id": 255, "indexExpression": { "argumentTypes": null, - "id": 278, + "id": 254, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "4480:1:3", + "referencedDeclaration": 235, + "src": "4473:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3130,7 +3101,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4478:4:3", + "src": "4471:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3140,26 +3111,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 280, + "id": 256, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 246, - "src": "4484:1:3", + "referencedDeclaration": 222, + "src": "4477:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 282, + "id": 258, "indexExpression": { "argumentTypes": null, - "id": 281, + "id": 257, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "4486:1:3", + "referencedDeclaration": 235, + "src": "4479:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3170,7 +3141,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4484:4:3", + "src": "4477:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3196,18 +3167,18 @@ "typeString": "bytes32" } ], - "id": 272, + "id": 248, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2457, - "src": "4456:9:3", + "referencedDeclaration": 2388, + "src": "4449:9:2", "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": 283, + "id": 259, "isConstant": false, "isLValue": false, "isPure": false, @@ -3215,107 +3186,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4456:33:3", + "src": "4449:33:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4441:48:3", + "src": "4434:48:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 285, + "id": 261, "nodeType": "ExpressionStatement", - "src": "4441:48:3" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 287, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "4511:7:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 289, - "indexExpression": { - "argumentTypes": null, - "id": 288, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "4519:12:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4511:21:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 286, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "4503:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 290, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4503:30:3", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 291, - "nodeType": "ExpressionStatement", - "src": "4503:30:3" + "src": "4434:48:2" }, { "expression": { @@ -3327,40 +3212,72 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 295, + "id": 267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 293, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "4555:12:3", + "baseExpression": { + "argumentTypes": null, + "id": 263, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "4504:6:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 265, + "indexExpression": { + "argumentTypes": null, + "id": 264, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 232, + "src": "4511:12:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4504:20:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": ">", + "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 294, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 250, - "src": "4570:9:3", + "hexValue": "30", + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4528:1:2", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" }, - "src": "4555:24:3", + "src": "4504:25:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3374,21 +3291,21 @@ "typeString": "bool" } ], - "id": 292, + "id": 262, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "4547:7:3", + "referencedDeclaration": 2399, + "src": "4496:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 296, + "id": 268, "isConstant": false, "isLValue": false, "isPure": false, @@ -3396,32 +3313,121 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4547:33:3", + "src": "4496:34:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 297, + "id": 269, "nodeType": "ExpressionStatement", - "src": "4547:33:3" + "src": "4496:34:2" }, { "expression": { "argumentTypes": null, - "id": 300, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 271, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 232, + "src": "4552:12:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 272, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "4567:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4552:24:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 270, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "4544:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4544:33:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 275, + "nodeType": "ExpressionStatement", + "src": "4544:33:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 298, + "id": 276, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 250, - "src": "4594:9:3", + "referencedDeclaration": 226, + "src": "4591:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3431,26 +3437,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 299, + "id": 277, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "4606:12:3", + "referencedDeclaration": 232, + "src": "4603:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4594:24:3", + "src": "4591:24:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 301, + "id": 279, "nodeType": "ExpressionStatement", - "src": "4594:24:3" + "src": "4591:24:2" } ] }, @@ -3460,19 +3466,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 267, + "id": 243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 265, + "id": 241, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "4407:1:3", + "referencedDeclaration": 235, + "src": "4400:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3482,42 +3488,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 266, + "id": 242, "name": "threshold", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "4411:9:3", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "4404:9:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4407:13:3", + "src": "4400:13:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 303, + "id": 281, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 263, + "id": 239, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 261, + "id": 237, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "4400:1:3", + "referencedDeclaration": 235, + "src": "4393:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3528,14 +3532,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 262, + "id": 238, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4404:1:3", + "src": "4397:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3543,20 +3547,20 @@ }, "value": "0" }, - "src": "4400:5:3", + "src": "4393:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 264, + "id": 240, "nodeType": "ExpressionStatement", - "src": "4400:5:3" + "src": "4393:5:2" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 269, + "id": 245, "isConstant": false, "isLValue": false, "isPure": false, @@ -3564,15 +3568,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4422:3:3", + "src": "4415:3:2", "subExpression": { "argumentTypes": null, - "id": 268, + "id": 244, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "4422:1:3", + "referencedDeclaration": 235, + "src": "4415:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3583,17 +3587,17 @@ "typeString": "uint256" } }, - "id": 270, + "id": 246, "nodeType": "ExpressionStatement", - "src": "4422:3:3" + "src": "4415:3:2" }, "nodeType": "ForStatement", - "src": "4395:234:3" + "src": "4388:238:2" } ] }, "documentation": null, - "id": 305, + "id": 283, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3601,16 +3605,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 247, + "id": 223, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 237, + "id": 213, "name": "hash", "nodeType": "VariableDeclaration", - "scope": 305, - "src": "4117:12:3", + "scope": 283, + "src": "4110:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3618,10 +3622,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 236, + "id": 212, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4117:7:3", + "src": "4110:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3632,11 +3636,11 @@ }, { "constant": false, - "id": 240, + "id": 216, "name": "v", "nodeType": "VariableDeclaration", - "scope": 305, - "src": "4131:9:3", + "scope": 283, + "src": "4124:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3645,19 +3649,19 @@ }, "typeName": { "baseType": { - "id": 238, + "id": 214, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4131:5:3", + "src": "4124:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 239, + "id": 215, "length": null, "nodeType": "ArrayTypeName", - "src": "4131:7:3", + "src": "4124:7:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -3668,11 +3672,11 @@ }, { "constant": false, - "id": 243, + "id": 219, "name": "r", "nodeType": "VariableDeclaration", - "scope": 305, - "src": "4142:11:3", + "scope": 283, + "src": "4135:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3681,19 +3685,19 @@ }, "typeName": { "baseType": { - "id": 241, + "id": 217, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4142:7:3", + "src": "4135:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 242, + "id": 218, "length": null, "nodeType": "ArrayTypeName", - "src": "4142:9:3", + "src": "4135:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -3704,11 +3708,11 @@ }, { "constant": false, - "id": 246, + "id": 222, "name": "s", "nodeType": "VariableDeclaration", - "scope": 305, - "src": "4155:11:3", + "scope": 283, + "src": "4148:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3717,19 +3721,19 @@ }, "typeName": { "baseType": { - "id": 244, + "id": 220, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4155:7:3", + "src": "4148:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 245, + "id": 221, "length": null, "nodeType": "ArrayTypeName", - "src": "4155:9:3", + "src": "4148:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -3739,26 +3743,26 @@ "visibility": "internal" } ], - "src": "4116:51:3" + "src": "4109:51:2" }, "payable": false, "returnParameters": { - "id": 248, + "id": 224, "nodeType": "ParameterList", "parameters": [], - "src": "4202:0:3" + "src": "4195:0:2" }, - "scope": 346, - "src": "4098:537:3", + "scope": 324, + "src": "4091:541:2", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 344, + "id": 322, "nodeType": "Block", - "src": "5451:126:3", + "src": "5448:126:2", "statements": [ { "expression": { @@ -3770,14 +3774,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 328, + "id": 306, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5483:4:3", + "src": "5480:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -3793,20 +3797,20 @@ "typeString": "int_const 25" } ], - "id": 327, + "id": 305, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5478:4:3", + "src": "5475:4:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 329, + "id": 307, "isConstant": false, "isLValue": false, "isPure": true, @@ -3814,7 +3818,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5478:10:3", + "src": "5475:10:2", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -3826,14 +3830,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 331, + "id": 309, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5495:1:3", + "src": "5492:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3849,20 +3853,20 @@ "typeString": "int_const 0" } ], - "id": 330, + "id": 308, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5490:4:3", + "src": "5487:4:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 332, + "id": 310, "isConstant": false, "isLValue": false, "isPure": true, @@ -3870,7 +3874,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5490:7:3", + "src": "5487:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -3878,25 +3882,25 @@ }, { "argumentTypes": null, - "id": 333, + "id": 311, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2496, - "src": "5499:4:3", + "referencedDeclaration": 2423, + "src": "5496:4:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$346", + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$324", "typeString": "contract GnosisSafePersonalEdition" } }, { "argumentTypes": null, - "id": 334, + "id": 312, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 307, - "src": "5505:2:3", + "referencedDeclaration": 285, + "src": "5502:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3904,12 +3908,12 @@ }, { "argumentTypes": null, - "id": 335, + "id": 313, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 309, - "src": "5509:5:3", + "referencedDeclaration": 287, + "src": "5506:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3917,12 +3921,12 @@ }, { "argumentTypes": null, - "id": 336, + "id": 314, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 311, - "src": "5516:4:3", + "referencedDeclaration": 289, + "src": "5513:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3930,25 +3934,25 @@ }, { "argumentTypes": null, - "id": 337, + "id": 315, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "5522:9:3", + "referencedDeclaration": 291, + "src": "5519:9:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 338, + "id": 316, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5533:9:3", + "referencedDeclaration": 293, + "src": "5530:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3956,12 +3960,12 @@ }, { "argumentTypes": null, - "id": 339, + "id": 317, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 317, - "src": "5544:7:3", + "referencedDeclaration": 295, + "src": "5541:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3969,12 +3973,12 @@ }, { "argumentTypes": null, - "id": 340, + "id": 318, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 319, - "src": "5553:8:3", + "referencedDeclaration": 297, + "src": "5550:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3982,12 +3986,12 @@ }, { "argumentTypes": null, - "id": 341, + "id": 319, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 321, - "src": "5563:6:3", + "referencedDeclaration": 299, + "src": "5560:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4005,7 +4009,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$346", + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$324", "typeString": "contract GnosisSafePersonalEdition" }, { @@ -4021,7 +4025,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { @@ -4041,18 +4045,18 @@ "typeString": "uint256" } ], - "id": 326, + "id": 304, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2459, - "src": "5468:9:3", + "referencedDeclaration": 2390, + "src": "5465:9:2", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 342, + "id": 320, "isConstant": false, "isLValue": false, "isPure": false, @@ -4060,21 +4064,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5468:102:3", + "src": "5465:102:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 325, - "id": 343, + "functionReturnParameters": 303, + "id": 321, "nodeType": "Return", - "src": "5461:109:3" + "src": "5458:109:2" } ] }, "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 _nonce Transaction nonce.\n @return Transaction hash.", - "id": 345, + "id": 323, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4082,16 +4086,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 322, + "id": 300, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 307, + "id": 285, "name": "to", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "5190:10:3", + "scope": 323, + "src": "5187:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4099,10 +4103,10 @@ "typeString": "address" }, "typeName": { - "id": 306, + "id": 284, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5190:7:3", + "src": "5187:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4113,11 +4117,11 @@ }, { "constant": false, - "id": 309, + "id": 287, "name": "value", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "5211:13:3", + "scope": 323, + "src": "5208:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4125,10 +4129,10 @@ "typeString": "uint256" }, "typeName": { - "id": 308, + "id": 286, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5211:7:3", + "src": "5208:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4139,11 +4143,11 @@ }, { "constant": false, - "id": 311, + "id": 289, "name": "data", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "5235:10:3", + "scope": 323, + "src": "5232:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4151,10 +4155,10 @@ "typeString": "bytes" }, "typeName": { - "id": 310, + "id": 288, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "5235:5:3", + "src": "5232:5:2", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4165,26 +4169,26 @@ }, { "constant": false, - "id": 313, + "id": 291, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "5256:24:3", + "scope": 323, + "src": "5253:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 312, + "id": 290, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "5256:14:3", + "referencedDeclaration": 5, + "src": "5253:14:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -4193,11 +4197,11 @@ }, { "constant": false, - "id": 315, + "id": 293, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "5291:17:3", + "scope": 323, + "src": "5288:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4205,10 +4209,10 @@ "typeString": "uint256" }, "typeName": { - "id": 314, + "id": 292, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5291:7:3", + "src": "5288:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4219,11 +4223,11 @@ }, { "constant": false, - "id": 317, + "id": 295, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "5319:15:3", + "scope": 323, + "src": "5316:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4231,10 +4235,10 @@ "typeString": "uint256" }, "typeName": { - "id": 316, + "id": 294, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5319:7:3", + "src": "5316:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4245,11 +4249,11 @@ }, { "constant": false, - "id": 319, + "id": 297, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "5345:16:3", + "scope": 323, + "src": "5342:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4257,10 +4261,10 @@ "typeString": "uint256" }, "typeName": { - "id": 318, + "id": 296, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5345:7:3", + "src": "5342:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4271,11 +4275,11 @@ }, { "constant": false, - "id": 321, + "id": 299, "name": "_nonce", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "5372:14:3", + "scope": 323, + "src": "5369:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4283,10 +4287,10 @@ "typeString": "uint256" }, "typeName": { - "id": 320, + "id": 298, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5372:7:3", + "src": "5369:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4296,20 +4300,20 @@ "visibility": "internal" } ], - "src": "5180:212:3" + "src": "5177:212:2" }, "payable": false, "returnParameters": { - "id": 325, + "id": 303, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 324, + "id": 302, "name": "", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "5438:7:3", + "scope": 323, + "src": "5435:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4317,10 +4321,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 323, + "id": 301, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5438:7:3", + "src": "5435:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4330,60 +4334,60 @@ "visibility": "internal" } ], - "src": "5437:9:3" + "src": "5434:9:2" }, - "scope": 346, - "src": "5153:424:3", + "scope": 324, + "src": "5150:424:2", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 347, - "src": "314:5265:3" + "scope": 325, + "src": "314:5262:2" } ], - "src": "0:5580:3" + "src": "0:5577:2" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "exportedSymbols": { "GnosisSafePersonalEdition": [ - 346 + 324 ] }, - "id": 347, + "id": 325, "nodeType": "SourceUnit", "nodes": [ { - "id": 65, + "id": 41, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:3" + "src": "0:23:2" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 66, + "id": 42, "nodeType": "ImportDirective", - "scope": 347, - "sourceUnit": 64, - "src": "24:26:3", + "scope": 325, + "sourceUnit": 40, + "src": "24:26:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 67, + "id": 43, "nodeType": "ImportDirective", - "scope": 347, - "sourceUnit": 780, - "src": "51:26:3", + "scope": 325, + "sourceUnit": 581, + "src": "51:26:2", "symbolAliases": [], "unitAlias": "" }, @@ -4393,68 +4397,68 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 68, + "id": 44, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 779, - "src": "352:10:3", + "referencedDeclaration": 580, + "src": "352:10:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$779", + "typeIdentifier": "t_contract$_MasterCopy_$580", "typeString": "contract MasterCopy" } }, - "id": 69, + "id": 45, "nodeType": "InheritanceSpecifier", - "src": "352:10:3" + "src": "352:10:2" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 70, + "id": 46, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 63, - "src": "364:10:3", + "referencedDeclaration": 39, + "src": "364:10:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$63", + "typeIdentifier": "t_contract$_GnosisSafe_$39", "typeString": "contract GnosisSafe" } }, - "id": 71, + "id": 47, "nodeType": "InheritanceSpecifier", - "src": "364:10:3" + "src": "364:10:2" } ], "contractDependencies": [ - 63, - 779, - 1142, - 1438, - 1559 + 39, + 580, + 971, + 1343, + 1359 ], "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 - ", "fullyImplemented": true, - "id": 346, + "id": 324, "linearizedBaseContracts": [ - 346, - 63, - 1438, - 1142, - 779, - 1559 + 324, + 39, + 1343, + 971, + 580, + 1359 ], "name": "GnosisSafePersonalEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 74, + "id": 50, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 346, - "src": "382:60:3", + "scope": 324, + "src": "382:60:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4462,10 +4466,10 @@ "typeString": "string" }, "typeName": { - "id": 72, + "id": 48, "name": "string", "nodeType": "ElementaryTypeName", - "src": "382:6:3", + "src": "382:6:2", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4474,14 +4478,14 @@ "value": { "argumentTypes": null, "hexValue": "476e6f736973205361666520506572736f6e616c2045646974696f6e", - "id": 73, + "id": 49, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "412:30:3", + "src": "412:30:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b657d2895d137bf089ce1df776b732639b1ebc2a3aec3bd837e225e9e0965154", @@ -4493,11 +4497,11 @@ }, { "constant": true, - "id": 77, + "id": 53, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 346, - "src": "448:40:3", + "scope": 324, + "src": "448:40:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4505,10 +4509,10 @@ "typeString": "string" }, "typeName": { - "id": 75, + "id": 51, "name": "string", "nodeType": "ElementaryTypeName", - "src": "448:6:3", + "src": "448:6:2", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4517,14 +4521,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 76, + "id": 52, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "481:7:3", + "src": "481:7:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -4536,11 +4540,11 @@ }, { "constant": true, - "id": 80, + "id": 56, "name": "BASE_TX_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 346, - "src": "499:51:3", + "scope": 324, + "src": "499:51:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4548,10 +4552,10 @@ "typeString": "uint256" }, "typeName": { - "id": 78, + "id": 54, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "499:7:3", + "src": "499:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4560,14 +4564,14 @@ "value": { "argumentTypes": null, "hexValue": "3231303030", - "id": 79, + "id": 55, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "545:5:3", + "src": "545:5:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_21000_by_1", @@ -4579,11 +4583,11 @@ }, { "constant": true, - "id": 83, + "id": 59, "name": "PAYMENT_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 346, - "src": "556:51:3", + "scope": 324, + "src": "556:51:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4591,10 +4595,10 @@ "typeString": "uint256" }, "typeName": { - "id": 81, + "id": 57, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "556:7:3", + "src": "556:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4602,45 +4606,45 @@ }, "value": { "argumentTypes": null, - "hexValue": "3130303030", - "id": 82, + "hexValue": "3131303030", + "id": 58, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "602:5:3", + "src": "602:5:2", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_rational_10000_by_1", - "typeString": "int_const 10000" + "typeIdentifier": "t_rational_11000_by_1", + "typeString": "int_const 11000" }, - "value": "10000" + "value": "11000" }, "visibility": "internal" }, { "anonymous": false, "documentation": null, - "id": 85, + "id": 61, "name": "ExecutionFailed", "nodeType": "EventDefinition", "parameters": { - "id": 84, + "id": 60, "nodeType": "ParameterList", "parameters": [], - "src": "635:2:3" + "src": "635:2:2" }, - "src": "614:24:3" + "src": "614:24:2" }, { "constant": false, - "id": 87, + "id": 63, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 346, - "src": "644:20:3", + "scope": 324, + "src": "644:20:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4648,10 +4652,10 @@ "typeString": "uint256" }, "typeName": { - "id": 86, + "id": 62, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "644:7:3", + "src": "644:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4662,22 +4666,22 @@ }, { "body": { - "id": 179, + "id": 155, "nodeType": "Block", - "src": "1744:708:3", + "src": "1738:708:2", "statements": [ { "assignments": [ - 114 + 90 ], "declarations": [ { "constant": false, - "id": 114, + "id": 90, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1754:16:3", + "scope": 156, + "src": "1748:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4685,10 +4689,10 @@ "typeString": "uint256" }, "typeName": { - "id": 113, + "id": 89, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1754:7:3", + "src": "1748:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4698,24 +4702,24 @@ "visibility": "internal" } ], - "id": 117, + "id": 93, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 115, + "id": 91, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "1773:7:3", + "referencedDeclaration": 2389, + "src": "1767:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 116, + "id": 92, "isConstant": false, "isLValue": false, "isPure": false, @@ -4723,14 +4727,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1773:9:3", + "src": "1767:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1754:28:3" + "src": "1748:28:2" }, { "expression": { @@ -4741,12 +4745,12 @@ "arguments": [ { "argumentTypes": null, - "id": 120, + "id": 96, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 89, - "src": "1821:2:3", + "referencedDeclaration": 65, + "src": "1815:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4754,12 +4758,12 @@ }, { "argumentTypes": null, - "id": 121, + "id": 97, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 91, - "src": "1825:5:3", + "referencedDeclaration": 67, + "src": "1819:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4767,12 +4771,12 @@ }, { "argumentTypes": null, - "id": 122, + "id": 98, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 93, - "src": "1832:4:3", + "referencedDeclaration": 69, + "src": "1826:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4780,25 +4784,25 @@ }, { "argumentTypes": null, - "id": 123, + "id": 99, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 95, - "src": "1838:9:3", + "referencedDeclaration": 71, + "src": "1832:9:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 124, + "id": 100, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 97, - "src": "1849:9:3", + "referencedDeclaration": 73, + "src": "1843:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4806,12 +4810,12 @@ }, { "argumentTypes": null, - "id": 125, + "id": 101, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 99, - "src": "1860:7:3", + "referencedDeclaration": 75, + "src": "1854:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4819,12 +4823,12 @@ }, { "argumentTypes": null, - "id": 126, + "id": 102, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "1869:8:3", + "referencedDeclaration": 77, + "src": "1863:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4832,12 +4836,12 @@ }, { "argumentTypes": null, - "id": 127, + "id": 103, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 87, - "src": "1879:5:3", + "referencedDeclaration": 63, + "src": "1873:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4859,7 +4863,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { @@ -4879,18 +4883,18 @@ "typeString": "uint256" } ], - "id": 119, + "id": 95, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 345, - "src": "1802:18:3", + "referencedDeclaration": 323, + "src": "1796:18:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,uint256) view returns (bytes32)" } }, - "id": 128, + "id": 104, "isConstant": false, "isLValue": false, "isPure": false, @@ -4898,7 +4902,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1802:83:3", + "src": "1796:83:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4906,12 +4910,12 @@ }, { "argumentTypes": null, - "id": 129, + "id": 105, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 104, - "src": "1887:1:3", + "referencedDeclaration": 80, + "src": "1881:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" @@ -4919,12 +4923,12 @@ }, { "argumentTypes": null, - "id": 130, + "id": 106, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 107, - "src": "1890:1:3", + "referencedDeclaration": 83, + "src": "1884:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -4932,12 +4936,12 @@ }, { "argumentTypes": null, - "id": 131, + "id": 107, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 110, - "src": "1893:1:3", + "referencedDeclaration": 86, + "src": "1887:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -4963,18 +4967,18 @@ "typeString": "bytes32[] memory" } ], - "id": 118, + "id": 94, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 305, - "src": "1792:9:3", + "referencedDeclaration": 283, + "src": "1786:9:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" } }, - "id": 132, + "id": 108, "isConstant": false, "isLValue": false, "isPure": false, @@ -4982,20 +4986,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1792:103:3", + "src": "1786:103:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 133, + "id": 109, "nodeType": "ExpressionStatement", - "src": "1792:103:3" + "src": "1786:103:2" }, { "expression": { "argumentTypes": null, - "id": 135, + "id": 111, "isConstant": false, "isLValue": false, "isPure": false, @@ -5003,15 +5007,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1956:7:3", + "src": "1950:7:2", "subExpression": { "argumentTypes": null, - "id": 134, + "id": 110, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 87, - "src": "1956:5:3", + "referencedDeclaration": 63, + "src": "1950:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5022,9 +5026,9 @@ "typeString": "uint256" } }, - "id": 136, + "id": 112, "nodeType": "ExpressionStatement", - "src": "1956:7:3" + "src": "1950:7:2" }, { "expression": { @@ -5036,7 +5040,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 143, + "id": 119, "isConstant": false, "isLValue": false, "isPure": false, @@ -5047,7 +5051,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 141, + "id": 117, "isConstant": false, "isLValue": false, "isPure": false, @@ -5057,18 +5061,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 138, + "id": 114, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "1981:7:3", + "referencedDeclaration": 2389, + "src": "1975:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 139, + "id": 115, "isConstant": false, "isLValue": false, "isPure": false, @@ -5076,7 +5080,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1981:9:3", + "src": "1975:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5086,18 +5090,18 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 140, + "id": 116, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 83, - "src": "1993:17:3", + "referencedDeclaration": 59, + "src": "1987:17:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1981:29:3", + "src": "1975:29:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5107,18 +5111,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 142, + "id": 118, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 97, - "src": "2014:9:3", + "referencedDeclaration": 73, + "src": "2008:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1981:42:3", + "src": "1975:42:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5132,21 +5136,21 @@ "typeString": "bool" } ], - "id": 137, + "id": 113, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1973:7:3", + "referencedDeclaration": 2399, + "src": "1967:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 144, + "id": 120, "isConstant": false, "isLValue": false, "isPure": false, @@ -5154,20 +5158,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1973:51:3", + "src": "1967:51:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 145, + "id": 121, "nodeType": "ExpressionStatement", - "src": "1973:51:3" + "src": "1967:51:2" }, { "condition": { "argumentTypes": null, - "id": 153, + "id": 129, "isConstant": false, "isLValue": false, "isPure": false, @@ -5175,18 +5179,18 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2038:47:3", + "src": "2032:47:2", "subExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 147, + "id": 123, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 89, - "src": "2047:2:3", + "referencedDeclaration": 65, + "src": "2041:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5194,12 +5198,12 @@ }, { "argumentTypes": null, - "id": 148, + "id": 124, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 91, - "src": "2051:5:3", + "referencedDeclaration": 67, + "src": "2045:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5207,12 +5211,12 @@ }, { "argumentTypes": null, - "id": 149, + "id": 125, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 93, - "src": "2058:4:3", + "referencedDeclaration": 69, + "src": "2052:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5220,25 +5224,25 @@ }, { "argumentTypes": null, - "id": 150, + "id": 126, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 95, - "src": "2064:9:3", + "referencedDeclaration": 71, + "src": "2058:9:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 151, + "id": 127, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 97, - "src": "2075:9:3", + "referencedDeclaration": 73, + "src": "2069:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5260,7 +5264,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { @@ -5268,18 +5272,18 @@ "typeString": "uint256" } ], - "id": 146, + "id": 122, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1095, - "src": "2039:7:3", + "referencedDeclaration": 860, + "src": "2033:7:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 152, + "id": 128, "isConstant": false, "isLValue": false, "isPure": false, @@ -5287,7 +5291,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2039:46:3", + "src": "2033:46:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5299,13 +5303,13 @@ } }, "falseBody": null, - "id": 158, + "id": 134, "nodeType": "IfStatement", - "src": "2034:100:3", + "src": "2028:100:2", "trueBody": { - "id": 157, + "id": 133, "nodeType": "Block", - "src": "2087:47:3", + "src": "2081:47:2", "statements": [ { "eventCall": { @@ -5313,18 +5317,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 154, + "id": 130, "name": "ExecutionFailed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "2106:15:3", + "referencedDeclaration": 61, + "src": "2100:15:2", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 155, + "id": 131, "isConstant": false, "isLValue": false, "isPure": false, @@ -5332,31 +5336,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2106:17:3", + "src": "2100:17:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 156, + "id": 132, "nodeType": "EmitStatement", - "src": "2101:22:3" + "src": "2095:22:2" } ] } }, { "assignments": [ - 160 + 136 ], "declarations": [ { "constant": false, - "id": 160, + "id": 136, "name": "gasCosts", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "2143:16:3", + "scope": 156, + "src": "2137:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5364,10 +5368,10 @@ "typeString": "uint256" }, "typeName": { - "id": 159, + "id": 135, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2143:7:3", + "src": "2137:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5377,7 +5381,7 @@ "visibility": "internal" } ], - "id": 168, + "id": 144, "initialValue": { "argumentTypes": null, "arguments": [ @@ -5387,19 +5391,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 165, + "id": 141, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 162, + "id": 138, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 114, - "src": "2176:8:3", + "referencedDeclaration": 90, + "src": "2170:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5412,18 +5416,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 163, + "id": 139, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "2187:7:3", + "referencedDeclaration": 2389, + "src": "2181:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 164, + "id": 140, "isConstant": false, "isLValue": false, "isPure": false, @@ -5431,13 +5435,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2187:9:3", + "src": "2181:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2176:20:3", + "src": "2170:20:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5445,12 +5449,12 @@ }, { "argumentTypes": null, - "id": 166, + "id": 142, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 99, - "src": "2198:7:3", + "referencedDeclaration": 75, + "src": "2192:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5468,18 +5472,18 @@ "typeString": "uint256" } ], - "id": 161, + "id": 137, "name": "totalGasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 198, - "src": "2162:13:3", + "referencedDeclaration": 174, + "src": "2156:13:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 167, + "id": 143, "isConstant": false, "isLValue": false, "isPure": false, @@ -5487,14 +5491,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2162:44:3", + "src": "2156:44:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2143:63:3" + "src": "2137:63:2" }, { "expression": { @@ -5506,19 +5510,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 176, + "id": 152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 174, + "id": 150, "name": "gasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 160, - "src": "2425:8:3", + "referencedDeclaration": 136, + "src": "2419:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5528,18 +5532,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 175, + "id": 151, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2436:8:3", + "referencedDeclaration": 77, + "src": "2430:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2425:19:3", + "src": "2419:19:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5557,18 +5561,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 169, + "id": 145, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2477, - "src": "2406:2:3", + "referencedDeclaration": 2408, + "src": "2400:2:2", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", "typeString": "tx" } }, - "id": 172, + "id": 148, "isConstant": false, "isLValue": false, "isPure": false, @@ -5576,13 +5580,13 @@ "memberName": "origin", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2406:9:3", + "src": "2400:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 173, + "id": 149, "isConstant": false, "isLValue": false, "isPure": false, @@ -5590,13 +5594,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2406:18:3", + "src": "2400:18:2", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 177, + "id": 153, "isConstant": false, "isLValue": false, "isPure": false, @@ -5604,37 +5608,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2406:39:3", + "src": "2400:39:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 178, + "id": 154, "nodeType": "ExpressionStatement", - "src": "2406:39:3" + "src": "2400:39:2" } ] }, "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 safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Gas price that should be used for the payment calculation.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 180, + "id": 156, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "payAndExecuteTransaction", + "name": "execPayTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 111, + "id": 87, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 89, + "id": 65, "name": "to", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1486:10:3", + "scope": 156, + "src": "1480:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5642,10 +5646,10 @@ "typeString": "address" }, "typeName": { - "id": 88, + "id": 64, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1486:7:3", + "src": "1480:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5656,11 +5660,11 @@ }, { "constant": false, - "id": 91, + "id": 67, "name": "value", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1507:13:3", + "scope": 156, + "src": "1501:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5668,10 +5672,10 @@ "typeString": "uint256" }, "typeName": { - "id": 90, + "id": 66, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1507:7:3", + "src": "1501:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5682,11 +5686,11 @@ }, { "constant": false, - "id": 93, + "id": 69, "name": "data", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1531:10:3", + "scope": 156, + "src": "1525:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5694,10 +5698,10 @@ "typeString": "bytes" }, "typeName": { - "id": 92, + "id": 68, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1531:5:3", + "src": "1525:5:2", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5708,26 +5712,26 @@ }, { "constant": false, - "id": 95, + "id": 71, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1552:24:3", + "scope": 156, + "src": "1546:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 94, + "id": 70, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "1552:14:3", + "referencedDeclaration": 5, + "src": "1546:14:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -5736,11 +5740,11 @@ }, { "constant": false, - "id": 97, + "id": 73, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1587:17:3", + "scope": 156, + "src": "1581:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5748,10 +5752,10 @@ "typeString": "uint256" }, "typeName": { - "id": 96, + "id": 72, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1587:7:3", + "src": "1581:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5762,11 +5766,11 @@ }, { "constant": false, - "id": 99, + "id": 75, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1614:15:3", + "scope": 156, + "src": "1608:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5774,10 +5778,10 @@ "typeString": "uint256" }, "typeName": { - "id": 98, + "id": 74, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1614:7:3", + "src": "1608:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5788,11 +5792,11 @@ }, { "constant": false, - "id": 101, + "id": 77, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1639:16:3", + "scope": 156, + "src": "1633:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5800,10 +5804,10 @@ "typeString": "uint256" }, "typeName": { - "id": 100, + "id": 76, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1639:7:3", + "src": "1633:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5814,11 +5818,11 @@ }, { "constant": false, - "id": 104, + "id": 80, "name": "v", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1665:9:3", + "scope": 156, + "src": "1659:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5827,19 +5831,19 @@ }, "typeName": { "baseType": { - "id": 102, + "id": 78, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1665:5:3", + "src": "1659:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 103, + "id": 79, "length": null, "nodeType": "ArrayTypeName", - "src": "1665:7:3", + "src": "1659:7:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -5850,11 +5854,11 @@ }, { "constant": false, - "id": 107, + "id": 83, "name": "r", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1685:11:3", + "scope": 156, + "src": "1679:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5863,19 +5867,19 @@ }, "typeName": { "baseType": { - "id": 105, + "id": 81, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1685:7:3", + "src": "1679:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 106, + "id": 82, "length": null, "nodeType": "ArrayTypeName", - "src": "1685:9:3", + "src": "1679:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -5886,11 +5890,11 @@ }, { "constant": false, - "id": 110, + "id": 86, "name": "s", "nodeType": "VariableDeclaration", - "scope": 180, - "src": "1707:11:3", + "scope": 156, + "src": "1701:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5899,19 +5903,19 @@ }, "typeName": { "baseType": { - "id": 108, + "id": 84, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1707:7:3", + "src": "1701:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 109, + "id": 85, "length": null, "nodeType": "ArrayTypeName", - "src": "1707:9:3", + "src": "1701:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -5921,26 +5925,26 @@ "visibility": "internal" } ], - "src": "1476:248:3" + "src": "1470:248:2" }, "payable": false, "returnParameters": { - "id": 112, + "id": 88, "nodeType": "ParameterList", "parameters": [], - "src": "1744:0:3" + "src": "1738:0:2" }, - "scope": 346, - "src": "1443:1009:3", + "scope": 324, + "src": "1443:1003:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 197, + "id": 173, "nodeType": "Block", - "src": "3007:86:3", + "src": "3001:86:2", "statements": [ { "expression": { @@ -5949,7 +5953,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 195, + "id": 171, "isConstant": false, "isLValue": false, "isPure": false, @@ -5960,7 +5964,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 193, + "id": 169, "isConstant": false, "isLValue": false, "isPure": false, @@ -5971,19 +5975,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 191, + "id": 167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 189, + "id": 165, "name": "executionGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 182, - "src": "3024:12:3", + "referencedDeclaration": 158, + "src": "3018:12:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5993,18 +5997,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 190, + "id": 166, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 184, - "src": "3039:7:3", + "referencedDeclaration": 160, + "src": "3033:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3024:22:3", + "src": "3018:22:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6014,18 +6018,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 192, + "id": 168, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 83, - "src": "3049:17:3", + "referencedDeclaration": 59, + "src": "3043:17:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3024:42:3", + "src": "3018:42:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6035,32 +6039,32 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 194, + "id": 170, "name": "BASE_TX_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 80, - "src": "3069:17:3", + "referencedDeclaration": 56, + "src": "3063:17:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3024:62:3", + "src": "3018:62:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 188, - "id": 196, + "functionReturnParameters": 164, + "id": 172, "nodeType": "Return", - "src": "3017:69:3" + "src": "3011:69:2" } ] }, "documentation": "@dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n @param executionGas Gas costs for the execution of the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).", - "id": 198, + "id": 174, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6068,16 +6072,16 @@ "name": "totalGasCosts", "nodeType": "FunctionDefinition", "parameters": { - "id": 185, + "id": 161, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 182, + "id": 158, "name": "executionGas", "nodeType": "VariableDeclaration", - "scope": 198, - "src": "2907:20:3", + "scope": 174, + "src": "2901:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6085,10 +6089,10 @@ "typeString": "uint256" }, "typeName": { - "id": 181, + "id": 157, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2907:7:3", + "src": "2901:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6099,11 +6103,11 @@ }, { "constant": false, - "id": 184, + "id": 160, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 198, - "src": "2929:15:3", + "scope": 174, + "src": "2923:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6111,10 +6115,10 @@ "typeString": "uint256" }, "typeName": { - "id": 183, + "id": 159, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2929:7:3", + "src": "2923:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6124,20 +6128,20 @@ "visibility": "internal" } ], - "src": "2906:39:3" + "src": "2900:39:2" }, "payable": false, "returnParameters": { - "id": 188, + "id": 164, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 187, + "id": 163, "name": "", "nodeType": "VariableDeclaration", - "scope": 198, - "src": "2993:7:3", + "scope": 174, + "src": "2987:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6145,10 +6149,10 @@ "typeString": "uint256" }, "typeName": { - "id": 186, + "id": 162, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2993:7:3", + "src": "2987:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6158,32 +6162,32 @@ "visibility": "internal" } ], - "src": "2992:9:3" + "src": "2986:9:2" }, - "scope": 346, - "src": "2884:209:3", + "scope": 324, + "src": "2878:209:2", "stateMutability": "pure", "superFunction": null, "visibility": "public" }, { "body": { - "id": 234, + "id": 210, "nodeType": "Block", - "src": "3945:147:3", + "src": "3938:147:2", "statements": [ { "assignments": [ - 214 + 190 ], "declarations": [ { "constant": false, - "id": 214, + "id": 190, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 235, - "src": "3955:16:3", + "scope": 211, + "src": "3948:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6191,10 +6195,10 @@ "typeString": "uint256" }, "typeName": { - "id": 213, + "id": 189, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3955:7:3", + "src": "3948:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6204,24 +6208,24 @@ "visibility": "internal" } ], - "id": 217, + "id": 193, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 215, + "id": 191, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "3974:7:3", + "referencedDeclaration": 2389, + "src": "3967:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 216, + "id": 192, "isConstant": false, "isLValue": false, "isPure": false, @@ -6229,14 +6233,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3974:9:3", + "src": "3967:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3955:28:3" + "src": "3948:28:2" }, { "expression": { @@ -6247,12 +6251,12 @@ "arguments": [ { "argumentTypes": null, - "id": 220, + "id": 196, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 200, - "src": "4009:2:3", + "referencedDeclaration": 176, + "src": "4002:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6260,12 +6264,12 @@ }, { "argumentTypes": null, - "id": 221, + "id": 197, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "4013:5:3", + "referencedDeclaration": 178, + "src": "4006:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6273,12 +6277,12 @@ }, { "argumentTypes": null, - "id": 222, + "id": 198, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 204, - "src": "4020:4:3", + "referencedDeclaration": 180, + "src": "4013:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6286,14 +6290,14 @@ }, { "argumentTypes": null, - "id": 223, + "id": 199, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 206, - "src": "4026:9:3", + "referencedDeclaration": 182, + "src": "4019:9:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -6302,18 +6306,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 224, + "id": 200, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "4037:7:3", + "referencedDeclaration": 2389, + "src": "4030:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 225, + "id": 201, "isConstant": false, "isLValue": false, "isPure": false, @@ -6321,7 +6325,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4037:9:3", + "src": "4030:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6343,7 +6347,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { @@ -6351,18 +6355,18 @@ "typeString": "uint256" } ], - "id": 219, + "id": 195, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1095, - "src": "4001:7:3", + "referencedDeclaration": 860, + "src": "3994:7:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 226, + "id": 202, "isConstant": false, "isLValue": false, "isPure": false, @@ -6370,7 +6374,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4001:46:3", + "src": "3994:46:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6384,21 +6388,21 @@ "typeString": "bool" } ], - "id": 218, + "id": 194, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "3993:7:3", + "referencedDeclaration": 2399, + "src": "3986:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 227, + "id": 203, "isConstant": false, "isLValue": false, "isPure": false, @@ -6406,15 +6410,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3993:55:3", + "src": "3986:55:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 228, + "id": 204, "nodeType": "ExpressionStatement", - "src": "3993:55:3" + "src": "3986:55:2" }, { "expression": { @@ -6423,19 +6427,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 232, + "id": 208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 229, + "id": 205, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 214, - "src": "4065:8:3", + "referencedDeclaration": 190, + "src": "4058:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6448,18 +6452,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 230, + "id": 206, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "4076:7:3", + "referencedDeclaration": 2389, + "src": "4069:7:2", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 231, + "id": 207, "isConstant": false, "isLValue": false, "isPure": false, @@ -6467,64 +6471,64 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4076:9:3", + "src": "4069:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4065:20:3", + "src": "4058:20:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 212, - "id": 233, + "functionReturnParameters": 188, + "id": 209, "nodeType": "Return", - "src": "4058:27:3" + "src": "4051:27:2" } ] }, - "documentation": "@dev Allows to estimate a Safe transaction. \n This method can only be used by the safe itself in a transaction. 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 `payAndExecuteTransaction`\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": 235, + "documentation": "@dev Allows to estimate a Safe transaction. \n This method can only be used by the safe itself in a transaction. 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 `execPayTransaction`\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": 211, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 209, + "id": 185, "modifierName": { "argumentTypes": null, - "id": 208, + "id": 184, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "3904:10:3", + "referencedDeclaration": 1358, + "src": "3897:10:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3904:10:3" + "src": "3897:10:2" } ], - "name": "estimate", + "name": "requiredTxGas", "nodeType": "FunctionDefinition", "parameters": { - "id": 207, + "id": 183, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 200, + "id": 176, "name": "to", "nodeType": "VariableDeclaration", - "scope": 235, - "src": "3816:10:3", + "scope": 211, + "src": "3809:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6532,10 +6536,10 @@ "typeString": "address" }, "typeName": { - "id": 199, + "id": 175, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3816:7:3", + "src": "3809:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6546,11 +6550,11 @@ }, { "constant": false, - "id": 202, + "id": 178, "name": "value", "nodeType": "VariableDeclaration", - "scope": 235, - "src": "3828:13:3", + "scope": 211, + "src": "3821:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6558,10 +6562,10 @@ "typeString": "uint256" }, "typeName": { - "id": 201, + "id": 177, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3828:7:3", + "src": "3821:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6572,11 +6576,11 @@ }, { "constant": false, - "id": 204, + "id": 180, "name": "data", "nodeType": "VariableDeclaration", - "scope": 235, - "src": "3843:10:3", + "scope": 211, + "src": "3836:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6584,10 +6588,10 @@ "typeString": "bytes" }, "typeName": { - "id": 203, + "id": 179, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3843:5:3", + "src": "3836:5:2", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6598,26 +6602,26 @@ }, { "constant": false, - "id": 206, + "id": 182, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 235, - "src": "3855:24:3", + "scope": 211, + "src": "3848:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 205, + "id": 181, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "3855:14:3", + "referencedDeclaration": 5, + "src": "3848:14:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -6625,20 +6629,20 @@ "visibility": "internal" } ], - "src": "3815:65:3" + "src": "3808:65:2" }, "payable": false, "returnParameters": { - "id": 212, + "id": 188, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 211, + "id": 187, "name": "", "nodeType": "VariableDeclaration", - "scope": 235, - "src": "3932:7:3", + "scope": 211, + "src": "3925:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6646,10 +6650,10 @@ "typeString": "uint256" }, "typeName": { - "id": 210, + "id": 186, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3932:7:3", + "src": "3925:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6659,32 +6663,32 @@ "visibility": "internal" } ], - "src": "3931:9:3" + "src": "3924:9:2" }, - "scope": 346, - "src": "3798:294:3", + "scope": 324, + "src": "3786:299:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 304, + "id": 282, "nodeType": "Block", - "src": "4202:433:3", + "src": "4195:437:2", "statements": [ { "assignments": [ - 250 + 226 ], "declarations": [ { "constant": false, - "id": 250, + "id": 226, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 305, - "src": "4264:17:3", + "scope": 283, + "src": "4257:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6692,10 +6696,10 @@ "typeString": "address" }, "typeName": { - "id": 249, + "id": 225, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4264:7:3", + "src": "4257:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6705,21 +6709,21 @@ "visibility": "internal" } ], - "id": 254, + "id": 230, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 252, + "id": 228, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4292:1:3", + "src": "4285:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6735,20 +6739,20 @@ "typeString": "int_const 0" } ], - "id": 251, + "id": 227, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4284:7:3", + "src": "4277:7:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 253, + "id": 229, "isConstant": false, "isLValue": false, "isPure": true, @@ -6756,25 +6760,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4284:10:3", + "src": "4277:10:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4264:30:3" + "src": "4257:30:2" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 256, + "id": 232, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 305, - "src": "4304:20:3", + "scope": 283, + "src": "4297:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6782,10 +6786,10 @@ "typeString": "address" }, "typeName": { - "id": 255, + "id": 231, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4304:7:3", + "src": "4297:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6795,21 +6799,21 @@ "visibility": "internal" } ], - "id": 257, + "id": 233, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "4304:20:3" + "src": "4297:20:2" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 259, + "id": 235, "name": "i", "nodeType": "VariableDeclaration", - "scope": 305, - "src": "4334:9:3", + "scope": 283, + "src": "4327:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6817,10 +6821,10 @@ "typeString": "uint256" }, "typeName": { - "id": 258, + "id": 234, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4334:7:3", + "src": "4327:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6830,33 +6834,33 @@ "visibility": "internal" } ], - "id": 260, + "id": 236, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "4334:9:3" + "src": "4327:9:2" }, { "body": { - "id": 302, + "id": 280, "nodeType": "Block", - "src": "4427:202:3", + "src": "4420:206:2", "statements": [ { "expression": { "argumentTypes": null, - "id": 284, + "id": 260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 271, + "id": 247, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "4441:12:3", + "referencedDeclaration": 232, + "src": "4434:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6869,12 +6873,12 @@ "arguments": [ { "argumentTypes": null, - "id": 273, + "id": 249, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 237, - "src": "4466:4:3", + "referencedDeclaration": 213, + "src": "4459:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6884,26 +6888,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 274, + "id": 250, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 240, - "src": "4472:1:3", + "referencedDeclaration": 216, + "src": "4465:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, - "id": 276, + "id": 252, "indexExpression": { "argumentTypes": null, - "id": 275, + "id": 251, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "4474:1:3", + "referencedDeclaration": 235, + "src": "4467:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6914,7 +6918,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4472:4:3", + "src": "4465:4:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6924,26 +6928,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 277, + "id": 253, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 243, - "src": "4478:1:3", + "referencedDeclaration": 219, + "src": "4471:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 279, + "id": 255, "indexExpression": { "argumentTypes": null, - "id": 278, + "id": 254, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "4480:1:3", + "referencedDeclaration": 235, + "src": "4473:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6954,7 +6958,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4478:4:3", + "src": "4471:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6964,26 +6968,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 280, + "id": 256, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 246, - "src": "4484:1:3", + "referencedDeclaration": 222, + "src": "4477:1:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 282, + "id": 258, "indexExpression": { "argumentTypes": null, - "id": 281, + "id": 257, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "4486:1:3", + "referencedDeclaration": 235, + "src": "4479:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6994,7 +6998,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4484:4:3", + "src": "4477:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -7020,18 +7024,18 @@ "typeString": "bytes32" } ], - "id": 272, + "id": 248, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2457, - "src": "4456:9:3", + "referencedDeclaration": 2388, + "src": "4449:9:2", "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": 283, + "id": 259, "isConstant": false, "isLValue": false, "isPure": false, @@ -7039,107 +7043,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4456:33:3", + "src": "4449:33:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4441:48:3", + "src": "4434:48:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 285, + "id": 261, "nodeType": "ExpressionStatement", - "src": "4441:48:3" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 287, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "4511:7:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 289, - "indexExpression": { - "argumentTypes": null, - "id": 288, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "4519:12:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4511:21:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 286, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "4503:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 290, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4503:30:3", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 291, - "nodeType": "ExpressionStatement", - "src": "4503:30:3" + "src": "4434:48:2" }, { "expression": { @@ -7151,40 +7069,72 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 295, + "id": 267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 293, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "4555:12:3", + "baseExpression": { + "argumentTypes": null, + "id": 263, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "4504:6:2", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 265, + "indexExpression": { + "argumentTypes": null, + "id": 264, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 232, + "src": "4511:12:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4504:20:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": ">", + "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 294, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 250, - "src": "4570:9:3", + "hexValue": "30", + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4528:1:2", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" }, - "src": "4555:24:3", + "src": "4504:25:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7198,21 +7148,21 @@ "typeString": "bool" } ], - "id": 292, + "id": 262, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "4547:7:3", + "referencedDeclaration": 2399, + "src": "4496:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 296, + "id": 268, "isConstant": false, "isLValue": false, "isPure": false, @@ -7220,32 +7170,121 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4547:33:3", + "src": "4496:34:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 297, + "id": 269, "nodeType": "ExpressionStatement", - "src": "4547:33:3" + "src": "4496:34:2" }, { "expression": { "argumentTypes": null, - "id": 300, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 271, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 232, + "src": "4552:12:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 272, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "4567:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4552:24:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 270, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "4544:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4544:33:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 275, + "nodeType": "ExpressionStatement", + "src": "4544:33:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 298, + "id": 276, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 250, - "src": "4594:9:3", + "referencedDeclaration": 226, + "src": "4591:9:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7255,26 +7294,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 299, + "id": 277, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "4606:12:3", + "referencedDeclaration": 232, + "src": "4603:12:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4594:24:3", + "src": "4591:24:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 301, + "id": 279, "nodeType": "ExpressionStatement", - "src": "4594:24:3" + "src": "4591:24:2" } ] }, @@ -7284,19 +7323,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 267, + "id": 243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 265, + "id": 241, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "4407:1:3", + "referencedDeclaration": 235, + "src": "4400:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7306,42 +7345,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 266, + "id": 242, "name": "threshold", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "4411:9:3", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "4404:9:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4407:13:3", + "src": "4400:13:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 303, + "id": 281, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 263, + "id": 239, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 261, + "id": 237, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "4400:1:3", + "referencedDeclaration": 235, + "src": "4393:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7352,14 +7389,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 262, + "id": 238, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4404:1:3", + "src": "4397:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7367,20 +7404,20 @@ }, "value": "0" }, - "src": "4400:5:3", + "src": "4393:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 264, + "id": 240, "nodeType": "ExpressionStatement", - "src": "4400:5:3" + "src": "4393:5:2" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 269, + "id": 245, "isConstant": false, "isLValue": false, "isPure": false, @@ -7388,15 +7425,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4422:3:3", + "src": "4415:3:2", "subExpression": { "argumentTypes": null, - "id": 268, + "id": 244, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "4422:1:3", + "referencedDeclaration": 235, + "src": "4415:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7407,17 +7444,17 @@ "typeString": "uint256" } }, - "id": 270, + "id": 246, "nodeType": "ExpressionStatement", - "src": "4422:3:3" + "src": "4415:3:2" }, "nodeType": "ForStatement", - "src": "4395:234:3" + "src": "4388:238:2" } ] }, "documentation": null, - "id": 305, + "id": 283, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7425,16 +7462,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 247, + "id": 223, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 237, + "id": 213, "name": "hash", "nodeType": "VariableDeclaration", - "scope": 305, - "src": "4117:12:3", + "scope": 283, + "src": "4110:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7442,10 +7479,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 236, + "id": 212, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4117:7:3", + "src": "4110:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -7456,11 +7493,11 @@ }, { "constant": false, - "id": 240, + "id": 216, "name": "v", "nodeType": "VariableDeclaration", - "scope": 305, - "src": "4131:9:3", + "scope": 283, + "src": "4124:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7469,19 +7506,19 @@ }, "typeName": { "baseType": { - "id": 238, + "id": 214, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4131:5:3", + "src": "4124:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 239, + "id": 215, "length": null, "nodeType": "ArrayTypeName", - "src": "4131:7:3", + "src": "4124:7:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -7492,11 +7529,11 @@ }, { "constant": false, - "id": 243, + "id": 219, "name": "r", "nodeType": "VariableDeclaration", - "scope": 305, - "src": "4142:11:3", + "scope": 283, + "src": "4135:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7505,19 +7542,19 @@ }, "typeName": { "baseType": { - "id": 241, + "id": 217, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4142:7:3", + "src": "4135:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 242, + "id": 218, "length": null, "nodeType": "ArrayTypeName", - "src": "4142:9:3", + "src": "4135:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -7528,11 +7565,11 @@ }, { "constant": false, - "id": 246, + "id": 222, "name": "s", "nodeType": "VariableDeclaration", - "scope": 305, - "src": "4155:11:3", + "scope": 283, + "src": "4148:11:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7541,19 +7578,19 @@ }, "typeName": { "baseType": { - "id": 244, + "id": 220, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4155:7:3", + "src": "4148:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 245, + "id": 221, "length": null, "nodeType": "ArrayTypeName", - "src": "4155:9:3", + "src": "4148:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -7563,26 +7600,26 @@ "visibility": "internal" } ], - "src": "4116:51:3" + "src": "4109:51:2" }, "payable": false, "returnParameters": { - "id": 248, + "id": 224, "nodeType": "ParameterList", "parameters": [], - "src": "4202:0:3" + "src": "4195:0:2" }, - "scope": 346, - "src": "4098:537:3", + "scope": 324, + "src": "4091:541:2", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 344, + "id": 322, "nodeType": "Block", - "src": "5451:126:3", + "src": "5448:126:2", "statements": [ { "expression": { @@ -7594,14 +7631,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 328, + "id": 306, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5483:4:3", + "src": "5480:4:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -7617,20 +7654,20 @@ "typeString": "int_const 25" } ], - "id": 327, + "id": 305, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5478:4:3", + "src": "5475:4:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 329, + "id": 307, "isConstant": false, "isLValue": false, "isPure": true, @@ -7638,7 +7675,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5478:10:3", + "src": "5475:10:2", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -7650,14 +7687,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 331, + "id": 309, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5495:1:3", + "src": "5492:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7673,20 +7710,20 @@ "typeString": "int_const 0" } ], - "id": 330, + "id": 308, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5490:4:3", + "src": "5487:4:2", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 332, + "id": 310, "isConstant": false, "isLValue": false, "isPure": true, @@ -7694,7 +7731,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5490:7:3", + "src": "5487:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -7702,25 +7739,25 @@ }, { "argumentTypes": null, - "id": 333, + "id": 311, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2496, - "src": "5499:4:3", + "referencedDeclaration": 2423, + "src": "5496:4:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$346", + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$324", "typeString": "contract GnosisSafePersonalEdition" } }, { "argumentTypes": null, - "id": 334, + "id": 312, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 307, - "src": "5505:2:3", + "referencedDeclaration": 285, + "src": "5502:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7728,12 +7765,12 @@ }, { "argumentTypes": null, - "id": 335, + "id": 313, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 309, - "src": "5509:5:3", + "referencedDeclaration": 287, + "src": "5506:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7741,12 +7778,12 @@ }, { "argumentTypes": null, - "id": 336, + "id": 314, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 311, - "src": "5516:4:3", + "referencedDeclaration": 289, + "src": "5513:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7754,25 +7791,25 @@ }, { "argumentTypes": null, - "id": 337, + "id": 315, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "5522:9:3", + "referencedDeclaration": 291, + "src": "5519:9:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 338, + "id": 316, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5533:9:3", + "referencedDeclaration": 293, + "src": "5530:9:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7780,12 +7817,12 @@ }, { "argumentTypes": null, - "id": 339, + "id": 317, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 317, - "src": "5544:7:3", + "referencedDeclaration": 295, + "src": "5541:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7793,12 +7830,12 @@ }, { "argumentTypes": null, - "id": 340, + "id": 318, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 319, - "src": "5553:8:3", + "referencedDeclaration": 297, + "src": "5550:8:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7806,12 +7843,12 @@ }, { "argumentTypes": null, - "id": 341, + "id": 319, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 321, - "src": "5563:6:3", + "referencedDeclaration": 299, + "src": "5560:6:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7829,7 +7866,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$346", + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$324", "typeString": "contract GnosisSafePersonalEdition" }, { @@ -7845,7 +7882,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { @@ -7865,18 +7902,18 @@ "typeString": "uint256" } ], - "id": 326, + "id": 304, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2459, - "src": "5468:9:3", + "referencedDeclaration": 2390, + "src": "5465:9:2", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 342, + "id": 320, "isConstant": false, "isLValue": false, "isPure": false, @@ -7884,21 +7921,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5468:102:3", + "src": "5465:102:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 325, - "id": 343, + "functionReturnParameters": 303, + "id": 321, "nodeType": "Return", - "src": "5461:109:3" + "src": "5458:109:2" } ] }, "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 _nonce Transaction nonce.\n @return Transaction hash.", - "id": 345, + "id": 323, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7906,16 +7943,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 322, + "id": 300, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 307, + "id": 285, "name": "to", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "5190:10:3", + "scope": 323, + "src": "5187:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7923,10 +7960,10 @@ "typeString": "address" }, "typeName": { - "id": 306, + "id": 284, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5190:7:3", + "src": "5187:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7937,11 +7974,11 @@ }, { "constant": false, - "id": 309, + "id": 287, "name": "value", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "5211:13:3", + "scope": 323, + "src": "5208:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7949,10 +7986,10 @@ "typeString": "uint256" }, "typeName": { - "id": 308, + "id": 286, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5211:7:3", + "src": "5208:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7963,11 +8000,11 @@ }, { "constant": false, - "id": 311, + "id": 289, "name": "data", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "5235:10:3", + "scope": 323, + "src": "5232:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7975,10 +8012,10 @@ "typeString": "bytes" }, "typeName": { - "id": 310, + "id": 288, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "5235:5:3", + "src": "5232:5:2", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -7989,26 +8026,26 @@ }, { "constant": false, - "id": 313, + "id": 291, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "5256:24:3", + "scope": 323, + "src": "5253:24:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 312, + "id": 290, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "5256:14:3", + "referencedDeclaration": 5, + "src": "5253:14:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -8017,11 +8054,11 @@ }, { "constant": false, - "id": 315, + "id": 293, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "5291:17:3", + "scope": 323, + "src": "5288:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8029,10 +8066,10 @@ "typeString": "uint256" }, "typeName": { - "id": 314, + "id": 292, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5291:7:3", + "src": "5288:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8043,11 +8080,11 @@ }, { "constant": false, - "id": 317, + "id": 295, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "5319:15:3", + "scope": 323, + "src": "5316:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8055,10 +8092,10 @@ "typeString": "uint256" }, "typeName": { - "id": 316, + "id": 294, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5319:7:3", + "src": "5316:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8069,11 +8106,11 @@ }, { "constant": false, - "id": 319, + "id": 297, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "5345:16:3", + "scope": 323, + "src": "5342:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8081,10 +8118,10 @@ "typeString": "uint256" }, "typeName": { - "id": 318, + "id": 296, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5345:7:3", + "src": "5342:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8095,11 +8132,11 @@ }, { "constant": false, - "id": 321, + "id": 299, "name": "_nonce", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "5372:14:3", + "scope": 323, + "src": "5369:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8107,10 +8144,10 @@ "typeString": "uint256" }, "typeName": { - "id": 320, + "id": 298, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5372:7:3", + "src": "5369:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8120,20 +8157,20 @@ "visibility": "internal" } ], - "src": "5180:212:3" + "src": "5177:212:2" }, "payable": false, "returnParameters": { - "id": 325, + "id": 303, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 324, + "id": 302, "name": "", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "5438:7:3", + "scope": 323, + "src": "5435:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8141,10 +8178,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 323, + "id": 301, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5438:7:3", + "src": "5435:7:2", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -8154,20 +8191,20 @@ "visibility": "internal" } ], - "src": "5437:9:3" + "src": "5434:9:2" }, - "scope": 346, - "src": "5153:424:3", + "scope": 324, + "src": "5150:424:2", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 347, - "src": "314:5265:3" + "scope": 325, + "src": "314:5262:2" } ], - "src": "0:5580:3" + "src": "0:5577:2" }, "compiler": { "name": "solc", @@ -8177,8 +8214,8 @@ "4": { "events": {}, "links": {}, - "address": "0x15d8f9bb023d47ffd2fb2330b868521ea2161895", - "transactionHash": "0xcf3802c2d7b1ce19bd5a1556a992b9ac785bd3c4c7885a5b20f69edc75ddd844" + "address": "0xfa2be236995d09b0ee494b9e40637d661ff40494", + "transactionHash": "0x1db063ae298dedb887690b77fc973264fd51dfbee9fdb699c430821998894113" }, "1525950336085": { "events": {}, @@ -8191,8 +8228,14 @@ "links": {}, "address": "0xad5d0371132b0959508b44c6221e6bc4de8df987", "transactionHash": "0x9a582bc25c7705ede926f13bef0ba8fa76176d0ec80dc0871e1b28d87382f545" + }, + "1526478212260": { + "events": {}, + "links": {}, + "address": "0x6cd3878c8fce094d881e37ed48a6eb90bcea5ef7", + "transactionHash": "0xd404a4c4c3ff550c031b238e6df539cbbd9d5727574d8446d0c40f2abf4638b1" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-14T07:39:37.952Z" + "updatedAt": "2018-05-16T13:45:24.509Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json index 30774201..cf6a3a08 100644 --- a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json +++ b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json @@ -1,57 +1,6 @@ { "contractName": "GnosisSafeTeamEdition", "abi": [ - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "owners", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - }, - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "addOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "module", - "type": "address" - } - ], - "name": "addModule", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { "constant": true, "inputs": [ @@ -71,57 +20,33 @@ "stateMutability": "view", "type": "function" }, - { - "constant": true, - "inputs": [], - "name": "threshold", - "outputs": [ - { - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "isModule", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": false, "inputs": [ { - "name": "oldOwnerIndex", + "name": "to", + "type": "address" + }, + { + "name": "value", "type": "uint256" }, { - "name": "oldOwner", - "type": "address" + "name": "data", + "type": "bytes" }, { - "name": "newOwner", - "type": "address" + "name": "operation", + "type": "uint8" + } + ], + "name": "execTransactionFromModule", + "outputs": [ + { + "name": "success", + "type": "bool" } ], - "name": "replaceOwner", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" @@ -129,16 +54,12 @@ { "constant": false, "inputs": [ - { - "name": "moduleIndex", - "type": "uint256" - }, { "name": "module", "type": "address" } ], - "name": "removeModule", + "name": "enableModule", "outputs": [], "payable": false, "stateMutability": "nonpayable", @@ -160,13 +81,8 @@ }, { "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "modules", + "inputs": [], + "name": "SENTINEL_MODULES", "outputs": [ { "name": "", @@ -181,8 +97,8 @@ "constant": false, "inputs": [ { - "name": "ownerIndex", - "type": "uint256" + "name": "prevOwner", + "type": "address" }, { "name": "owner", @@ -199,6 +115,20 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "SENTINEL_OWNERS", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": false, "inputs": [ @@ -225,6 +155,29 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "bytes32" + }, + { + "name": "", + "type": "address" + } + ], + "name": "isApproved", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [], @@ -253,37 +206,6 @@ "stateMutability": "view", "type": "function" }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - } - ], - "name": "executeModule", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { "constant": true, "inputs": [], @@ -298,29 +220,6 @@ "stateMutability": "view", "type": "function" }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "bytes32" - }, - { - "name": "", - "type": "address" - } - ], - "name": "isConfirmed", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": false, "inputs": [ @@ -335,6 +234,64 @@ "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": [ + { + "name": "prevModule", + "type": "address" + }, + { + "name": "module", + "type": "address" + } + ], + "name": "disableModule", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "prevOwner", + "type": "address" + }, + { + "name": "oldOwner", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" + } + ], + "name": "swapOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": true, "inputs": [ @@ -354,6 +311,20 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "getThreshold", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [], @@ -409,7 +380,7 @@ "type": "uint256" } ], - "name": "confirmTransaction", + "name": "approveTransactionWithParameters", "outputs": [], "payable": false, "stateMutability": "nonpayable", @@ -439,7 +410,7 @@ "type": "uint256" } ], - "name": "executeTransaction", + "name": "execTransactionIfApproved", "outputs": [], "payable": false, "stateMutability": "nonpayable", @@ -481,51 +452,51 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612345806100206000396000f300608060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146101355780630e5229b0146101a25780631ed86f19146101f25780632b500041146102355780632b5b1f82146102fb5780632f54bf6e146103a557806342cde4e81461040057806342f6e3891461043157806354e99c6e1461048c5780637c6401d3146104f95780637de7edef1461054657806381b2248a14610589578063842b954e146105f65780639681467f14610650578063a04222e1146106fa578063a0e67e2b146107d3578063a3f4df7e1461083f578063b021640a146108cf578063b2494df314610987578063b79ffaff146109f3578063b7f3358d14610a5c578063e52cb36a14610a8c578063ffa1ad7414610ad5575b005b34801561014157600080fd5b5061016060048036038101908080359060200190929190505050610b65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101ae57600080fd5b506101f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610ba3565b005b3480156101fe57600080fd5b50610233600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d46565b005b34801561024157600080fd5b506102dd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610ec0565b60405180826000191660001916815260200191505060405180910390f35b34801561030757600080fd5b506103a3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291905050506110dc565b005b3480156103b157600080fd5b506103e6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611230565b604051808215151515815260200191505060405180910390f35b34801561040c57600080fd5b50610415611286565b604051808260ff1660ff16815260200191505060405180910390f35b34801561043d57600080fd5b50610472600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129d565b604051808215151515815260200191505060405180910390f35b34801561049857600080fd5b506104f760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112bd565b005b34801561050557600080fd5b5061054460048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f6565b005b34801561055257600080fd5b50610587600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ac565b005b34801561059557600080fd5b506105b46004803603810190808035906020019092919050505061174f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060257600080fd5b5061064e60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061178d565b005b34801561065c57600080fd5b506106f8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050611988565b005b34801561070657600080fd5b506107d160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611a2b565b005b3480156107df57600080fd5b506107e8611a45565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b505050509050019250505060405180910390f35b34801561084b57600080fd5b50610854611ad3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610894578082015181840152602081019050610879565b50505050905090810190601f1680156108c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108db57600080fd5b5061096d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611b0c565b604051808215151515815260200191505060405180910390f35b34801561099357600080fd5b5061099c611b7d565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109df5780820151818401526020810190506109c4565b505050509050019250505060405180910390f35b3480156109ff57600080fd5b50610a426004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c0b565b604051808215151515815260200191505060405180910390f35b348015610a6857600080fd5b50610a8a600480360381019080803560ff169060200190929190505050611c3a565b005b348015610a9857600080fd5b50610abb6004803603810190808035600019169060200190929190505050611cbc565b604051808215151515815260200191505060405180910390f35b348015610ae157600080fd5b50610aea611cdc565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b2a578082015181840152602081019050610b0f565b50505050905090810190601f168015610b575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600381815481101515610b7457fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bdd57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610c0357600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610c5c57600080fd5b60038290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600460009054906101000a900460ff1660ff16141515610d4257610d4181611c3a565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d8057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610da657600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610dff57600080fd5b60018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515611061578051825260208201915060208101905060208303925061103c565b6001836020036101000a03801982511681845116808217855250505050505090500183600281111561108f57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561113657600080fd5b6111438686868686610ec0565b905060076000826000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111b757600080fd5b600160076000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460009054906101000a900460ff16905090565b60026020528060005260406000206000915054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112f757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561131d57600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561137657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660038481548110151561139c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156113e957600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806003848154811015156114a957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561153057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660018381548110151561155657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156115a357600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018080805490500381548110151561161057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018381548110151561164a57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018054809190600190036116a791906121cf565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116e657600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561170c57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018181548110151561175e57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117c757600080fd5b8060ff16600160038054905003101515156117e157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660038481548110151561180757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561185457600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060036001600380549050038154811015156118c357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003848154811015156118fd57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600380548091906001900361195a91906121fb565b508060ff16600460009054906101000a900460ff1660ff161415156119835761198281611c3a565b5b505050565b60006119978686868686610ec0565b905060066000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156119ce57600080fd5b6119d781611d15565b600160066000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550611a18868686865a611ec7565b1515611a2357600080fd5b505050505050565b611a358484611fc4565b611a3f8282612152565b50505050565b60606003805480602002602001604051908101604052809291908181526020018280548015611ac957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611a7f575b5050505050905090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611b6657600080fd5b611b73858585855a611ec7565b9050949350505050565b60606001805480602002602001604051908101604052809291908181526020018280548015611c0157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611bb7575b5050505050905090565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c7457600080fd5b6003805490508160ff1611151515611c8b57600080fd5b60018160ff1610151515611c9e57600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b60066020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600092505b600380549050831015611e9f57600383815481101515611d4057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060076000866000191660001916815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611e0c5750805b15611e92578015611e8957600060076000876000191660001916815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b83806001019450505b8280600101935050611d24565b600460009054906101000a900460ff1660ff168410151515611ec057600080fd5b5050505050565b60008060006002811115611ed757fe5b846002811115611ee357fe5b1415611efc57611ef58787878661218d565b9150611fba565b60016002811115611f0957fe5b846002811115611f1557fe5b1415611f2d57611f268786856121a6565b9150611fb9565b611f36856121bd565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000600460009054906101000a900460ff1660ff16141515611fe857600080fd5b83518360ff1611151515611ffb57600080fd5b60018360ff161015151561200e57600080fd5b600091505b835182101561211a57838281518110151561202a57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561205c57600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156120b557600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050612013565b8360039080519060200190612130929190612227565b5082600460006101000a81548160ff021916908360ff16021790555050505050565b60008273ffffffffffffffffffffffffffffffffffffffff161415156121895761217d82825a6121a6565b151561218857600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b8154818355818111156121f6578183600052602060002091820191016121f591906122b1565b5b505050565b8154818355818111156122225781836000526020600020918201910161222191906122b1565b5b505050565b8280548282559060005260206000209081019282156122a0579160200282015b8281111561229f5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612247565b5b5090506122ad91906122d6565b5090565b6122d391905b808211156122cf5760008160009055506001016122b7565b5090565b90565b61231691905b8082111561231257600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016122dc565b5090565b905600a165627a7a72305820ab4d09dc7a7a64b6f63048cb825754216f413beab85cd31284921e0b2018b7030029", - "deployedBytecode": "0x608060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146101355780630e5229b0146101a25780631ed86f19146101f25780632b500041146102355780632b5b1f82146102fb5780632f54bf6e146103a557806342cde4e81461040057806342f6e3891461043157806354e99c6e1461048c5780637c6401d3146104f95780637de7edef1461054657806381b2248a14610589578063842b954e146105f65780639681467f14610650578063a04222e1146106fa578063a0e67e2b146107d3578063a3f4df7e1461083f578063b021640a146108cf578063b2494df314610987578063b79ffaff146109f3578063b7f3358d14610a5c578063e52cb36a14610a8c578063ffa1ad7414610ad5575b005b34801561014157600080fd5b5061016060048036038101908080359060200190929190505050610b65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101ae57600080fd5b506101f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610ba3565b005b3480156101fe57600080fd5b50610233600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d46565b005b34801561024157600080fd5b506102dd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610ec0565b60405180826000191660001916815260200191505060405180910390f35b34801561030757600080fd5b506103a3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291905050506110dc565b005b3480156103b157600080fd5b506103e6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611230565b604051808215151515815260200191505060405180910390f35b34801561040c57600080fd5b50610415611286565b604051808260ff1660ff16815260200191505060405180910390f35b34801561043d57600080fd5b50610472600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129d565b604051808215151515815260200191505060405180910390f35b34801561049857600080fd5b506104f760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112bd565b005b34801561050557600080fd5b5061054460048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f6565b005b34801561055257600080fd5b50610587600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ac565b005b34801561059557600080fd5b506105b46004803603810190808035906020019092919050505061174f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060257600080fd5b5061064e60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061178d565b005b34801561065c57600080fd5b506106f8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050611988565b005b34801561070657600080fd5b506107d160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611a2b565b005b3480156107df57600080fd5b506107e8611a45565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b505050509050019250505060405180910390f35b34801561084b57600080fd5b50610854611ad3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610894578082015181840152602081019050610879565b50505050905090810190601f1680156108c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108db57600080fd5b5061096d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611b0c565b604051808215151515815260200191505060405180910390f35b34801561099357600080fd5b5061099c611b7d565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109df5780820151818401526020810190506109c4565b505050509050019250505060405180910390f35b3480156109ff57600080fd5b50610a426004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c0b565b604051808215151515815260200191505060405180910390f35b348015610a6857600080fd5b50610a8a600480360381019080803560ff169060200190929190505050611c3a565b005b348015610a9857600080fd5b50610abb6004803603810190808035600019169060200190929190505050611cbc565b604051808215151515815260200191505060405180910390f35b348015610ae157600080fd5b50610aea611cdc565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b2a578082015181840152602081019050610b0f565b50505050905090810190601f168015610b575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600381815481101515610b7457fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bdd57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610c0357600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610c5c57600080fd5b60038290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600460009054906101000a900460ff1660ff16141515610d4257610d4181611c3a565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d8057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610da657600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610dff57600080fd5b60018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515611061578051825260208201915060208101905060208303925061103c565b6001836020036101000a03801982511681845116808217855250505050505090500183600281111561108f57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561113657600080fd5b6111438686868686610ec0565b905060076000826000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111b757600080fd5b600160076000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460009054906101000a900460ff16905090565b60026020528060005260406000206000915054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112f757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561131d57600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561137657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660038481548110151561139c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156113e957600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806003848154811015156114a957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561153057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660018381548110151561155657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156115a357600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018080805490500381548110151561161057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018381548110151561164a57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018054809190600190036116a791906121cf565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116e657600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561170c57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018181548110151561175e57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117c757600080fd5b8060ff16600160038054905003101515156117e157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660038481548110151561180757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561185457600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060036001600380549050038154811015156118c357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003848154811015156118fd57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600380548091906001900361195a91906121fb565b508060ff16600460009054906101000a900460ff1660ff161415156119835761198281611c3a565b5b505050565b60006119978686868686610ec0565b905060066000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156119ce57600080fd5b6119d781611d15565b600160066000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550611a18868686865a611ec7565b1515611a2357600080fd5b505050505050565b611a358484611fc4565b611a3f8282612152565b50505050565b60606003805480602002602001604051908101604052809291908181526020018280548015611ac957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611a7f575b5050505050905090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611b6657600080fd5b611b73858585855a611ec7565b9050949350505050565b60606001805480602002602001604051908101604052809291908181526020018280548015611c0157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611bb7575b5050505050905090565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c7457600080fd5b6003805490508160ff1611151515611c8b57600080fd5b60018160ff1610151515611c9e57600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b60066020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600092505b600380549050831015611e9f57600383815481101515611d4057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060076000866000191660001916815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611e0c5750805b15611e92578015611e8957600060076000876000191660001916815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b83806001019450505b8280600101935050611d24565b600460009054906101000a900460ff1660ff168410151515611ec057600080fd5b5050505050565b60008060006002811115611ed757fe5b846002811115611ee357fe5b1415611efc57611ef58787878661218d565b9150611fba565b60016002811115611f0957fe5b846002811115611f1557fe5b1415611f2d57611f268786856121a6565b9150611fb9565b611f36856121bd565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000600460009054906101000a900460ff1660ff16141515611fe857600080fd5b83518360ff1611151515611ffb57600080fd5b60018360ff161015151561200e57600080fd5b600091505b835182101561211a57838281518110151561202a57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561205c57600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156120b557600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050612013565b8360039080519060200190612130929190612227565b5082600460006101000a81548160ff021916908360ff16021790555050505050565b60008273ffffffffffffffffffffffffffffffffffffffff161415156121895761217d82825a6121a6565b151561218857600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b8154818355818111156121f6578183600052602060002091820191016121f591906122b1565b5b505050565b8154818355818111156122225781836000526020600020918201910161222191906122b1565b5b505050565b8280548282559060005260206000209081019282156122a0579160200282015b8281111561229f5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612247565b5b5090506122ad91906122d6565b5090565b6122d391905b808211156122cf5760008160009055506001016122b7565b5090565b90565b61231691905b8082111561231257600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016122dc565b5090565b905600a165627a7a72305820ab4d09dc7a7a64b6f63048cb825754216f413beab85cd31284921e0b2018b7030029", - "sourceMap": "272:3441:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;272:3441:5;;;;;;;", - "deployedSourceMap": "272:3441:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1737:431;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1737:431:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1166:300:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1166:300:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;3400:311:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3400:311:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1078:510;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1078:510:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4552:125:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4552:125:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4436:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4436:110:10;;;;;;;;;;;;;;;;;;;;;;;;;;;599:41:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;599:41:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3419:501:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3419:501:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1722:336:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1722:336:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;500:23:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:599:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2499:599:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1971:535:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1971:535:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4759:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4759:111:10;;;;;;;;;;;;;;;;;336:56:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;336:56:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2394:361:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2394:361:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4279:112: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;4279:112:9;;;;;;;;;;;;;;;;;683:64:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;683:64:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4109:321:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4109:321:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;536:43:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;536:43:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;398:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;398:40:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1737:431::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1894:1:10;1885:5;:10;;;;1877:19;;;;;;;;1955:7;:14;1963:5;1955:14;;;;;;;;;;;;;;;;;;;;;;;;;1954:15;1946:24;;;;;;;;1980:6;1992:5;1980:18;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1980:18:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025:4;2008:7;:14;2016:5;2008:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;2110:10;2097:23;;:9;;;;;;;;;;;:23;;;;2093:68;;;2134:27;2150:10;2134:15;:27::i;:::-;2093:68;1737:431;;:::o;1166:300:9:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1317:1:9;1306:6;1298:20;;;;1290:29;;;;;;;;1379:8;:16;1388:6;1379:16;;;;;;;;;;;;;;;;;;;;;;;;;1378:17;1370:26;;;;;;;;1406:7;1419:6;1406:20;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1406:20:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1455:4;1436:8;:16;1445:6;1436:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1166:300;:::o;3400:311:5:-;3603:7;3648:4;3643:10;;3660:1;3655:7;;3664:4;3670:2;3674:5;3681:4;3687:9;3698:5;3633:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;3633:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3626:78;;3400:311;;;;;;;:::o;1078:510::-;1323:23;1293:7;:19;1301:10;1293:19;;;;;;;;;;;;;;;;;;;;;;;;;1285:28;;;;;;;;1349:53;1368:2;1372:5;1379:4;1385:9;1396:5;1349:18;:53::i;:::-;1323:79;;1483:11;:28;1495:15;1483:28;;;;;;;;;;;;;;;;;:40;1512:10;1483:40;;;;;;;;;;;;;;;;;;;;;;;;;1482:41;1474:50;;;;;;;;1577:4;1534:11;:28;1546:15;1534:28;;;;;;;;;;;;;;;;;:40;1563:10;1534:40;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;1078:510;;;;;;:::o;4552:125:10:-;4629:4;4656:7;:14;4664:5;4656:14;;;;;;;;;;;;;;;;;;;;;;;;;4649:21;;4552:125;;;:::o;4436:110::-;4502:5;4530:9;;;;;;;;;;;4523:16;;4436:110;:::o;599:41:9:-;;;;;;;;;;;;;;;;;;;;;;:::o;3419:501:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;3609:1:10;3597:8;:13;;;;3589:22;;;;;;;;3670:7;:17;3678:8;3670:17;;;;;;;;;;;;;;;;;;;;;;;;;3669:18;3661:27;;;;;;;;3793:8;3768:33;;:6;3775:13;3768:21;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;3760:42;;;;;;;;3832:5;3812:7;:17;3820:8;3812:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;3867:4;3847:7;:17;3855:8;3847:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3905:8;3881:6;3888:13;3881:21;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;3419:501;;;:::o;1722:336:9:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1924:6:9;1900:30;;:7;1908:11;1900:20;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;1892:39;;;;;;;;1960:5;1941:8;:16;1950:6;1941:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;1998:7;2023:1;2006:7;:14;;;;:18;1998:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:7;1983:11;1975:20;;;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;2035:7;:16;;;;;;;;;;;;:::i;:::-;;1722:336;;:::o;626:208:6:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;500:23:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2499:599:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;2727:10:10;2706:31;;2722:1;2706:6;:13;;;;:17;:31;;2698:40;;;;;;;;2840:5;2818:27;;:6;2825:10;2818:18;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;2810:36;;;;;;;;2873:5;2856:7;:14;2864:5;2856:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;2909:6;2932:1;2916:6;:13;;;;:17;2909:25;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:6;2895:10;2888:18;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2944:6;:15;;;;;;;;;;;;:::i;:::-;;3040:10;3027:23;;:9;;;;;;;;;;;:23;;;;3023:68;;;3064:27;3080:10;3064:15;:27::i;:::-;3023:68;2499:599;;;:::o;1971:535:5:-;2158:23;2184:53;2203:2;2207:5;2214:4;2220:9;2231:5;2184:18;:53::i;:::-;2158:79;;2256:10;:27;2267:15;2256:27;;;;;;;;;;;;;;;;;;;;;;;;;;;2255:28;2247:37;;;;;;;;2294:43;2321:15;2294:26;:43::i;:::-;2430:4;2400:10;:27;2411:15;2400:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;2452:46;2460:2;2464:5;2471:4;2477:9;2488;2452:7;:46::i;:::-;2444:55;;;;;;;;1971:535;;;;;;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;4759:111:10:-;4825:9;4857:6;4850:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111;:::o;336:56:5:-;;;;;;;;;;;;;;;;;;;;:::o;2394:361:9:-;2514:12;2599:8;:20;2608:10;2599:20;;;;;;;;;;;;;;;;;;;;;;;;;2591:29;;;;;;;;2702:46;2710:2;2714:5;2721:4;2727:9;2738;2702:7;:46::i;:::-;2692:56;;2394:361;;;;;;:::o;4279:112::-;4346:8;4377:7;4370:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;:::o;683:64:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4109:321:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;4291:6:10;:13;;;;4277:10;:27;;;;4269:36;;;;;;;;4389:1;4375:10;:15;;;;4367:24;;;;;;;;4413:10;4401:9;;:22;;;;;;;;;;;;;;;;;;4109:321;:::o;536:43:5:-;;;;;;;;;;;;;;;;;;;;;;:::o;398:40::-;;;;;;;;;;;;;;;;;;;;:::o;2512:610::-;2604:21;2686:9;2739:13;2778:19;2628:1;2604:25;;2698:1;2686:13;;2681:390;2705:6;:13;;;;2701:1;:17;2681:390;;;2755:6;2762:1;2755:9;;;;;;;;;;;;;;;;;;;;;;;;;;;2739:25;;2800:11;:28;2812:15;2800:28;;;;;;;;;;;;;;;;;:35;2829:5;2800:35;;;;;;;;;;;;;;;;;;;;;;;;;2778:57;;2861:10;2852:19;;:5;:19;;;:37;;;;2875:14;2852:37;2849:212;;;2913:14;2909:104;;;2989:5;2951:11;:28;2963:15;2951:28;;;;;;;;;;;;;;;;;:35;2980:5;2951:35;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;2909:104;3030:16;;;;;;;2849:212;2720:3;;;;;;;2681:390;;;3105:9;;;;;;;;;;;3088:26;;:13;:26;;3080:35;;;;;;;;2512:610;;;;;:::o;2761:548:9:-;2892:12;3163:19;2937;2924:32;;;;;;;;:9;:32;;;;;;;;;2920:383;;;2980:35;2992:2;2996:5;3003:4;3009:5;2980:11;:35::i;:::-;2970:45;;2920:383;;;3047:27;3034:40;;;;;;;;:9;:40;;;;;;;;;3030:273;;;3098:36;3118:2;3122:4;3128:5;3098:19;:36::i;:::-;3088:46;;3030:273;;;3185:19;3199:4;3185:13;:19::i;:::-;3163:41;;3243:1;3228:11;:16;;;;3218:26;;3263:29;3280:11;3263:29;;;;;;;;;;;;;;;;;;;;;;3030:273;2920:383;2761:548;;;;;;;;:::o;651:846:10:-;1147:9;1246:13;885:1;872:9;;;;;;;;;;;:14;;;864:23;;;;;;;;994:7;:14;980:10;:28;;;;972:37;;;;;;;;1093:1;1079:10;:15;;;;1071:24;;;;;;;;1159:1;1147:13;;1142:291;1166:7;:14;1162:1;:18;1142:291;;;1262:7;1270:1;1262:10;;;;;;;;;;;;;;;;;;1246:26;;1303:1;1294:5;:10;;;;1286:19;;;;;;;;1372:7;:14;1380:5;1372:14;;;;;;;;;;;;;;;;;;;;;;;;;1371:15;1363:24;;;;;;;;1418:4;1401:7;:14;1409:5;1401:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;1182:3;;;;;;;1142:291;;;1451:7;1442:6;:16;;;;;;;;;;;;:::i;:::-;;1480:10;1468:9;;:22;;;;;;;;;;;;;;;;;;651:846;;;;:::o;769:230:9:-;856:1;850:2;:7;;;;846:146;;;951:40;971:2;975:4;981:9;951:19;:40::i;:::-;943:49;;;;;;;;846:146;769:230;;:::o;3315:309::-;3424:12;3606:1;3603;3596:4;3590:11;3583:4;3577;3573:15;3566:5;3562:2;3555:5;3550:58;3539:69;;3525:93;;;;;;:::o;3630:303::-;3732:12;3915:1;3912;3905:4;3899:11;3892:4;3886;3882:15;3878:2;3871:5;3858:59;3847:70;;3833:94;;;;;:::o;3939:261::-;4008:19;4178:4;4172:11;4165:4;4159;4155:15;4152:1;4145:39;4130:54;;4116:78;;;:::o;272:3441:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.23;\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 => bool) public isExecuted;\n\n // isConfirmed mapping allows to check if a transaction (by hash) was confirmed by an owner.\n mapping (bytes32 => mapping(address => bool)) public isConfirmed;\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.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n function confirmTransaction(address to, uint256 value, bytes data, Enum.Operation operation, uint256 nonce)\n public\n {\n // Only Safe owners are allowed to confirm Safe transactions.\n require(isOwner[msg.sender]);\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // It is only possible to confirm a transaction once.\n require(!isConfirmed[transactionHash][msg.sender]);\n isConfirmed[transactionHash][msg.sender] = true;\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 function executeTransaction(\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]);\n checkAndClearConfirmations(transactionHash);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(execute(to, value, data, operation, gasleft()));\n }\n\n function checkAndClearConfirmations(bytes32 transactionHash)\n internal\n {\n uint256 confirmations = 0;\n // Validate threshold is reached.\n for (uint256 i = 0; i < owners.length; i++) {\n address owner = owners[i];\n bool ownerConfirmed = isConfirmed[transactionHash][owner];\n if(owner == msg.sender || ownerConfirmed) {\n if (ownerConfirmed) {\n isConfirmed[transactionHash][owner] = false;\n }\n confirmations ++;\n }\n }\n require(confirmations >= threshold);\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(byte(0x19), byte(0), this, to, value, data, operation, nonce);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50612c1b806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b1461073d578063a3f4df7e146107a9578063b2494df314610839578063b7f3358d146108a5578063b91a667f146108d5578063e009cfde14610925578063e318b52b14610988578063e52cb36a14610a0b578063e75235b814610a54578063ffa1ad7414610a85575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b15565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610cca565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610d6d565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f89565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919050505061100b565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110a8565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611325565b005b3480156104e957600080fd5b506104f26113c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506113cd565b005b3480156105b057600080fd5b506105b9611653565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611658565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611672565b604051808215151515815260200191505060405180910390f35b34801561074957600080fd5b506107526116a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561079557808201518184015260208101905061077a565b505050509050019250505060405180910390f35b3480156107b557600080fd5b506107be61183c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fe5780820151818401526020810190506107e3565b50505050905090810190601f16801561082b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084557600080fd5b5061084e611875565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610891578082015181840152602081019050610876565b505050509050019250505060405180910390f35b3480156108b157600080fd5b506108d3600480360381019080803560ff169060200190929190505050611b1c565b005b3480156108e157600080fd5b50610923600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b9b565b005b34801561093157600080fd5b50610986600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e53565b005b34801561099457600080fd5b50610a09600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612086565b005b348015610a1757600080fd5b50610a3a600480360381019080803560001916906020019092919050505061241b565b604051808215151515815260200191505060405180910390f35b348015610a6057600080fd5b50610a6961243b565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a9157600080fd5b50610a9a612452565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ada578082015181840152602081019050610abf565b50505050905090810190601f168015610b075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610b9b57600080fd5b610ba88686868686610d6d565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610bdf57600080fd5b60066000826000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610c5157600080fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b6000610cd98686868686610d6d565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610d1057600080fd5b610d198161248b565b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610d5a868686865a6126e0565b1515610d6557600080fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610f0e5780518252602082019150602081019050602083039250610ee9565b6001836020036101000a038019825116818451168082178552505050505050905001836002811115610f3c57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561109157600080fd5b61109e858585855a6126e0565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110e257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111365750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561114157600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111c557600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561135f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561138557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561140757600080fd5b8060ff166001600354031015151561141e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156114b757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff1614151561164e5761164d81611b1c565b5b505050565b600181565b61166284846127dd565b61166c8282612a6e565b50505050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6060806000806003546040519080825280602002602001820160405280156116d85781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156118335780838381518110151561178857fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611743565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561198957600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118e4565b826040519080825280602002602001820160405280156119b85781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611b1357818184815181101515611a6857fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611a23565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b5657600080fd5b6003548160ff1611151515611b6a57600080fd5b60018160ff1610151515611b7d57600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bd557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611c295750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611c3457600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611cb857600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611e4f57611e4e81611b1c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e8d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611f2657600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120c057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156121145750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561211f57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121a357600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561223c57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600080925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156126b95760066000856000191660001916815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806125cc5750805b1561265257801561264957600060066000866000191660001916815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506124f7565b600460009054906101000a900460ff1660ff1683101515156126da57600080fd5b50505050565b600080600060028111156126f057fe5b8460028111156126fc57fe5b14156127155761270e87878786612bad565b91506127d3565b6001600281111561272257fe5b84600281111561272e57fe5b14156127465761273f878685612bc6565b91506127d2565b61274f85612bdd565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff1614151561280257600080fd5b84518460ff161115151561281557600080fd5b60018460ff161015151561282857600080fd5b60019250600091505b84518210156129c557848281518110151561284857fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156128a85750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156128b357600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561293757600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612831565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612af357600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612ba957612b9d82825a612bc6565b1515612ba857600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820aa4f2f1bee5ca42e38a155540ac82e19af0bc412962c5bff72447a23481d2d090029", + "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b1461073d578063a3f4df7e146107a9578063b2494df314610839578063b7f3358d146108a5578063b91a667f146108d5578063e009cfde14610925578063e318b52b14610988578063e52cb36a14610a0b578063e75235b814610a54578063ffa1ad7414610a85575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b15565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610cca565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610d6d565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f89565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919050505061100b565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110a8565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611325565b005b3480156104e957600080fd5b506104f26113c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506113cd565b005b3480156105b057600080fd5b506105b9611653565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611658565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611672565b604051808215151515815260200191505060405180910390f35b34801561074957600080fd5b506107526116a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561079557808201518184015260208101905061077a565b505050509050019250505060405180910390f35b3480156107b557600080fd5b506107be61183c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fe5780820151818401526020810190506107e3565b50505050905090810190601f16801561082b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084557600080fd5b5061084e611875565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610891578082015181840152602081019050610876565b505050509050019250505060405180910390f35b3480156108b157600080fd5b506108d3600480360381019080803560ff169060200190929190505050611b1c565b005b3480156108e157600080fd5b50610923600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b9b565b005b34801561093157600080fd5b50610986600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e53565b005b34801561099457600080fd5b50610a09600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612086565b005b348015610a1757600080fd5b50610a3a600480360381019080803560001916906020019092919050505061241b565b604051808215151515815260200191505060405180910390f35b348015610a6057600080fd5b50610a6961243b565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a9157600080fd5b50610a9a612452565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ada578082015181840152602081019050610abf565b50505050905090810190601f168015610b075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610b9b57600080fd5b610ba88686868686610d6d565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610bdf57600080fd5b60066000826000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610c5157600080fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b6000610cd98686868686610d6d565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610d1057600080fd5b610d198161248b565b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610d5a868686865a6126e0565b1515610d6557600080fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610f0e5780518252602082019150602081019050602083039250610ee9565b6001836020036101000a038019825116818451168082178552505050505050905001836002811115610f3c57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561109157600080fd5b61109e858585855a6126e0565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110e257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111365750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561114157600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111c557600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561135f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561138557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561140757600080fd5b8060ff166001600354031015151561141e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156114b757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff1614151561164e5761164d81611b1c565b5b505050565b600181565b61166284846127dd565b61166c8282612a6e565b50505050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6060806000806003546040519080825280602002602001820160405280156116d85781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156118335780838381518110151561178857fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611743565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561198957600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118e4565b826040519080825280602002602001820160405280156119b85781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611b1357818184815181101515611a6857fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611a23565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b5657600080fd5b6003548160ff1611151515611b6a57600080fd5b60018160ff1610151515611b7d57600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bd557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611c295750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611c3457600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611cb857600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611e4f57611e4e81611b1c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e8d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611f2657600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120c057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156121145750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561211f57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121a357600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561223c57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600080925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156126b95760066000856000191660001916815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806125cc5750805b1561265257801561264957600060066000866000191660001916815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506124f7565b600460009054906101000a900460ff1660ff1683101515156126da57600080fd5b50505050565b600080600060028111156126f057fe5b8460028111156126fc57fe5b14156127155761270e87878786612bad565b91506127d3565b6001600281111561272257fe5b84600281111561272e57fe5b14156127465761273f878685612bc6565b91506127d2565b61274f85612bdd565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff1614151561280257600080fd5b84518460ff161115151561281557600080fd5b60018460ff161015151561282857600080fd5b60019250600091505b84518210156129c557848281518110151561284857fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156128a85750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156128b357600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561293757600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612831565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612af357600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612ba957612b9d82825a612bc6565b1515612ba857600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820aa4f2f1bee5ca42e38a155540ac82e19af0bc412962c5bff72447a23481d2d090029", + "sourceMap": "272:3870:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;272:3870:3;;;;;;;", + "deployedSourceMap": "272:3870:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:695;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1175:695:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2312:542;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2312:542:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3829:311;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3829:311:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;682:63:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;682:63:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052: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;5052: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423: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;4423:738:6;;;;;;;;;;;;;;;;;4398:318:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;536:43:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;536:43:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:695;1560:23;1476:1;1454:6;:18;1461:10;1454:18;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;1446:32;;;;;;;;1586:53;1605:2;1609:5;1616:4;1622:9;1633:5;1586:18;:53::i;:::-;1560:79;;1658:10;:27;1669:15;1658:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1657:28;1649:37;;;;;;;;1767:10;:27;1778:15;1767:27;;;;;;;;;;;;;;;;;:39;1795:10;1767:39;;;;;;;;;;;;;;;;;;;;;;;;;1766:40;1758:49;;;;;;;;1859:4;1817:10;:27;1828:15;1817:27;;;;;;;;;;;;;;;;;:39;1845:10;1817:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;1175:695;;;;;;:::o;2312:542::-;2506:23;2532:53;2551:2;2555:5;2562:4;2568:9;2579:5;2532:18;:53::i;:::-;2506:79;;2604:10;:27;2615:15;2604:27;;;;;;;;;;;;;;;;;;;;;;;;;;;2603:28;2595:37;;;;;;;;2642:43;2669:15;2642:26;:43::i;:::-;2778:4;2748:10;:27;2759:15;2748:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;2800:46;2808:2;2812:5;2819:4;2825:9;2836;2800:7;:46::i;:::-;2792:55;;;;;;;;2312:542;;;;;;:::o;3829:311::-;4032:7;4077:4;4072:10;;4089:1;4084:7;;4093:4;4099:2;4103:5;4110:4;4116:9;4127:5;4062:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;4062:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4055:78;;3829:311;;;;;;;:::o;4841:129:7:-;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:6:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:6;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;626:208:4:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;499:55:6:-;550:3;499:55;:::o;2776:573:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:7;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::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;682:63:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5052:458:7:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168: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;5168:25:7;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;336:56:3:-;;;;;;;;;;;;;;;;;;;;:::o;4423:738:6:-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807: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;4807:26:6;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:7;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:7;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;1887:299:6:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:6;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:7;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;536:43:3:-;;;;;;;;;;;;;;;;;;;;;;:::o;4722:113:7:-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;398:40:3:-;;;;;;;;;;;;;;;;;;;;:::o;2860:691::-;2952:21;3029:20;3139:19;2976:1;2952:25;;3052:6;:23;337:3:7;3052:23:3;;;;;;;;;;;;;;;;;;;;;;;;;3029:46;;3085:415;337:3:7;3092:31:3;;:12;:31;;;;3085:415;;;3161:10;:27;3172:15;3161:27;;;;;;;;;;;;;;;;;:41;3189:12;3161:41;;;;;;;;;;;;;;;;;;;;;;;;;3139:63;;3235:10;3219:26;;:12;:26;;;:44;;;;3249:14;3219:44;3216:225;;;3287:14;3283:110;;;3369:5;3325:10;:27;3336:15;3325:27;;;;;;;;;;;;;;;;;:41;3353:12;3325:41;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;3283:110;3410:16;;;;;;;3216:225;3469:6;:20;3476:12;3469:20;;;;;;;;;;;;;;;;;;;;;;;;;3454:35;;3085:415;;;3534:9;;;;;;;;;;;3517:26;;:13;:26;;3509:35;;;;;;;;2860:691;;;;:::o;2905:548:6:-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:7:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:6:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", + "source": "pragma solidity 0.4.23;\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 => bool) public isExecuted;\n\n // isApproved mapping allows to check if a transaction (by hash) was confirmed by an owner.\n mapping (bytes32 => mapping(address => bool)) 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);\n // It should not be possible to confirm an executed transaction\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n // It is only possible to confirm a transaction once.\n require(!isApproved[transactionHash][msg.sender]);\n isApproved[transactionHash][msg.sender] = true;\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]);\n checkAndClearConfirmations(transactionHash);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(execute(to, value, data, operation, gasleft()));\n }\n\n function checkAndClearConfirmations(bytes32 transactionHash)\n internal\n {\n uint256 confirmations = 0;\n // Validate threshold is reached.\n address currentOwner = owners[SENTINEL_OWNERS];\n while (currentOwner != SENTINEL_OWNERS) {\n bool ownerConfirmed = isApproved[transactionHash][currentOwner];\n if(currentOwner == msg.sender || ownerConfirmed) {\n if (ownerConfirmed) {\n isApproved[transactionHash][currentOwner] = false;\n }\n confirmations ++;\n }\n currentOwner = owners[currentOwner];\n }\n require(confirmations >= threshold);\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(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": [ - 753 + 554 ] }, - "id": 754, + "id": 555, "nodeType": "SourceUnit", "nodes": [ { - "id": 532, + "id": 326, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:5" + "src": "0:23:3" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 533, + "id": 327, "nodeType": "ImportDirective", - "scope": 754, - "sourceUnit": 64, - "src": "24:26:5", + "scope": 555, + "sourceUnit": 40, + "src": "24:26:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 534, + "id": 328, "nodeType": "ImportDirective", - "scope": 754, - "sourceUnit": 780, - "src": "51:26:5", + "scope": 555, + "sourceUnit": 581, + "src": "51:26:3", "symbolAliases": [], "unitAlias": "" }, @@ -535,68 +506,68 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 535, + "id": 329, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 779, - "src": "306:10:5", + "referencedDeclaration": 580, + "src": "306:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$779", + "typeIdentifier": "t_contract$_MasterCopy_$580", "typeString": "contract MasterCopy" } }, - "id": 536, + "id": 330, "nodeType": "InheritanceSpecifier", - "src": "306:10:5" + "src": "306:10:3" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 537, + "id": 331, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 63, - "src": "318:10:5", + "referencedDeclaration": 39, + "src": "318:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$63", + "typeIdentifier": "t_contract$_GnosisSafe_$39", "typeString": "contract GnosisSafe" } }, - "id": 538, + "id": 332, "nodeType": "InheritanceSpecifier", - "src": "318:10:5" + "src": "318:10:3" } ], "contractDependencies": [ - 63, - 779, - 1142, - 1438, - 1559 + 39, + 580, + 971, + 1343, + 1359 ], "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": 753, + "id": 554, "linearizedBaseContracts": [ - 753, - 63, - 1438, - 1142, - 779, - 1559 + 554, + 39, + 1343, + 971, + 580, + 1359 ], "name": "GnosisSafeTeamEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 541, + "id": 335, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 753, - "src": "336:56:5", + "scope": 554, + "src": "336:56:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -604,10 +575,10 @@ "typeString": "string" }, "typeName": { - "id": 539, + "id": 333, "name": "string", "nodeType": "ElementaryTypeName", - "src": "336:6:5", + "src": "336:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -616,14 +587,14 @@ "value": { "argumentTypes": null, "hexValue": "476e6f7369732053616665205465616d2045646974696f6e", - "id": 540, + "id": 334, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "366:26:5", + "src": "366:26:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_69b1cb372bb47730ba653a0e87363aa6de8337d13ed5852e6fe3ba4e2004a81e", @@ -635,11 +606,11 @@ }, { "constant": true, - "id": 544, + "id": 338, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 753, - "src": "398:40:5", + "scope": 554, + "src": "398:40:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -647,10 +618,10 @@ "typeString": "string" }, "typeName": { - "id": 542, + "id": 336, "name": "string", "nodeType": "ElementaryTypeName", - "src": "398:6:5", + "src": "398:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -659,14 +630,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 543, + "id": 337, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "431:7:5", + "src": "431:7:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -678,11 +649,11 @@ }, { "constant": false, - "id": 548, + "id": 342, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 753, - "src": "536:43:5", + "scope": 554, + "src": "536:43:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -690,28 +661,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 547, + "id": 341, "keyType": { - "id": 545, + "id": 339, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "545:7:5", + "src": "545:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "536:25:5", + "src": "536:25:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 546, + "id": 340, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "556:4:5", + "src": "556:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -723,11 +694,11 @@ }, { "constant": false, - "id": 554, - "name": "isConfirmed", + "id": 348, + "name": "isApproved", "nodeType": "VariableDeclaration", - "scope": 753, - "src": "683:64:5", + "scope": 554, + "src": "682:63:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -735,46 +706,46 @@ "typeString": "mapping(bytes32 => mapping(address => bool))" }, "typeName": { - "id": 553, + "id": 347, "keyType": { - "id": 549, + "id": 343, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "692:7:5", + "src": "691:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "683:45:5", + "src": "682:45:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" }, "valueType": { - "id": 552, + "id": 346, "keyType": { - "id": 550, + "id": 344, "name": "address", "nodeType": "ElementaryTypeName", - "src": "711:7:5", + "src": "710:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "703:24:5", + "src": "702:24:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 551, + "id": 345, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "722:4:5", + "src": "721:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -787,9 +758,9 @@ }, { "body": { - "id": 603, + "id": 406, "nodeType": "Block", - "src": "1205:383:5", + "src": "1366:504:3", "statements": [ { "expression": { @@ -797,329 +768,47 @@ "arguments": [ { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 568, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "1293:7:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 571, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 569, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "1301:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1301:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1293:19:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 567, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "1285:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 572, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1285:28:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 573, - "nodeType": "ExpressionStatement", - "src": "1285:28:5" - }, - { - "assignments": [ - 575 - ], - "declarations": [ - { - "constant": false, - "id": 575, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 604, - "src": "1323:23:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 574, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1323:7:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 583, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 577, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "1368:2:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 578, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 558, - "src": "1372:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 579, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 560, - "src": "1379:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 580, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 562, - "src": "1385:9:5", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 581, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 564, - "src": "1396:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { + "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 576, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 752, - "src": "1349:18:5", - "typeDescriptions": { - "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": 582, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1349:53:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1323:79:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 591, + "id": 367, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1482:41:5", - "subExpression": { + "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 585, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 554, - "src": "1483:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 587, - "indexExpression": { - "argumentTypes": null, - "id": 586, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 575, - "src": "1495:15:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1483:28:5", + "id": 362, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "1454:6:3", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" } }, - "id": 590, + "id": 365, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 588, + "id": 363, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "1512:3:5", + "referencedDeclaration": 2396, + "src": "1461:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 589, + "id": 364, "isConstant": false, "isLValue": false, "isPure": false, @@ -1127,7 +816,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1512:10:5", + "src": "1461:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1138,12 +827,33 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1483:40:5", + "src": "1454:18:3", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 366, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1476:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1454:23:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1157,21 +867,21 @@ "typeString": "bool" } ], - "id": 584, + "id": 361, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1474:7:5", + "referencedDeclaration": 2399, + "src": "1446:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 592, + "id": 368, "isConstant": false, "isLValue": false, "isPure": false, @@ -1179,317 +889,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1474:50:5", + "src": "1446:32:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 593, + "id": 369, "nodeType": "ExpressionStatement", - "src": "1474:50:5" + "src": "1446:32:3" }, - { - "expression": { - "argumentTypes": null, - "id": 601, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 594, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 554, - "src": "1534:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 598, - "indexExpression": { - "argumentTypes": null, - "id": 595, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 575, - "src": "1546:15:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1534:28:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 599, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 596, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "1563:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 597, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1563:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1534:40:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 600, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1577:4:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "1534:47:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 602, - "nodeType": "ExpressionStatement", - "src": "1534:47:5" - } - ] - }, - "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.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.", - "id": 604, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "confirmTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 565, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 556, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 604, - "src": "1106:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 555, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1106:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 558, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 604, - "src": "1118:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 557, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1118:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 560, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 604, - "src": "1133:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 559, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1133:5:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 562, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 604, - "src": "1145:24:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - "typeName": { - "contractScope": null, - "id": 561, - "name": "Enum.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "1145:14:5", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 564, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 604, - "src": "1171:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 563, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1171:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1105:80:5" - }, - "payable": false, - "returnParameters": { - "id": 566, - "nodeType": "ParameterList", - "parameters": [], - "src": "1205:0:5" - }, - "scope": 753, - "src": "1078:510:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 655, - "nodeType": "Block", - "src": "2148:358:5", - "statements": [ { "assignments": [ - 618 + 371 ], "declarations": [ { "constant": false, - "id": 618, + "id": 371, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 656, - "src": "2158:23:5", + "scope": 407, + "src": "1560:23:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1497,10 +918,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 617, + "id": 370, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2158:7:5", + "src": "1560:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1510,18 +931,18 @@ "visibility": "internal" } ], - "id": 626, + "id": 379, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 620, + "id": 373, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 606, - "src": "2203:2:5", + "referencedDeclaration": 350, + "src": "1605:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1529,12 +950,12 @@ }, { "argumentTypes": null, - "id": 621, + "id": 374, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 608, - "src": "2207:5:5", + "referencedDeclaration": 352, + "src": "1609:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1542,12 +963,12 @@ }, { "argumentTypes": null, - "id": 622, + "id": 375, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 610, - "src": "2214:4:5", + "referencedDeclaration": 354, + "src": "1616:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1555,25 +976,25 @@ }, { "argumentTypes": null, - "id": 623, + "id": 376, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 612, - "src": "2220:9:5", + "referencedDeclaration": 356, + "src": "1622:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 624, + "id": 377, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 614, - "src": "2231:5:5", + "referencedDeclaration": 358, + "src": "1633:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1595,7 +1016,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { @@ -1603,18 +1024,18 @@ "typeString": "uint256" } ], - "id": 619, + "id": 372, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 752, - "src": "2184:18:5", + "referencedDeclaration": 553, + "src": "1586:18:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 625, + "id": 378, "isConstant": false, "isLValue": false, "isPure": false, @@ -1622,14 +1043,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2184:53:5", + "src": "1586:53:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2158:79:5" + "src": "1560:79:3" }, { "expression": { @@ -1637,7 +1058,7 @@ "arguments": [ { "argumentTypes": null, - "id": 631, + "id": 384, "isConstant": false, "isLValue": false, "isPure": false, @@ -1645,31 +1066,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2255:28:5", + "src": "1657:28:3", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 628, + "id": 381, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 548, - "src": "2256:10:5", + "referencedDeclaration": 342, + "src": "1658:10:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 630, + "id": 383, "indexExpression": { "argumentTypes": null, - "id": 629, + "id": 382, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 618, - "src": "2267:15:5", + "referencedDeclaration": 371, + "src": "1669:15:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1680,7 +1101,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2256:27:5", + "src": "1658:27:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1699,21 +1120,21 @@ "typeString": "bool" } ], - "id": 627, + "id": 380, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2247:7:5", + "referencedDeclaration": 2399, + "src": "1649:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 632, + "id": 385, "isConstant": false, "isLValue": false, "isPure": false, @@ -1721,15 +1142,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2247:37:5", + "src": "1649:37:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 633, + "id": 386, "nodeType": "ExpressionStatement", - "src": "2247:37:5" + "src": "1649:37:3" }, { "expression": { @@ -1737,12 +1158,697 @@ "arguments": [ { "argumentTypes": null, - "id": 635, + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1766:40:3", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 388, + "name": "isApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 348, + "src": "1767:10:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 390, + "indexExpression": { + "argumentTypes": null, + "id": 389, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 371, + "src": "1778:15:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1767:27:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 393, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 391, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2396, + "src": "1795:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1795:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1767:39:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 387, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "1758:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1758:49:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 396, + "nodeType": "ExpressionStatement", + "src": "1758:49:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 397, + "name": "isApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 348, + "src": "1817:10:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 401, + "indexExpression": { + "argumentTypes": null, + "id": 398, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 371, + "src": "1828:15:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1817:27:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 402, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 399, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2396, + "src": "1845:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1845:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1817:39:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 403, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1859:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1817:46:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 405, + "nodeType": "ExpressionStatement", + "src": "1817:46:3" + } + ] + }, + "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": 407, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approveTransactionWithParameters", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 359, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 350, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 407, + "src": "1226:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 349, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1226:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 352, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 407, + "src": "1247:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 351, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1247:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 354, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 407, + "src": "1271:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 353, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1271:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 356, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 407, + "src": "1292:24:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 355, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5, + "src": "1292:14:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 358, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 407, + "src": "1327:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 357, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1327:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1216:130:3" + }, + "payable": false, + "returnParameters": { + "id": 360, + "nodeType": "ParameterList", + "parameters": [], + "src": "1366:0:3" + }, + "scope": 554, + "src": "1175:695:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 458, + "nodeType": "Block", + "src": "2496:358:3", + "statements": [ + { + "assignments": [ + 421 + ], + "declarations": [ + { + "constant": false, + "id": 421, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "2506:23:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 420, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2506:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 429, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 423, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 409, + "src": "2551:2:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 424, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 411, + "src": "2555:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 425, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 413, + "src": "2562:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 426, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 415, + "src": "2568:9:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 427, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 417, + "src": "2579:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 422, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "2532:18:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" + } + }, + "id": 428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2532:53:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2506:79:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2603:28:3", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 431, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 342, + "src": "2604:10:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 433, + "indexExpression": { + "argumentTypes": null, + "id": 432, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 421, + "src": "2615:15:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2604:27:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 430, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "2595:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2595:37:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 436, + "nodeType": "ExpressionStatement", + "src": "2595:37:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 438, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 618, - "src": "2321:15:5", + "referencedDeclaration": 421, + "src": "2669:15:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1756,18 +1862,18 @@ "typeString": "bytes32" } ], - "id": 634, + "id": 437, "name": "checkAndClearConfirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 721, - "src": "2294:26:5", + "referencedDeclaration": 522, + "src": "2642:26:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", "typeString": "function (bytes32)" } }, - "id": 636, + "id": 439, "isConstant": false, "isLValue": false, "isPure": false, @@ -1775,20 +1881,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2294:43:5", + "src": "2642:43:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 637, + "id": 440, "nodeType": "ExpressionStatement", - "src": "2294:43:5" + "src": "2642:43:3" }, { "expression": { "argumentTypes": null, - "id": 642, + "id": 445, "isConstant": false, "isLValue": false, "isPure": false, @@ -1797,26 +1903,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 638, + "id": 441, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 548, - "src": "2400:10:5", + "referencedDeclaration": 342, + "src": "2748:10:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 640, + "id": 443, "indexExpression": { "argumentTypes": null, - "id": 639, + "id": 442, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 618, - "src": "2411:15:5", + "referencedDeclaration": 421, + "src": "2759:15:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1827,7 +1933,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2400:27:5", + "src": "2748:27:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1838,14 +1944,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 641, + "id": 444, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2430:4:5", + "src": "2778:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1853,15 +1959,15 @@ }, "value": "true" }, - "src": "2400:34:5", + "src": "2748:34:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 643, + "id": 446, "nodeType": "ExpressionStatement", - "src": "2400:34:5" + "src": "2748:34:3" }, { "expression": { @@ -1872,12 +1978,12 @@ "arguments": [ { "argumentTypes": null, - "id": 646, + "id": 449, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 606, - "src": "2460:2:5", + "referencedDeclaration": 409, + "src": "2808:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1885,12 +1991,12 @@ }, { "argumentTypes": null, - "id": 647, + "id": 450, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 608, - "src": "2464:5:5", + "referencedDeclaration": 411, + "src": "2812:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1898,12 +2004,12 @@ }, { "argumentTypes": null, - "id": 648, + "id": 451, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 610, - "src": "2471:4:5", + "referencedDeclaration": 413, + "src": "2819:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1911,14 +2017,14 @@ }, { "argumentTypes": null, - "id": 649, + "id": 452, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 612, - "src": "2477:9:5", + "referencedDeclaration": 415, + "src": "2825:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -1927,18 +2033,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 650, + "id": 453, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "2488:7:5", + "referencedDeclaration": 2389, + "src": "2836:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 651, + "id": 454, "isConstant": false, "isLValue": false, "isPure": false, @@ -1946,7 +2052,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2488:9:5", + "src": "2836:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1968,7 +2074,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { @@ -1976,18 +2082,18 @@ "typeString": "uint256" } ], - "id": 645, + "id": 448, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1095, - "src": "2452:7:5", + "referencedDeclaration": 860, + "src": "2800:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 652, + "id": 455, "isConstant": false, "isLValue": false, "isPure": false, @@ -1995,7 +2101,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2452:46:5", + "src": "2800:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2009,21 +2115,21 @@ "typeString": "bool" } ], - "id": 644, + "id": 447, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2444:7:5", + "referencedDeclaration": 2399, + "src": "2792:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 653, + "id": 456, "isConstant": false, "isLValue": false, "isPure": false, @@ -2031,37 +2137,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2444:55:5", + "src": "2792:55:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 654, + "id": 457, "nodeType": "ExpressionStatement", - "src": "2444:55:5" + "src": "2792:55:3" } ] }, - "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.", - "id": 656, + "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": 459, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "executeTransaction", + "name": "execTransactionIfApproved", "nodeType": "FunctionDefinition", "parameters": { - "id": 615, + "id": 418, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 606, + "id": 409, "name": "to", "nodeType": "VariableDeclaration", - "scope": 656, - "src": "2008:10:5", + "scope": 459, + "src": "2356:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2069,10 +2175,10 @@ "typeString": "address" }, "typeName": { - "id": 605, + "id": 408, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2008:7:5", + "src": "2356:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2083,11 +2189,11 @@ }, { "constant": false, - "id": 608, + "id": 411, "name": "value", "nodeType": "VariableDeclaration", - "scope": 656, - "src": "2029:13:5", + "scope": 459, + "src": "2377:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2095,10 +2201,10 @@ "typeString": "uint256" }, "typeName": { - "id": 607, + "id": 410, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2029:7:5", + "src": "2377:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2109,11 +2215,11 @@ }, { "constant": false, - "id": 610, + "id": 413, "name": "data", "nodeType": "VariableDeclaration", - "scope": 656, - "src": "2053:10:5", + "scope": 459, + "src": "2401:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2121,10 +2227,10 @@ "typeString": "bytes" }, "typeName": { - "id": 609, + "id": 412, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2053:5:5", + "src": "2401:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2135,26 +2241,26 @@ }, { "constant": false, - "id": 612, + "id": 415, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 656, - "src": "2074:24:5", + "scope": 459, + "src": "2422:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 611, + "id": 414, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "2074:14:5", + "referencedDeclaration": 5, + "src": "2422:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -2163,11 +2269,11 @@ }, { "constant": false, - "id": 614, + "id": 417, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 656, - "src": "2109:13:5", + "scope": 459, + "src": "2457:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2175,10 +2281,10 @@ "typeString": "uint256" }, "typeName": { - "id": 613, + "id": 416, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2109:7:5", + "src": "2457:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2188,39 +2294,39 @@ "visibility": "internal" } ], - "src": "1998:130:5" + "src": "2346:130:3" }, "payable": false, "returnParameters": { - "id": 616, + "id": 419, "nodeType": "ParameterList", "parameters": [], - "src": "2148:0:5" + "src": "2496:0:3" }, - "scope": 753, - "src": "1971:535:5", + "scope": 554, + "src": "2312:542:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 720, + "id": 521, "nodeType": "Block", - "src": "2594:528:5", + "src": "2942:609:3", "statements": [ { "assignments": [ - 662 + 465 ], "declarations": [ { "constant": false, - "id": 662, + "id": 465, "name": "confirmations", "nodeType": "VariableDeclaration", - "scope": 721, - "src": "2604:21:5", + "scope": 522, + "src": "2952:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2228,10 +2334,10 @@ "typeString": "uint256" }, "typeName": { - "id": 661, + "id": 464, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2604:7:5", + "src": "2952:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2241,18 +2347,18 @@ "visibility": "internal" } ], - "id": 664, + "id": 467, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 663, + "id": 466, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2628:1:5", + "src": "2976:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2261,102 +2367,102 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "2604:25:5" + "src": "2952:25:3" + }, + { + "assignments": [ + 469 + ], + "declarations": [ + { + "constant": false, + "id": 469, + "name": "currentOwner", + "nodeType": "VariableDeclaration", + "scope": 522, + "src": "3029:20:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 468, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3029:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 473, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 470, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "3052:6:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 472, + "indexExpression": { + "argumentTypes": null, + "id": 471, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "3059:15:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3052:23:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3029:46:3" }, { "body": { - "id": 712, + "id": 513, "nodeType": "Block", - "src": "2725:346:5", + "src": "3125:375:3", "statements": [ { "assignments": [ - 677 + 478 ], "declarations": [ { "constant": false, - "id": 677, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 721, - "src": "2739:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 676, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2739:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 681, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 678, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "2755:6:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 680, - "indexExpression": { - "argumentTypes": null, - "id": 679, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 666, - "src": "2762:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2755:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2739:25:5" - }, - { - "assignments": [ - 683 - ], - "declarations": [ - { - "constant": false, - "id": 683, + "id": 478, "name": "ownerConfirmed", "nodeType": "VariableDeclaration", - "scope": 721, - "src": "2778:19:5", + "scope": 522, + "src": "3139:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2364,10 +2470,10 @@ "typeString": "bool" }, "typeName": { - "id": 682, + "id": 477, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2778:4:5", + "src": "3139:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2377,33 +2483,33 @@ "visibility": "internal" } ], - "id": 689, + "id": 484, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 684, - "name": "isConfirmed", + "id": 479, + "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 554, - "src": "2800:11:5", + "referencedDeclaration": 348, + "src": "3161:10:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 686, + "id": 481, "indexExpression": { "argumentTypes": null, - "id": 685, + "id": 480, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 658, - "src": "2812:15:5", + "referencedDeclaration": 461, + "src": "3172:15:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2414,21 +2520,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2800:28:5", + "src": "3161:27:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 688, + "id": 483, "indexExpression": { "argumentTypes": null, - "id": 687, - "name": "owner", + "id": 482, + "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "2829:5:5", + "referencedDeclaration": 469, + "src": "3189:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2439,14 +2545,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2800:35:5", + "src": "3161:41:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "2778:57:5" + "src": "3139:63:3" }, { "condition": { @@ -2455,7 +2561,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 695, + "id": 490, "isConstant": false, "isLValue": false, "isPure": false, @@ -2466,19 +2572,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 693, + "id": 488, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 690, - "name": "owner", + "id": 485, + "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "2852:5:5", + "referencedDeclaration": 469, + "src": "3219:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2490,18 +2596,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 691, + "id": 486, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "2861:3:5", + "referencedDeclaration": 2396, + "src": "3235:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 692, + "id": 487, "isConstant": false, "isLValue": false, "isPure": false, @@ -2509,13 +2615,13 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2861:10:5", + "src": "3235:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2852:19:5", + "src": "3219:26:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2525,59 +2631,59 @@ "operator": "||", "rightExpression": { "argumentTypes": null, - "id": 694, + "id": 489, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 683, - "src": "2875:14:5", + "referencedDeclaration": 478, + "src": "3249:14:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2852:37:5", + "src": "3219:44:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 711, + "id": 506, "nodeType": "IfStatement", - "src": "2849:212:5", + "src": "3216:225:3", "trueBody": { - "id": 710, + "id": 505, "nodeType": "Block", - "src": "2891:170:5", + "src": "3265:176:3", "statements": [ { "condition": { "argumentTypes": null, - "id": 696, + "id": 491, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 683, - "src": "2913:14:5", + "referencedDeclaration": 478, + "src": "3287:14:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 706, + "id": 501, "nodeType": "IfStatement", - "src": "2909:104:5", + "src": "3283:110:3", "trueBody": { - "id": 705, + "id": 500, "nodeType": "Block", - "src": "2929:84:5", + "src": "3303:90:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 703, + "id": 498, "isConstant": false, "isLValue": false, "isPure": false, @@ -2588,26 +2694,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 697, - "name": "isConfirmed", + "id": 492, + "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 554, - "src": "2951:11:5", + "referencedDeclaration": 348, + "src": "3325:10:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 700, + "id": 495, "indexExpression": { "argumentTypes": null, - "id": 698, + "id": 493, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 658, - "src": "2963:15:5", + "referencedDeclaration": 461, + "src": "3336:15:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2618,21 +2724,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2951:28:5", + "src": "3325:27:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 701, + "id": 496, "indexExpression": { "argumentTypes": null, - "id": 699, - "name": "owner", + "id": 494, + "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "2980:5:5", + "referencedDeclaration": 469, + "src": "3353:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2643,7 +2749,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2951:35:5", + "src": "3325:41:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2654,14 +2760,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 702, + "id": 497, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2989:5:5", + "src": "3369:5:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2669,15 +2775,15 @@ }, "value": "false" }, - "src": "2951:43:5", + "src": "3325:49:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 704, + "id": 499, "nodeType": "ExpressionStatement", - "src": "2951:43:5" + "src": "3325:49:3" } ] } @@ -2685,7 +2791,7 @@ { "expression": { "argumentTypes": null, - "id": 708, + "id": 503, "isConstant": false, "isLValue": false, "isPure": false, @@ -2693,15 +2799,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3030:16:5", + "src": "3410:16:3", "subExpression": { "argumentTypes": null, - "id": 707, + "id": 502, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 662, - "src": "3030:13:5", + "referencedDeclaration": 465, + "src": "3410:13:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2712,167 +2818,136 @@ "typeString": "uint256" } }, - "id": 709, + "id": 504, "nodeType": "ExpressionStatement", - "src": "3030:16:5" + "src": "3410:16:3" } ] } + }, + { + "expression": { + "argumentTypes": null, + "id": 511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 507, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 469, + "src": "3454:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 508, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "3469:6:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 510, + "indexExpression": { + "argumentTypes": null, + "id": 509, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 469, + "src": "3476:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3469:20:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3454:35:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 512, + "nodeType": "ExpressionStatement", + "src": "3454:35:3" } ] }, "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 672, + "id": 476, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 669, - "name": "i", + "id": 474, + "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 666, - "src": "2701:1:5", + "referencedDeclaration": 469, + "src": "3092:12:3", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": "<", + "operator": "!=", "rightExpression": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 670, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "2705:6:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 671, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2705:13:5", + "id": 475, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "3108:15:3", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "src": "2701:17:5", + "src": "3092:31:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 713, - "initializationExpression": { - "assignments": [ - 666 - ], - "declarations": [ - { - "constant": false, - "id": 666, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 721, - "src": "2686:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 665, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2686:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 668, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 667, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2698:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2686:13:5" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 674, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2720:3:5", - "subExpression": { - "argumentTypes": null, - "id": 673, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 666, - "src": "2720:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 675, - "nodeType": "ExpressionStatement", - "src": "2720:3:5" - }, - "nodeType": "ForStatement", - "src": "2681:390:5" + "id": 514, + "nodeType": "WhileStatement", + "src": "3085:415:3" }, { "expression": { @@ -2884,19 +2959,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 717, + "id": 518, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 715, + "id": 516, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 662, - "src": "3088:13:5", + "referencedDeclaration": 465, + "src": "3517:13:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2906,20 +2981,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 716, + "id": 517, "name": "threshold", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "3105:9:5", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "3534:9:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3088:26:5", + "src": "3517:26:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2933,21 +3006,21 @@ "typeString": "bool" } ], - "id": 714, + "id": 515, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "3080:7:5", + "referencedDeclaration": 2399, + "src": "3509:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 718, + "id": 519, "isConstant": false, "isLValue": false, "isPure": false, @@ -2955,20 +3028,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3080:35:5", + "src": "3509:35:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 719, + "id": 520, "nodeType": "ExpressionStatement", - "src": "3080:35:5" + "src": "3509:35:3" } ] }, "documentation": null, - "id": 721, + "id": 522, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2976,16 +3049,16 @@ "name": "checkAndClearConfirmations", "nodeType": "FunctionDefinition", "parameters": { - "id": 659, + "id": 462, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 658, + "id": 461, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 721, - "src": "2548:23:5", + "scope": 522, + "src": "2896:23:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2993,10 +3066,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 657, + "id": 460, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2548:7:5", + "src": "2896:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3006,26 +3079,26 @@ "visibility": "internal" } ], - "src": "2547:25:5" + "src": "2895:25:3" }, "payable": false, "returnParameters": { - "id": 660, + "id": 463, "nodeType": "ParameterList", "parameters": [], - "src": "2594:0:5" + "src": "2942:0:3" }, - "scope": 753, - "src": "2512:610:5", + "scope": 554, + "src": "2860:691:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 751, + "id": 552, "nodeType": "Block", - "src": "3616:95:5", + "src": "4045:95:3", "statements": [ { "expression": { @@ -3037,14 +3110,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 738, + "id": 539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3648:4:5", + "src": "4077:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -3060,20 +3133,20 @@ "typeString": "int_const 25" } ], - "id": 737, + "id": 538, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3643:4:5", + "src": "4072:4:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 739, + "id": 540, "isConstant": false, "isLValue": false, "isPure": true, @@ -3081,7 +3154,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3643:10:5", + "src": "4072:10:3", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -3093,14 +3166,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 741, + "id": 542, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3660:1:5", + "src": "4089:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3116,20 +3189,20 @@ "typeString": "int_const 0" } ], - "id": 740, + "id": 541, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3655:4:5", + "src": "4084:4:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 742, + "id": 543, "isConstant": false, "isLValue": false, "isPure": true, @@ -3137,7 +3210,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3655:7:5", + "src": "4084:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -3145,25 +3218,25 @@ }, { "argumentTypes": null, - "id": 743, + "id": 544, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2500, - "src": "3664:4:5", + "referencedDeclaration": 2425, + "src": "4093:4:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$753", + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$554", "typeString": "contract GnosisSafeTeamEdition" } }, { "argumentTypes": null, - "id": 744, + "id": 545, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 723, - "src": "3670:2:5", + "referencedDeclaration": 524, + "src": "4099:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3171,12 +3244,12 @@ }, { "argumentTypes": null, - "id": 745, + "id": 546, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 725, - "src": "3674:5:5", + "referencedDeclaration": 526, + "src": "4103:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3184,12 +3257,12 @@ }, { "argumentTypes": null, - "id": 746, + "id": 547, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 727, - "src": "3681:4:5", + "referencedDeclaration": 528, + "src": "4110:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3197,25 +3270,25 @@ }, { "argumentTypes": null, - "id": 747, + "id": 548, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 729, - "src": "3687:9:5", + "referencedDeclaration": 530, + "src": "4116:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 748, + "id": 549, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 731, - "src": "3698:5:5", + "referencedDeclaration": 532, + "src": "4127:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3233,7 +3306,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$753", + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$554", "typeString": "contract GnosisSafeTeamEdition" }, { @@ -3249,7 +3322,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { @@ -3257,18 +3330,18 @@ "typeString": "uint256" } ], - "id": 736, + "id": 537, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2459, - "src": "3633:9:5", + "referencedDeclaration": 2390, + "src": "4062:9:3", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 749, + "id": 550, "isConstant": false, "isLValue": false, "isPure": false, @@ -3276,21 +3349,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3633:71:5", + "src": "4062:71:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 735, - "id": 750, + "functionReturnParameters": 536, + "id": 551, "nodeType": "Return", - "src": "3626:78:5" + "src": "4055:78: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 nonce Transaction nonce.\n @return Transaction hash.", - "id": 752, + "id": 553, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3298,16 +3371,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 732, + "id": 533, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 723, + "id": 524, "name": "to", "nodeType": "VariableDeclaration", - "scope": 752, - "src": "3437:10:5", + "scope": 553, + "src": "3866:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3315,10 +3388,10 @@ "typeString": "address" }, "typeName": { - "id": 722, + "id": 523, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3437:7:5", + "src": "3866:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3329,11 +3402,11 @@ }, { "constant": false, - "id": 725, + "id": 526, "name": "value", "nodeType": "VariableDeclaration", - "scope": 752, - "src": "3458:13:5", + "scope": 553, + "src": "3887:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3341,10 +3414,10 @@ "typeString": "uint256" }, "typeName": { - "id": 724, + "id": 525, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3458:7:5", + "src": "3887:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3355,11 +3428,11 @@ }, { "constant": false, - "id": 727, + "id": 528, "name": "data", "nodeType": "VariableDeclaration", - "scope": 752, - "src": "3482:10:5", + "scope": 553, + "src": "3911:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3367,10 +3440,10 @@ "typeString": "bytes" }, "typeName": { - "id": 726, + "id": 527, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3482:5:5", + "src": "3911:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3381,26 +3454,26 @@ }, { "constant": false, - "id": 729, + "id": 530, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 752, - "src": "3503:24:5", + "scope": 553, + "src": "3932:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 728, + "id": 529, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "3503:14:5", + "referencedDeclaration": 5, + "src": "3932:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -3409,11 +3482,11 @@ }, { "constant": false, - "id": 731, + "id": 532, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 752, - "src": "3538:13:5", + "scope": 553, + "src": "3967:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3421,10 +3494,10 @@ "typeString": "uint256" }, "typeName": { - "id": 730, + "id": 531, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3538:7:5", + "src": "3967:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3434,20 +3507,20 @@ "visibility": "internal" } ], - "src": "3427:130:5" + "src": "3856:130:3" }, "payable": false, "returnParameters": { - "id": 735, + "id": 536, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 734, + "id": 535, "name": "", "nodeType": "VariableDeclaration", - "scope": 752, - "src": "3603:7:5", + "scope": 553, + "src": "4032:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3455,10 +3528,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 733, + "id": 534, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3603:7:5", + "src": "4032:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3468,60 +3541,60 @@ "visibility": "internal" } ], - "src": "3602:9:5" + "src": "4031:9:3" }, - "scope": 753, - "src": "3400:311:5", + "scope": 554, + "src": "3829:311:3", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 754, - "src": "272:3441:5" + "scope": 555, + "src": "272:3870:3" } ], - "src": "0:3714:5" + "src": "0:4143:3" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", "exportedSymbols": { "GnosisSafeTeamEdition": [ - 753 + 554 ] }, - "id": 754, + "id": 555, "nodeType": "SourceUnit", "nodes": [ { - "id": 532, + "id": 326, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:5" + "src": "0:23:3" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 533, + "id": 327, "nodeType": "ImportDirective", - "scope": 754, - "sourceUnit": 64, - "src": "24:26:5", + "scope": 555, + "sourceUnit": 40, + "src": "24:26:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 534, + "id": 328, "nodeType": "ImportDirective", - "scope": 754, - "sourceUnit": 780, - "src": "51:26:5", + "scope": 555, + "sourceUnit": 581, + "src": "51:26:3", "symbolAliases": [], "unitAlias": "" }, @@ -3531,68 +3604,68 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 535, + "id": 329, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 779, - "src": "306:10:5", + "referencedDeclaration": 580, + "src": "306:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$779", + "typeIdentifier": "t_contract$_MasterCopy_$580", "typeString": "contract MasterCopy" } }, - "id": 536, + "id": 330, "nodeType": "InheritanceSpecifier", - "src": "306:10:5" + "src": "306:10:3" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 537, + "id": 331, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 63, - "src": "318:10:5", + "referencedDeclaration": 39, + "src": "318:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$63", + "typeIdentifier": "t_contract$_GnosisSafe_$39", "typeString": "contract GnosisSafe" } }, - "id": 538, + "id": 332, "nodeType": "InheritanceSpecifier", - "src": "318:10:5" + "src": "318:10:3" } ], "contractDependencies": [ - 63, - 779, - 1142, - 1438, - 1559 + 39, + 580, + 971, + 1343, + 1359 ], "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": 753, + "id": 554, "linearizedBaseContracts": [ - 753, - 63, - 1438, - 1142, - 779, - 1559 + 554, + 39, + 1343, + 971, + 580, + 1359 ], "name": "GnosisSafeTeamEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 541, + "id": 335, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 753, - "src": "336:56:5", + "scope": 554, + "src": "336:56:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3600,10 +3673,10 @@ "typeString": "string" }, "typeName": { - "id": 539, + "id": 333, "name": "string", "nodeType": "ElementaryTypeName", - "src": "336:6:5", + "src": "336:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3612,14 +3685,14 @@ "value": { "argumentTypes": null, "hexValue": "476e6f7369732053616665205465616d2045646974696f6e", - "id": 540, + "id": 334, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "366:26:5", + "src": "366:26:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_69b1cb372bb47730ba653a0e87363aa6de8337d13ed5852e6fe3ba4e2004a81e", @@ -3631,11 +3704,11 @@ }, { "constant": true, - "id": 544, + "id": 338, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 753, - "src": "398:40:5", + "scope": 554, + "src": "398:40:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3643,10 +3716,10 @@ "typeString": "string" }, "typeName": { - "id": 542, + "id": 336, "name": "string", "nodeType": "ElementaryTypeName", - "src": "398:6:5", + "src": "398:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3655,14 +3728,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 543, + "id": 337, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "431:7:5", + "src": "431:7:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -3674,11 +3747,11 @@ }, { "constant": false, - "id": 548, + "id": 342, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 753, - "src": "536:43:5", + "scope": 554, + "src": "536:43:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3686,28 +3759,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 547, + "id": 341, "keyType": { - "id": 545, + "id": 339, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "545:7:5", + "src": "545:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "536:25:5", + "src": "536:25:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 546, + "id": 340, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "556:4:5", + "src": "556:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3719,11 +3792,11 @@ }, { "constant": false, - "id": 554, - "name": "isConfirmed", + "id": 348, + "name": "isApproved", "nodeType": "VariableDeclaration", - "scope": 753, - "src": "683:64:5", + "scope": 554, + "src": "682:63:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3731,46 +3804,46 @@ "typeString": "mapping(bytes32 => mapping(address => bool))" }, "typeName": { - "id": 553, + "id": 347, "keyType": { - "id": 549, + "id": 343, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "692:7:5", + "src": "691:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "683:45:5", + "src": "682:45:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" }, "valueType": { - "id": 552, + "id": 346, "keyType": { - "id": 550, + "id": 344, "name": "address", "nodeType": "ElementaryTypeName", - "src": "711:7:5", + "src": "710:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "703:24:5", + "src": "702:24:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 551, + "id": 345, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "722:4:5", + "src": "721:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3783,9 +3856,9 @@ }, { "body": { - "id": 603, + "id": 406, "nodeType": "Block", - "src": "1205:383:5", + "src": "1366:504:3", "statements": [ { "expression": { @@ -3793,329 +3866,47 @@ "arguments": [ { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 568, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "1293:7:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 571, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 569, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "1301:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1301:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1293:19:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 567, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "1285:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 572, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1285:28:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 573, - "nodeType": "ExpressionStatement", - "src": "1285:28:5" - }, - { - "assignments": [ - 575 - ], - "declarations": [ - { - "constant": false, - "id": 575, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 604, - "src": "1323:23:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 574, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1323:7:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 583, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 577, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "1368:2:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 578, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 558, - "src": "1372:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 579, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 560, - "src": "1379:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 580, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 562, - "src": "1385:9:5", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 581, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 564, - "src": "1396:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { + "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 576, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 752, - "src": "1349:18:5", - "typeDescriptions": { - "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": 582, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1349:53:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1323:79:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 591, + "id": 367, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1482:41:5", - "subExpression": { + "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 585, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 554, - "src": "1483:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 587, - "indexExpression": { - "argumentTypes": null, - "id": 586, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 575, - "src": "1495:15:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1483:28:5", + "id": 362, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "1454:6:3", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" } }, - "id": 590, + "id": 365, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 588, + "id": 363, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "1512:3:5", + "referencedDeclaration": 2396, + "src": "1461:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 589, + "id": 364, "isConstant": false, "isLValue": false, "isPure": false, @@ -4123,7 +3914,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1512:10:5", + "src": "1461:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4134,12 +3925,33 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1483:40:5", + "src": "1454:18:3", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 366, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1476:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1454:23:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4153,21 +3965,21 @@ "typeString": "bool" } ], - "id": 584, + "id": 361, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1474:7:5", + "referencedDeclaration": 2399, + "src": "1446:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 592, + "id": 368, "isConstant": false, "isLValue": false, "isPure": false, @@ -4175,317 +3987,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1474:50:5", + "src": "1446:32:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 593, + "id": 369, "nodeType": "ExpressionStatement", - "src": "1474:50:5" + "src": "1446:32:3" }, - { - "expression": { - "argumentTypes": null, - "id": 601, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 594, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 554, - "src": "1534:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 598, - "indexExpression": { - "argumentTypes": null, - "id": 595, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 575, - "src": "1546:15:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1534:28:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 599, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 596, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "1563:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 597, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1563:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1534:40:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 600, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1577:4:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "1534:47:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 602, - "nodeType": "ExpressionStatement", - "src": "1534:47:5" - } - ] - }, - "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.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.", - "id": 604, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "confirmTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 565, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 556, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 604, - "src": "1106:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 555, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1106:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 558, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 604, - "src": "1118:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 557, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1118:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 560, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 604, - "src": "1133:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 559, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1133:5:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 562, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 604, - "src": "1145:24:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - "typeName": { - "contractScope": null, - "id": 561, - "name": "Enum.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "1145:14:5", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 564, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 604, - "src": "1171:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 563, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1171:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1105:80:5" - }, - "payable": false, - "returnParameters": { - "id": 566, - "nodeType": "ParameterList", - "parameters": [], - "src": "1205:0:5" - }, - "scope": 753, - "src": "1078:510:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 655, - "nodeType": "Block", - "src": "2148:358:5", - "statements": [ { "assignments": [ - 618 + 371 ], "declarations": [ { "constant": false, - "id": 618, + "id": 371, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 656, - "src": "2158:23:5", + "scope": 407, + "src": "1560:23:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4493,10 +4016,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 617, + "id": 370, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2158:7:5", + "src": "1560:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4506,18 +4029,18 @@ "visibility": "internal" } ], - "id": 626, + "id": 379, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 620, + "id": 373, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 606, - "src": "2203:2:5", + "referencedDeclaration": 350, + "src": "1605:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4525,12 +4048,12 @@ }, { "argumentTypes": null, - "id": 621, + "id": 374, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 608, - "src": "2207:5:5", + "referencedDeclaration": 352, + "src": "1609:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4538,12 +4061,12 @@ }, { "argumentTypes": null, - "id": 622, + "id": 375, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 610, - "src": "2214:4:5", + "referencedDeclaration": 354, + "src": "1616:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4551,25 +4074,25 @@ }, { "argumentTypes": null, - "id": 623, + "id": 376, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 612, - "src": "2220:9:5", + "referencedDeclaration": 356, + "src": "1622:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 624, + "id": 377, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 614, - "src": "2231:5:5", + "referencedDeclaration": 358, + "src": "1633:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4591,7 +4114,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { @@ -4599,18 +4122,18 @@ "typeString": "uint256" } ], - "id": 619, + "id": 372, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 752, - "src": "2184:18:5", + "referencedDeclaration": 553, + "src": "1586:18:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 625, + "id": 378, "isConstant": false, "isLValue": false, "isPure": false, @@ -4618,14 +4141,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2184:53:5", + "src": "1586:53:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2158:79:5" + "src": "1560:79:3" }, { "expression": { @@ -4633,7 +4156,7 @@ "arguments": [ { "argumentTypes": null, - "id": 631, + "id": 384, "isConstant": false, "isLValue": false, "isPure": false, @@ -4641,31 +4164,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2255:28:5", + "src": "1657:28:3", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 628, + "id": 381, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 548, - "src": "2256:10:5", + "referencedDeclaration": 342, + "src": "1658:10:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 630, + "id": 383, "indexExpression": { "argumentTypes": null, - "id": 629, + "id": 382, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 618, - "src": "2267:15:5", + "referencedDeclaration": 371, + "src": "1669:15:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4676,7 +4199,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2256:27:5", + "src": "1658:27:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4695,21 +4218,21 @@ "typeString": "bool" } ], - "id": 627, + "id": 380, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2247:7:5", + "referencedDeclaration": 2399, + "src": "1649:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 632, + "id": 385, "isConstant": false, "isLValue": false, "isPure": false, @@ -4717,15 +4240,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2247:37:5", + "src": "1649:37:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 633, + "id": 386, "nodeType": "ExpressionStatement", - "src": "2247:37:5" + "src": "1649:37:3" }, { "expression": { @@ -4733,12 +4256,697 @@ "arguments": [ { "argumentTypes": null, - "id": 635, + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1766:40:3", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 388, + "name": "isApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 348, + "src": "1767:10:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 390, + "indexExpression": { + "argumentTypes": null, + "id": 389, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 371, + "src": "1778:15:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1767:27:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 393, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 391, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2396, + "src": "1795:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1795:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1767:39:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 387, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "1758:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1758:49:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 396, + "nodeType": "ExpressionStatement", + "src": "1758:49:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 397, + "name": "isApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 348, + "src": "1817:10:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 401, + "indexExpression": { + "argumentTypes": null, + "id": 398, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 371, + "src": "1828:15:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1817:27:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 402, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 399, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2396, + "src": "1845:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1845:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1817:39:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 403, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1859:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1817:46:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 405, + "nodeType": "ExpressionStatement", + "src": "1817:46:3" + } + ] + }, + "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": 407, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approveTransactionWithParameters", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 359, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 350, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 407, + "src": "1226:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 349, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1226:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 352, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 407, + "src": "1247:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 351, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1247:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 354, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 407, + "src": "1271:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 353, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1271:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 356, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 407, + "src": "1292:24:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 355, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5, + "src": "1292:14:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 358, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 407, + "src": "1327:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 357, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1327:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1216:130:3" + }, + "payable": false, + "returnParameters": { + "id": 360, + "nodeType": "ParameterList", + "parameters": [], + "src": "1366:0:3" + }, + "scope": 554, + "src": "1175:695:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 458, + "nodeType": "Block", + "src": "2496:358:3", + "statements": [ + { + "assignments": [ + 421 + ], + "declarations": [ + { + "constant": false, + "id": 421, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "2506:23:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 420, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2506:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 429, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 423, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 409, + "src": "2551:2:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 424, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 411, + "src": "2555:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 425, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 413, + "src": "2562:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 426, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 415, + "src": "2568:9:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 427, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 417, + "src": "2579:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 422, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "2532:18:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" + } + }, + "id": 428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2532:53:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2506:79:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2603:28:3", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 431, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 342, + "src": "2604:10:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 433, + "indexExpression": { + "argumentTypes": null, + "id": 432, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 421, + "src": "2615:15:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2604:27:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 430, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "2595:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2595:37:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 436, + "nodeType": "ExpressionStatement", + "src": "2595:37:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 438, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 618, - "src": "2321:15:5", + "referencedDeclaration": 421, + "src": "2669:15:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4752,18 +4960,18 @@ "typeString": "bytes32" } ], - "id": 634, + "id": 437, "name": "checkAndClearConfirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 721, - "src": "2294:26:5", + "referencedDeclaration": 522, + "src": "2642:26:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", "typeString": "function (bytes32)" } }, - "id": 636, + "id": 439, "isConstant": false, "isLValue": false, "isPure": false, @@ -4771,20 +4979,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2294:43:5", + "src": "2642:43:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 637, + "id": 440, "nodeType": "ExpressionStatement", - "src": "2294:43:5" + "src": "2642:43:3" }, { "expression": { "argumentTypes": null, - "id": 642, + "id": 445, "isConstant": false, "isLValue": false, "isPure": false, @@ -4793,26 +5001,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 638, + "id": 441, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 548, - "src": "2400:10:5", + "referencedDeclaration": 342, + "src": "2748:10:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 640, + "id": 443, "indexExpression": { "argumentTypes": null, - "id": 639, + "id": 442, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 618, - "src": "2411:15:5", + "referencedDeclaration": 421, + "src": "2759:15:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4823,7 +5031,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2400:27:5", + "src": "2748:27:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4834,14 +5042,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 641, + "id": 444, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2430:4:5", + "src": "2778:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4849,15 +5057,15 @@ }, "value": "true" }, - "src": "2400:34:5", + "src": "2748:34:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 643, + "id": 446, "nodeType": "ExpressionStatement", - "src": "2400:34:5" + "src": "2748:34:3" }, { "expression": { @@ -4868,12 +5076,12 @@ "arguments": [ { "argumentTypes": null, - "id": 646, + "id": 449, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 606, - "src": "2460:2:5", + "referencedDeclaration": 409, + "src": "2808:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4881,12 +5089,12 @@ }, { "argumentTypes": null, - "id": 647, + "id": 450, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 608, - "src": "2464:5:5", + "referencedDeclaration": 411, + "src": "2812:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4894,12 +5102,12 @@ }, { "argumentTypes": null, - "id": 648, + "id": 451, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 610, - "src": "2471:4:5", + "referencedDeclaration": 413, + "src": "2819:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4907,14 +5115,14 @@ }, { "argumentTypes": null, - "id": 649, + "id": 452, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 612, - "src": "2477:9:5", + "referencedDeclaration": 415, + "src": "2825:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -4923,18 +5131,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 650, + "id": 453, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "2488:7:5", + "referencedDeclaration": 2389, + "src": "2836:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 651, + "id": 454, "isConstant": false, "isLValue": false, "isPure": false, @@ -4942,7 +5150,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2488:9:5", + "src": "2836:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4964,7 +5172,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { @@ -4972,18 +5180,18 @@ "typeString": "uint256" } ], - "id": 645, + "id": 448, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1095, - "src": "2452:7:5", + "referencedDeclaration": 860, + "src": "2800:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 652, + "id": 455, "isConstant": false, "isLValue": false, "isPure": false, @@ -4991,7 +5199,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2452:46:5", + "src": "2800:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5005,21 +5213,21 @@ "typeString": "bool" } ], - "id": 644, + "id": 447, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2444:7:5", + "referencedDeclaration": 2399, + "src": "2792:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 653, + "id": 456, "isConstant": false, "isLValue": false, "isPure": false, @@ -5027,37 +5235,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2444:55:5", + "src": "2792:55:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 654, + "id": 457, "nodeType": "ExpressionStatement", - "src": "2444:55:5" + "src": "2792:55:3" } ] }, - "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.", - "id": 656, + "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": 459, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "executeTransaction", + "name": "execTransactionIfApproved", "nodeType": "FunctionDefinition", "parameters": { - "id": 615, + "id": 418, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 606, + "id": 409, "name": "to", "nodeType": "VariableDeclaration", - "scope": 656, - "src": "2008:10:5", + "scope": 459, + "src": "2356:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5065,10 +5273,10 @@ "typeString": "address" }, "typeName": { - "id": 605, + "id": 408, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2008:7:5", + "src": "2356:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5079,11 +5287,11 @@ }, { "constant": false, - "id": 608, + "id": 411, "name": "value", "nodeType": "VariableDeclaration", - "scope": 656, - "src": "2029:13:5", + "scope": 459, + "src": "2377:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5091,10 +5299,10 @@ "typeString": "uint256" }, "typeName": { - "id": 607, + "id": 410, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2029:7:5", + "src": "2377:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5105,11 +5313,11 @@ }, { "constant": false, - "id": 610, + "id": 413, "name": "data", "nodeType": "VariableDeclaration", - "scope": 656, - "src": "2053:10:5", + "scope": 459, + "src": "2401:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5117,10 +5325,10 @@ "typeString": "bytes" }, "typeName": { - "id": 609, + "id": 412, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2053:5:5", + "src": "2401:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5131,26 +5339,26 @@ }, { "constant": false, - "id": 612, + "id": 415, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 656, - "src": "2074:24:5", + "scope": 459, + "src": "2422:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 611, + "id": 414, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "2074:14:5", + "referencedDeclaration": 5, + "src": "2422:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -5159,11 +5367,11 @@ }, { "constant": false, - "id": 614, + "id": 417, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 656, - "src": "2109:13:5", + "scope": 459, + "src": "2457:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5171,10 +5379,10 @@ "typeString": "uint256" }, "typeName": { - "id": 613, + "id": 416, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2109:7:5", + "src": "2457:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5184,39 +5392,39 @@ "visibility": "internal" } ], - "src": "1998:130:5" + "src": "2346:130:3" }, "payable": false, "returnParameters": { - "id": 616, + "id": 419, "nodeType": "ParameterList", "parameters": [], - "src": "2148:0:5" + "src": "2496:0:3" }, - "scope": 753, - "src": "1971:535:5", + "scope": 554, + "src": "2312:542:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 720, + "id": 521, "nodeType": "Block", - "src": "2594:528:5", + "src": "2942:609:3", "statements": [ { "assignments": [ - 662 + 465 ], "declarations": [ { "constant": false, - "id": 662, + "id": 465, "name": "confirmations", "nodeType": "VariableDeclaration", - "scope": 721, - "src": "2604:21:5", + "scope": 522, + "src": "2952:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5224,10 +5432,10 @@ "typeString": "uint256" }, "typeName": { - "id": 661, + "id": 464, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2604:7:5", + "src": "2952:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5237,18 +5445,18 @@ "visibility": "internal" } ], - "id": 664, + "id": 467, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 663, + "id": 466, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2628:1:5", + "src": "2976:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5257,102 +5465,102 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "2604:25:5" + "src": "2952:25:3" + }, + { + "assignments": [ + 469 + ], + "declarations": [ + { + "constant": false, + "id": 469, + "name": "currentOwner", + "nodeType": "VariableDeclaration", + "scope": 522, + "src": "3029:20:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 468, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3029:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 473, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 470, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "3052:6:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 472, + "indexExpression": { + "argumentTypes": null, + "id": 471, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "3059:15:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3052:23:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3029:46:3" }, { "body": { - "id": 712, + "id": 513, "nodeType": "Block", - "src": "2725:346:5", + "src": "3125:375:3", "statements": [ { "assignments": [ - 677 + 478 ], "declarations": [ { "constant": false, - "id": 677, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 721, - "src": "2739:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 676, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2739:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 681, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 678, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "2755:6:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 680, - "indexExpression": { - "argumentTypes": null, - "id": 679, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 666, - "src": "2762:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2755:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2739:25:5" - }, - { - "assignments": [ - 683 - ], - "declarations": [ - { - "constant": false, - "id": 683, + "id": 478, "name": "ownerConfirmed", "nodeType": "VariableDeclaration", - "scope": 721, - "src": "2778:19:5", + "scope": 522, + "src": "3139:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5360,10 +5568,10 @@ "typeString": "bool" }, "typeName": { - "id": 682, + "id": 477, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2778:4:5", + "src": "3139:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5373,33 +5581,33 @@ "visibility": "internal" } ], - "id": 689, + "id": 484, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 684, - "name": "isConfirmed", + "id": 479, + "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 554, - "src": "2800:11:5", + "referencedDeclaration": 348, + "src": "3161:10:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 686, + "id": 481, "indexExpression": { "argumentTypes": null, - "id": 685, + "id": 480, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 658, - "src": "2812:15:5", + "referencedDeclaration": 461, + "src": "3172:15:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5410,21 +5618,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2800:28:5", + "src": "3161:27:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 688, + "id": 483, "indexExpression": { "argumentTypes": null, - "id": 687, - "name": "owner", + "id": 482, + "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "2829:5:5", + "referencedDeclaration": 469, + "src": "3189:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5435,14 +5643,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2800:35:5", + "src": "3161:41:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "2778:57:5" + "src": "3139:63:3" }, { "condition": { @@ -5451,7 +5659,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 695, + "id": 490, "isConstant": false, "isLValue": false, "isPure": false, @@ -5462,19 +5670,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 693, + "id": 488, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 690, - "name": "owner", + "id": 485, + "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "2852:5:5", + "referencedDeclaration": 469, + "src": "3219:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5486,18 +5694,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 691, + "id": 486, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "2861:3:5", + "referencedDeclaration": 2396, + "src": "3235:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 692, + "id": 487, "isConstant": false, "isLValue": false, "isPure": false, @@ -5505,13 +5713,13 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2861:10:5", + "src": "3235:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2852:19:5", + "src": "3219:26:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5521,59 +5729,59 @@ "operator": "||", "rightExpression": { "argumentTypes": null, - "id": 694, + "id": 489, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 683, - "src": "2875:14:5", + "referencedDeclaration": 478, + "src": "3249:14:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2852:37:5", + "src": "3219:44:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 711, + "id": 506, "nodeType": "IfStatement", - "src": "2849:212:5", + "src": "3216:225:3", "trueBody": { - "id": 710, + "id": 505, "nodeType": "Block", - "src": "2891:170:5", + "src": "3265:176:3", "statements": [ { "condition": { "argumentTypes": null, - "id": 696, + "id": 491, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 683, - "src": "2913:14:5", + "referencedDeclaration": 478, + "src": "3287:14:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 706, + "id": 501, "nodeType": "IfStatement", - "src": "2909:104:5", + "src": "3283:110:3", "trueBody": { - "id": 705, + "id": 500, "nodeType": "Block", - "src": "2929:84:5", + "src": "3303:90:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 703, + "id": 498, "isConstant": false, "isLValue": false, "isPure": false, @@ -5584,26 +5792,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 697, - "name": "isConfirmed", + "id": 492, + "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 554, - "src": "2951:11:5", + "referencedDeclaration": 348, + "src": "3325:10:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 700, + "id": 495, "indexExpression": { "argumentTypes": null, - "id": 698, + "id": 493, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 658, - "src": "2963:15:5", + "referencedDeclaration": 461, + "src": "3336:15:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5614,21 +5822,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2951:28:5", + "src": "3325:27:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 701, + "id": 496, "indexExpression": { "argumentTypes": null, - "id": 699, - "name": "owner", + "id": 494, + "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "2980:5:5", + "referencedDeclaration": 469, + "src": "3353:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5639,7 +5847,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2951:35:5", + "src": "3325:41:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5650,14 +5858,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 702, + "id": 497, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2989:5:5", + "src": "3369:5:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5665,15 +5873,15 @@ }, "value": "false" }, - "src": "2951:43:5", + "src": "3325:49:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 704, + "id": 499, "nodeType": "ExpressionStatement", - "src": "2951:43:5" + "src": "3325:49:3" } ] } @@ -5681,7 +5889,7 @@ { "expression": { "argumentTypes": null, - "id": 708, + "id": 503, "isConstant": false, "isLValue": false, "isPure": false, @@ -5689,15 +5897,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3030:16:5", + "src": "3410:16:3", "subExpression": { "argumentTypes": null, - "id": 707, + "id": 502, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 662, - "src": "3030:13:5", + "referencedDeclaration": 465, + "src": "3410:13:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5708,167 +5916,136 @@ "typeString": "uint256" } }, - "id": 709, + "id": 504, "nodeType": "ExpressionStatement", - "src": "3030:16:5" + "src": "3410:16:3" } ] } + }, + { + "expression": { + "argumentTypes": null, + "id": 511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 507, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 469, + "src": "3454:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 508, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "3469:6:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 510, + "indexExpression": { + "argumentTypes": null, + "id": 509, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 469, + "src": "3476:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3469:20:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3454:35:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 512, + "nodeType": "ExpressionStatement", + "src": "3454:35:3" } ] }, "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 672, + "id": 476, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 669, - "name": "i", + "id": 474, + "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 666, - "src": "2701:1:5", + "referencedDeclaration": 469, + "src": "3092:12:3", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": "<", + "operator": "!=", "rightExpression": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 670, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "2705:6:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 671, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2705:13:5", + "id": 475, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "3108:15:3", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "src": "2701:17:5", + "src": "3092:31:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 713, - "initializationExpression": { - "assignments": [ - 666 - ], - "declarations": [ - { - "constant": false, - "id": 666, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 721, - "src": "2686:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 665, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2686:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 668, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 667, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2698:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2686:13:5" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 674, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2720:3:5", - "subExpression": { - "argumentTypes": null, - "id": 673, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 666, - "src": "2720:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 675, - "nodeType": "ExpressionStatement", - "src": "2720:3:5" - }, - "nodeType": "ForStatement", - "src": "2681:390:5" + "id": 514, + "nodeType": "WhileStatement", + "src": "3085:415:3" }, { "expression": { @@ -5880,19 +6057,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 717, + "id": 518, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 715, + "id": 516, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 662, - "src": "3088:13:5", + "referencedDeclaration": 465, + "src": "3517:13:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5902,20 +6079,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 716, + "id": 517, "name": "threshold", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "3105:9:5", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "3534:9:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3088:26:5", + "src": "3517:26:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5929,21 +6104,21 @@ "typeString": "bool" } ], - "id": 714, + "id": 515, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "3080:7:5", + "referencedDeclaration": 2399, + "src": "3509:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 718, + "id": 519, "isConstant": false, "isLValue": false, "isPure": false, @@ -5951,20 +6126,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3080:35:5", + "src": "3509:35:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 719, + "id": 520, "nodeType": "ExpressionStatement", - "src": "3080:35:5" + "src": "3509:35:3" } ] }, "documentation": null, - "id": 721, + "id": 522, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5972,16 +6147,16 @@ "name": "checkAndClearConfirmations", "nodeType": "FunctionDefinition", "parameters": { - "id": 659, + "id": 462, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 658, + "id": 461, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 721, - "src": "2548:23:5", + "scope": 522, + "src": "2896:23:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5989,10 +6164,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 657, + "id": 460, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2548:7:5", + "src": "2896:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6002,26 +6177,26 @@ "visibility": "internal" } ], - "src": "2547:25:5" + "src": "2895:25:3" }, "payable": false, "returnParameters": { - "id": 660, + "id": 463, "nodeType": "ParameterList", "parameters": [], - "src": "2594:0:5" + "src": "2942:0:3" }, - "scope": 753, - "src": "2512:610:5", + "scope": 554, + "src": "2860:691:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 751, + "id": 552, "nodeType": "Block", - "src": "3616:95:5", + "src": "4045:95:3", "statements": [ { "expression": { @@ -6033,14 +6208,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 738, + "id": 539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3648:4:5", + "src": "4077:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -6056,20 +6231,20 @@ "typeString": "int_const 25" } ], - "id": 737, + "id": 538, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3643:4:5", + "src": "4072:4:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 739, + "id": 540, "isConstant": false, "isLValue": false, "isPure": true, @@ -6077,7 +6252,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3643:10:5", + "src": "4072:10:3", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -6089,14 +6264,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 741, + "id": 542, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3660:1:5", + "src": "4089:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6112,20 +6287,20 @@ "typeString": "int_const 0" } ], - "id": 740, + "id": 541, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3655:4:5", + "src": "4084:4:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 742, + "id": 543, "isConstant": false, "isLValue": false, "isPure": true, @@ -6133,7 +6308,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3655:7:5", + "src": "4084:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -6141,25 +6316,25 @@ }, { "argumentTypes": null, - "id": 743, + "id": 544, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2500, - "src": "3664:4:5", + "referencedDeclaration": 2425, + "src": "4093:4:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$753", + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$554", "typeString": "contract GnosisSafeTeamEdition" } }, { "argumentTypes": null, - "id": 744, + "id": 545, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 723, - "src": "3670:2:5", + "referencedDeclaration": 524, + "src": "4099:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6167,12 +6342,12 @@ }, { "argumentTypes": null, - "id": 745, + "id": 546, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 725, - "src": "3674:5:5", + "referencedDeclaration": 526, + "src": "4103:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6180,12 +6355,12 @@ }, { "argumentTypes": null, - "id": 746, + "id": 547, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 727, - "src": "3681:4:5", + "referencedDeclaration": 528, + "src": "4110:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6193,25 +6368,25 @@ }, { "argumentTypes": null, - "id": 747, + "id": 548, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 729, - "src": "3687:9:5", + "referencedDeclaration": 530, + "src": "4116:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 748, + "id": 549, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 731, - "src": "3698:5:5", + "referencedDeclaration": 532, + "src": "4127:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6229,7 +6404,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$753", + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$554", "typeString": "contract GnosisSafeTeamEdition" }, { @@ -6245,7 +6420,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { @@ -6253,18 +6428,18 @@ "typeString": "uint256" } ], - "id": 736, + "id": 537, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2459, - "src": "3633:9:5", + "referencedDeclaration": 2390, + "src": "4062:9:3", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 749, + "id": 550, "isConstant": false, "isLValue": false, "isPure": false, @@ -6272,21 +6447,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3633:71:5", + "src": "4062:71:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 735, - "id": 750, + "functionReturnParameters": 536, + "id": 551, "nodeType": "Return", - "src": "3626:78:5" + "src": "4055:78: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 nonce Transaction nonce.\n @return Transaction hash.", - "id": 752, + "id": 553, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6294,16 +6469,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 732, + "id": 533, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 723, + "id": 524, "name": "to", "nodeType": "VariableDeclaration", - "scope": 752, - "src": "3437:10:5", + "scope": 553, + "src": "3866:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6311,10 +6486,10 @@ "typeString": "address" }, "typeName": { - "id": 722, + "id": 523, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3437:7:5", + "src": "3866:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6325,11 +6500,11 @@ }, { "constant": false, - "id": 725, + "id": 526, "name": "value", "nodeType": "VariableDeclaration", - "scope": 752, - "src": "3458:13:5", + "scope": 553, + "src": "3887:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6337,10 +6512,10 @@ "typeString": "uint256" }, "typeName": { - "id": 724, + "id": 525, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3458:7:5", + "src": "3887:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6351,11 +6526,11 @@ }, { "constant": false, - "id": 727, + "id": 528, "name": "data", "nodeType": "VariableDeclaration", - "scope": 752, - "src": "3482:10:5", + "scope": 553, + "src": "3911:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6363,10 +6538,10 @@ "typeString": "bytes" }, "typeName": { - "id": 726, + "id": 527, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3482:5:5", + "src": "3911:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6377,26 +6552,26 @@ }, { "constant": false, - "id": 729, + "id": 530, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 752, - "src": "3503:24:5", + "scope": 553, + "src": "3932:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 728, + "id": 529, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "3503:14:5", + "referencedDeclaration": 5, + "src": "3932:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -6405,11 +6580,11 @@ }, { "constant": false, - "id": 731, + "id": 532, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 752, - "src": "3538:13:5", + "scope": 553, + "src": "3967:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6417,10 +6592,10 @@ "typeString": "uint256" }, "typeName": { - "id": 730, + "id": 531, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3538:7:5", + "src": "3967:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6430,20 +6605,20 @@ "visibility": "internal" } ], - "src": "3427:130:5" + "src": "3856:130:3" }, "payable": false, "returnParameters": { - "id": 735, + "id": 536, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 734, + "id": 535, "name": "", "nodeType": "VariableDeclaration", - "scope": 752, - "src": "3603:7:5", + "scope": 553, + "src": "4032:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6451,10 +6626,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 733, + "id": 534, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3603:7:5", + "src": "4032:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6464,20 +6639,20 @@ "visibility": "internal" } ], - "src": "3602:9:5" + "src": "4031:9:3" }, - "scope": 753, - "src": "3400:311:5", + "scope": 554, + "src": "3829:311:3", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 754, - "src": "272:3441:5" + "scope": 555, + "src": "272:3870:3" } ], - "src": "0:3714:5" + "src": "0:4143:3" }, "compiler": { "name": "solc", @@ -6487,8 +6662,8 @@ "4": { "events": {}, "links": {}, - "address": "0x7e9805d6da2f382a2af21c492522fb81e7f7bfcd", - "transactionHash": "0xf80e26dc1da4895a87b9f4039f4d307205cd4f19be8c2f2a11a3be88c61de24d" + "address": "0x2dd472fa9a922d380282775d1b0a33b2ce62d094", + "transactionHash": "0x680b211f800d9cfe49c7f9d9e0259032d19ff74c43e7f44e16f14b1220ca7b89" }, "1525950336085": { "events": {}, @@ -6501,8 +6676,14 @@ "links": {}, "address": "0xaadc387a6c96744064754aa1f2391cbe1bb55970", "transactionHash": "0x782ef1b28e30afdcb711e7119c7bc794bbd7f42356ea5a68072b8f59400b05e3" + }, + "1526478212260": { + "events": {}, + "links": {}, + "address": "0xac64aef07af9275b66107f36039a47592c6507f8", + "transactionHash": "0x8004ae7f9ec8f459da793c0882711d8488c50b973f4bdddb9df31cade42b2cd3" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-14T07:39:37.956Z" + "updatedAt": "2018-05-16T13:45:24.516Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MasterCopy.json b/safe-contracts/build/contracts/MasterCopy.json index ef6e5bc3..75b6f868 100644 --- a/safe-contracts/build/contracts/MasterCopy.json +++ b/safe-contracts/build/contracts/MasterCopy.json @@ -18,38 +18,38 @@ ], "bytecode": "0x608060405234801561001057600080fd5b50610158806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156100c357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156100e957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a7230582073cd5ab8858f9d67e5e09748f71ecf939357d0d1230776e9f935b1ef5d664eb00029", "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156100c357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156100e957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a7230582073cd5ab8858f9d67e5e09748f71ecf939357d0d1230776e9f935b1ef5d664eb00029", - "sourceMap": "203:633:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;203:633:6;;;;;;;", - "deployedSourceMap": "203:633:6:-;;;;;;;;;;;;;;;;;;;;;;;;626:208;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o", + "sourceMap": "203:633:4:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;203:633:4;;;;;;;", + "deployedSourceMap": "203:633:4:-;;;;;;;;;;;;;;;;;;;;;;;;626:208;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o", "source": "pragma solidity 0.4.23;\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);\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": [ - 779 + 580 ] }, - "id": 780, + "id": 581, "nodeType": "SourceUnit", "nodes": [ { - "id": 755, + "id": 556, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:6" + "src": "0:23:4" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 756, + "id": 557, "nodeType": "ImportDirective", - "scope": 780, - "sourceUnit": 1560, - "src": "24:30:6", + "scope": 581, + "sourceUnit": 1360, + "src": "24:30:4", "symbolAliases": [], "unitAlias": "" }, @@ -59,42 +59,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 757, + "id": 558, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1559, - "src": "226:14:6", + "referencedDeclaration": 1359, + "src": "226:14:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeIdentifier": "t_contract$_SelfAuthorized_$1359", "typeString": "contract SelfAuthorized" } }, - "id": 758, + "id": 559, "nodeType": "InheritanceSpecifier", - "src": "226:14:6" + "src": "226:14:4" } ], "contractDependencies": [ - 1559 + 1359 ], "contractKind": "contract", "documentation": "@title MasterCopy - Base for master copy contracts (should always be first super contract)\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 779, + "id": 580, "linearizedBaseContracts": [ - 779, - 1559 + 580, + 1359 ], "name": "MasterCopy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 760, + "id": 561, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 779, - "src": "465:18:6", + "scope": 580, + "src": "465:18:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -102,10 +102,10 @@ "typeString": "address" }, "typeName": { - "id": 759, + "id": 560, "name": "address", "nodeType": "ElementaryTypeName", - "src": "465:7:6", + "src": "465:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -116,9 +116,9 @@ }, { "body": { - "id": 777, + "id": 578, "nodeType": "Block", - "src": "711:123:6", + "src": "711:123:4", "statements": [ { "expression": { @@ -130,19 +130,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 770, + "id": 571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 768, + "id": 569, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 762, - "src": "776:11:6", + "referencedDeclaration": 563, + "src": "776:11:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -153,14 +153,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 769, + "id": 570, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "791:1:6", + "src": "791:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -168,7 +168,7 @@ }, "value": "0" }, - "src": "776:16:6", + "src": "776:16:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -182,21 +182,21 @@ "typeString": "bool" } ], - "id": 767, + "id": 568, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "768:7:6", + "referencedDeclaration": 2399, + "src": "768:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 771, + "id": 572, "isConstant": false, "isLValue": false, "isPure": false, @@ -204,32 +204,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:25:6", + "src": "768:25:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 772, + "id": 573, "nodeType": "ExpressionStatement", - "src": "768:25:6" + "src": "768:25:4" }, { "expression": { "argumentTypes": null, - "id": 775, + "id": 576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 773, + "id": 574, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 760, - "src": "803:10:6", + "referencedDeclaration": 561, + "src": "803:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -239,68 +239,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 774, + "id": 575, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 762, - "src": "816:11:6", + "referencedDeclaration": 563, + "src": "816:11:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "803:24:6", + "src": "803:24:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 776, + "id": 577, "nodeType": "ExpressionStatement", - "src": "803:24:6" + "src": "803:24:4" } ] }, "documentation": "@dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n @param _masterCopy New contract address.", - "id": 778, + "id": 579, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 765, + "id": 566, "modifierName": { "argumentTypes": null, - "id": 764, + "id": 565, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "696:10:6", + "referencedDeclaration": 1358, + "src": "696:10:4", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "696:10:6" + "src": "696:10:4" } ], "name": "changeMasterCopy", "nodeType": "FunctionDefinition", "parameters": { - "id": 763, + "id": 564, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 762, + "id": 563, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 778, - "src": "652:19:6", + "scope": 579, + "src": "652:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -308,10 +308,10 @@ "typeString": "address" }, "typeName": { - "id": 761, + "id": 562, "name": "address", "nodeType": "ElementaryTypeName", - "src": "652:7:6", + "src": "652:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -321,56 +321,56 @@ "visibility": "internal" } ], - "src": "651:21:6" + "src": "651:21:4" }, "payable": false, "returnParameters": { - "id": 766, + "id": 567, "nodeType": "ParameterList", "parameters": [], - "src": "711:0:6" + "src": "711:0:4" }, - "scope": 779, - "src": "626:208:6", + "scope": 580, + "src": "626:208:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 780, - "src": "203:633:6" + "scope": 581, + "src": "203:633:4" } ], - "src": "0:837:6" + "src": "0:837:4" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "exportedSymbols": { "MasterCopy": [ - 779 + 580 ] }, - "id": 780, + "id": 581, "nodeType": "SourceUnit", "nodes": [ { - "id": 755, + "id": 556, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:6" + "src": "0:23:4" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 756, + "id": 557, "nodeType": "ImportDirective", - "scope": 780, - "sourceUnit": 1560, - "src": "24:30:6", + "scope": 581, + "sourceUnit": 1360, + "src": "24:30:4", "symbolAliases": [], "unitAlias": "" }, @@ -380,42 +380,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 757, + "id": 558, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1559, - "src": "226:14:6", + "referencedDeclaration": 1359, + "src": "226:14:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeIdentifier": "t_contract$_SelfAuthorized_$1359", "typeString": "contract SelfAuthorized" } }, - "id": 758, + "id": 559, "nodeType": "InheritanceSpecifier", - "src": "226:14:6" + "src": "226:14:4" } ], "contractDependencies": [ - 1559 + 1359 ], "contractKind": "contract", "documentation": "@title MasterCopy - Base for master copy contracts (should always be first super contract)\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 779, + "id": 580, "linearizedBaseContracts": [ - 779, - 1559 + 580, + 1359 ], "name": "MasterCopy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 760, + "id": 561, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 779, - "src": "465:18:6", + "scope": 580, + "src": "465:18:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -423,10 +423,10 @@ "typeString": "address" }, "typeName": { - "id": 759, + "id": 560, "name": "address", "nodeType": "ElementaryTypeName", - "src": "465:7:6", + "src": "465:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -437,9 +437,9 @@ }, { "body": { - "id": 777, + "id": 578, "nodeType": "Block", - "src": "711:123:6", + "src": "711:123:4", "statements": [ { "expression": { @@ -451,19 +451,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 770, + "id": 571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 768, + "id": 569, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 762, - "src": "776:11:6", + "referencedDeclaration": 563, + "src": "776:11:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -474,14 +474,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 769, + "id": 570, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "791:1:6", + "src": "791:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -489,7 +489,7 @@ }, "value": "0" }, - "src": "776:16:6", + "src": "776:16:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -503,21 +503,21 @@ "typeString": "bool" } ], - "id": 767, + "id": 568, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "768:7:6", + "referencedDeclaration": 2399, + "src": "768:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 771, + "id": 572, "isConstant": false, "isLValue": false, "isPure": false, @@ -525,32 +525,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:25:6", + "src": "768:25:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 772, + "id": 573, "nodeType": "ExpressionStatement", - "src": "768:25:6" + "src": "768:25:4" }, { "expression": { "argumentTypes": null, - "id": 775, + "id": 576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 773, + "id": 574, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 760, - "src": "803:10:6", + "referencedDeclaration": 561, + "src": "803:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -560,68 +560,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 774, + "id": 575, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 762, - "src": "816:11:6", + "referencedDeclaration": 563, + "src": "816:11:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "803:24:6", + "src": "803:24:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 776, + "id": 577, "nodeType": "ExpressionStatement", - "src": "803:24:6" + "src": "803:24:4" } ] }, "documentation": "@dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n @param _masterCopy New contract address.", - "id": 778, + "id": 579, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 765, + "id": 566, "modifierName": { "argumentTypes": null, - "id": 764, + "id": 565, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "696:10:6", + "referencedDeclaration": 1358, + "src": "696:10:4", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "696:10:6" + "src": "696:10:4" } ], "name": "changeMasterCopy", "nodeType": "FunctionDefinition", "parameters": { - "id": 763, + "id": 564, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 762, + "id": 563, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 778, - "src": "652:19:6", + "scope": 579, + "src": "652:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -629,10 +629,10 @@ "typeString": "address" }, "typeName": { - "id": 761, + "id": 562, "name": "address", "nodeType": "ElementaryTypeName", - "src": "652:7:6", + "src": "652:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -642,27 +642,27 @@ "visibility": "internal" } ], - "src": "651:21:6" + "src": "651:21:4" }, "payable": false, "returnParameters": { - "id": 766, + "id": 567, "nodeType": "ParameterList", "parameters": [], - "src": "711:0:6" + "src": "711:0:4" }, - "scope": 779, - "src": "626:208:6", + "scope": 580, + "src": "626:208:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 780, - "src": "203:633:6" + "scope": 581, + "src": "203:633:4" } ], - "src": "0:837:6" + "src": "0:837:4" }, "compiler": { "name": "solc", @@ -670,5 +670,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T10:43:07.897Z" + "updatedAt": "2018-05-16T10:51:14.746Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Migrations.json b/safe-contracts/build/contracts/Migrations.json index a8c86fc0..eabe9c30 100644 --- a/safe-contracts/build/contracts/Migrations.json +++ b/safe-contracts/build/contracts/Migrations.json @@ -1378,8 +1378,8 @@ "4": { "events": {}, "links": {}, - "address": "0xcf171a1fe7e24ac529ec0436cd51543469488a30", - "transactionHash": "0x52b1aad2d523bc57e2729516009b2dc46c58b5287c72ca9fa2faf949ad3ed32a" + "address": "0x682586e353e6befc8c7c09ba28165afca941ed5f", + "transactionHash": "0xfa828695bce76ea64bfa11fac92c01894ca684341a49e1d583c43a0d13bb0ec1" }, "42": { "events": {}, @@ -1398,8 +1398,14 @@ "links": {}, "address": "0x3b293b12ee278dba3d4350cd5b4434c228bad69b", "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" + }, + "1526478212260": { + "events": {}, + "links": {}, + "address": "0x6ff07ab4d4ecb8339dee6bd028e379c2a1992103", + "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-14T07:39:37.978Z" + "updatedAt": "2018-05-16T13:45:24.532Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Module.json b/safe-contracts/build/contracts/Module.json index 1b56ca3c..d5d93b4e 100644 --- a/safe-contracts/build/contracts/Module.json +++ b/safe-contracts/build/contracts/Module.json @@ -30,51 +30,51 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610202806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561016d57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561019357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058205587c1deb461488a054c78f3ba1b33c37dd5867b187b7fa9302f88a7d5f542d50029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561016d57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561019357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058205587c1deb461488a054c78f3ba1b33c37dd5867b187b7fa9302f88a7d5f542d50029", - "sourceMap": "225:437:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:437:8;;;;;;;", - "deployedSourceMap": "225:437:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:8;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:8;;;;;;;;;;;;;:::o;626:208:6:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o", + "bytecode": "0x608060405234801561001057600080fd5b50610202806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561016d57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561019357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820022bc97a157f8f1660f06255d7c4b4cf1258759b394ed54181754cfffe1f70ee0029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561016d57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561019357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820022bc97a157f8f1660f06255d7c4b4cf1258759b394ed54181754cfffe1f70ee0029", + "sourceMap": "225:437:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:437:5;;;;;;;", + "deployedSourceMap": "225:437:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;;;;;;;;;;;;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o", "source": "pragma solidity 0.4.23;\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));\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);\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": [ - 877 + 621 ] }, - "id": 878, + "id": 622, "nodeType": "SourceUnit", "nodes": [ { - "id": 838, + "id": 582, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:8" + "src": "0:23:5" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 839, + "id": 583, "nodeType": "ImportDirective", - "scope": 878, - "sourceUnit": 780, - "src": "24:26:8", + "scope": 622, + "sourceUnit": 581, + "src": "24:26:5", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 840, + "id": 584, "nodeType": "ImportDirective", - "scope": 878, - "sourceUnit": 1143, - "src": "51:29:8", + "scope": 622, + "sourceUnit": 972, + "src": "51:29:5", "symbolAliases": [], "unitAlias": "" }, @@ -84,59 +84,59 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 841, + "id": 585, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 779, - "src": "244:10:8", + "referencedDeclaration": 580, + "src": "244:10:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$779", + "typeIdentifier": "t_contract$_MasterCopy_$580", "typeString": "contract MasterCopy" } }, - "id": 842, + "id": 586, "nodeType": "InheritanceSpecifier", - "src": "244:10:8" + "src": "244:10:5" } ], "contractDependencies": [ - 779, - 1559 + 580, + 1359 ], "contractKind": "contract", "documentation": "@title Module - Base class for modules.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 877, + "id": 621, "linearizedBaseContracts": [ - 877, - 779, - 1559 + 621, + 580, + 1359 ], "name": "Module", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 844, + "id": 588, "name": "manager", "nodeType": "VariableDeclaration", - "scope": 877, - "src": "262:28:8", + "scope": 621, + "src": "262:28:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" }, "typeName": { "contractScope": null, - "id": 843, + "id": 587, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1142, - "src": "262:13:8", + "referencedDeclaration": 971, + "src": "262:13:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } }, @@ -145,9 +145,9 @@ }, { "body": { - "id": 856, + "id": 600, "nodeType": "Block", - "src": "319:67:8", + "src": "319:67:5", "statements": [ { "expression": { @@ -159,7 +159,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 852, + "id": 596, "isConstant": false, "isLValue": false, "isPure": false, @@ -168,18 +168,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 847, + "id": 591, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "337:3:8", + "referencedDeclaration": 2396, + "src": "337:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 848, + "id": 592, "isConstant": false, "isLValue": false, "isPure": false, @@ -187,7 +187,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "337:10:8", + "src": "337:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -200,14 +200,14 @@ "arguments": [ { "argumentTypes": null, - "id": 850, + "id": 594, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "359:7:8", + "referencedDeclaration": 588, + "src": "359:7:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } } @@ -215,24 +215,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } ], - "id": 849, + "id": 593, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "351:7:8", + "src": "351:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 851, + "id": 595, "isConstant": false, "isLValue": false, "isPure": false, @@ -240,13 +240,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "351:16:8", + "src": "351:16:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "337:30:8", + "src": "337:30:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -260,21 +260,21 @@ "typeString": "bool" } ], - "id": 846, + "id": 590, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "329:7:8", + "referencedDeclaration": 2399, + "src": "329:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 853, + "id": 597, "isConstant": false, "isLValue": false, "isPure": false, @@ -282,41 +282,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:39:8", + "src": "329:39:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 854, + "id": 598, "nodeType": "ExpressionStatement", - "src": "329:39:8" + "src": "329:39:5" }, { - "id": 855, + "id": 599, "nodeType": "PlaceholderStatement", - "src": "378:1:8" + "src": "378:1:5" } ] }, "documentation": null, - "id": 857, + "id": 601, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 845, + "id": 589, "nodeType": "ParameterList", "parameters": [], - "src": "316:2:8" + "src": "316:2:5" }, - "src": "297:89:8", + "src": "297:89:5", "visibility": "internal" }, { "body": { - "id": 875, + "id": 619, "nodeType": "Block", - "src": "435:225:8", + "src": "435:225:5", "statements": [ { "expression": { @@ -328,7 +328,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 865, + "id": 609, "isConstant": false, "isLValue": false, "isPure": false, @@ -338,14 +338,14 @@ "arguments": [ { "argumentTypes": null, - "id": 862, + "id": 606, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "594:7:8", + "referencedDeclaration": 588, + "src": "594:7:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } } @@ -353,24 +353,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } ], - "id": 861, + "id": 605, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "586:7:8", + "src": "586:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 863, + "id": 607, "isConstant": false, "isLValue": false, "isPure": false, @@ -378,7 +378,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "586:16:8", + "src": "586:16:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -389,14 +389,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 864, + "id": 608, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "606:1:8", + "src": "606:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -404,7 +404,7 @@ }, "value": "0" }, - "src": "586:21:8", + "src": "586:21:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -418,21 +418,21 @@ "typeString": "bool" } ], - "id": 860, + "id": 604, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "578:7:8", + "referencedDeclaration": 2399, + "src": "578:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 866, + "id": 610, "isConstant": false, "isLValue": false, "isPure": false, @@ -440,34 +440,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "578:30:8", + "src": "578:30:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 867, + "id": 611, "nodeType": "ExpressionStatement", - "src": "578:30:8" + "src": "578:30:5" }, { "expression": { "argumentTypes": null, - "id": 873, + "id": 617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 868, + "id": 612, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "618:7:8", + "referencedDeclaration": 588, + "src": "618:7:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } }, @@ -480,18 +480,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 870, + "id": 614, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "642:3:8", + "referencedDeclaration": 2396, + "src": "642:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 871, + "id": 615, "isConstant": false, "isLValue": false, "isPure": false, @@ -499,7 +499,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "642:10:8", + "src": "642:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -513,18 +513,18 @@ "typeString": "address" } ], - "id": 869, + "id": 613, "name": "ModuleManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "628:13:8", + "referencedDeclaration": 971, + "src": "628:13:5", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ModuleManager_$1142_$", + "typeIdentifier": "t_type$_t_contract$_ModuleManager_$971_$", "typeString": "type(contract ModuleManager)" } }, - "id": 872, + "id": 616, "isConstant": false, "isLValue": false, "isPure": false, @@ -532,26 +532,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "628:25:8", + "src": "628:25:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } }, - "src": "618:35:8", + "src": "618:35:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } }, - "id": 874, + "id": 618, "nodeType": "ExpressionStatement", - "src": "618:35:8" + "src": "618:35:5" } ] }, "documentation": null, - "id": 876, + "id": 620, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -559,70 +559,70 @@ "name": "setManager", "nodeType": "FunctionDefinition", "parameters": { - "id": 858, + "id": 602, "nodeType": "ParameterList", "parameters": [], - "src": "411:2:8" + "src": "411:2:5" }, "payable": false, "returnParameters": { - "id": 859, + "id": 603, "nodeType": "ParameterList", "parameters": [], - "src": "435:0:8" + "src": "435:0:5" }, - "scope": 877, - "src": "392:268:8", + "scope": 621, + "src": "392:268:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 878, - "src": "225:437:8" + "scope": 622, + "src": "225:437:5" } ], - "src": "0:663:8" + "src": "0:663:5" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "exportedSymbols": { "Module": [ - 877 + 621 ] }, - "id": 878, + "id": 622, "nodeType": "SourceUnit", "nodes": [ { - "id": 838, + "id": 582, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:8" + "src": "0:23:5" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 839, + "id": 583, "nodeType": "ImportDirective", - "scope": 878, - "sourceUnit": 780, - "src": "24:26:8", + "scope": 622, + "sourceUnit": 581, + "src": "24:26:5", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 840, + "id": 584, "nodeType": "ImportDirective", - "scope": 878, - "sourceUnit": 1143, - "src": "51:29:8", + "scope": 622, + "sourceUnit": 972, + "src": "51:29:5", "symbolAliases": [], "unitAlias": "" }, @@ -632,59 +632,59 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 841, + "id": 585, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 779, - "src": "244:10:8", + "referencedDeclaration": 580, + "src": "244:10:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$779", + "typeIdentifier": "t_contract$_MasterCopy_$580", "typeString": "contract MasterCopy" } }, - "id": 842, + "id": 586, "nodeType": "InheritanceSpecifier", - "src": "244:10:8" + "src": "244:10:5" } ], "contractDependencies": [ - 779, - 1559 + 580, + 1359 ], "contractKind": "contract", "documentation": "@title Module - Base class for modules.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 877, + "id": 621, "linearizedBaseContracts": [ - 877, - 779, - 1559 + 621, + 580, + 1359 ], "name": "Module", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 844, + "id": 588, "name": "manager", "nodeType": "VariableDeclaration", - "scope": 877, - "src": "262:28:8", + "scope": 621, + "src": "262:28:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" }, "typeName": { "contractScope": null, - "id": 843, + "id": 587, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1142, - "src": "262:13:8", + "referencedDeclaration": 971, + "src": "262:13:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } }, @@ -693,9 +693,9 @@ }, { "body": { - "id": 856, + "id": 600, "nodeType": "Block", - "src": "319:67:8", + "src": "319:67:5", "statements": [ { "expression": { @@ -707,7 +707,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 852, + "id": 596, "isConstant": false, "isLValue": false, "isPure": false, @@ -716,18 +716,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 847, + "id": 591, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "337:3:8", + "referencedDeclaration": 2396, + "src": "337:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 848, + "id": 592, "isConstant": false, "isLValue": false, "isPure": false, @@ -735,7 +735,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "337:10:8", + "src": "337:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -748,14 +748,14 @@ "arguments": [ { "argumentTypes": null, - "id": 850, + "id": 594, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "359:7:8", + "referencedDeclaration": 588, + "src": "359:7:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } } @@ -763,24 +763,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } ], - "id": 849, + "id": 593, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "351:7:8", + "src": "351:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 851, + "id": 595, "isConstant": false, "isLValue": false, "isPure": false, @@ -788,13 +788,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "351:16:8", + "src": "351:16:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "337:30:8", + "src": "337:30:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -808,21 +808,21 @@ "typeString": "bool" } ], - "id": 846, + "id": 590, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "329:7:8", + "referencedDeclaration": 2399, + "src": "329:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 853, + "id": 597, "isConstant": false, "isLValue": false, "isPure": false, @@ -830,41 +830,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:39:8", + "src": "329:39:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 854, + "id": 598, "nodeType": "ExpressionStatement", - "src": "329:39:8" + "src": "329:39:5" }, { - "id": 855, + "id": 599, "nodeType": "PlaceholderStatement", - "src": "378:1:8" + "src": "378:1:5" } ] }, "documentation": null, - "id": 857, + "id": 601, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 845, + "id": 589, "nodeType": "ParameterList", "parameters": [], - "src": "316:2:8" + "src": "316:2:5" }, - "src": "297:89:8", + "src": "297:89:5", "visibility": "internal" }, { "body": { - "id": 875, + "id": 619, "nodeType": "Block", - "src": "435:225:8", + "src": "435:225:5", "statements": [ { "expression": { @@ -876,7 +876,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 865, + "id": 609, "isConstant": false, "isLValue": false, "isPure": false, @@ -886,14 +886,14 @@ "arguments": [ { "argumentTypes": null, - "id": 862, + "id": 606, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "594:7:8", + "referencedDeclaration": 588, + "src": "594:7:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } } @@ -901,24 +901,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } ], - "id": 861, + "id": 605, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "586:7:8", + "src": "586:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 863, + "id": 607, "isConstant": false, "isLValue": false, "isPure": false, @@ -926,7 +926,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "586:16:8", + "src": "586:16:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -937,14 +937,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 864, + "id": 608, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "606:1:8", + "src": "606:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -952,7 +952,7 @@ }, "value": "0" }, - "src": "586:21:8", + "src": "586:21:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -966,21 +966,21 @@ "typeString": "bool" } ], - "id": 860, + "id": 604, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "578:7:8", + "referencedDeclaration": 2399, + "src": "578:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 866, + "id": 610, "isConstant": false, "isLValue": false, "isPure": false, @@ -988,34 +988,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "578:30:8", + "src": "578:30:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 867, + "id": 611, "nodeType": "ExpressionStatement", - "src": "578:30:8" + "src": "578:30:5" }, { "expression": { "argumentTypes": null, - "id": 873, + "id": 617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 868, + "id": 612, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "618:7:8", + "referencedDeclaration": 588, + "src": "618:7:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } }, @@ -1028,18 +1028,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 870, + "id": 614, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "642:3:8", + "referencedDeclaration": 2396, + "src": "642:3:5", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 871, + "id": 615, "isConstant": false, "isLValue": false, "isPure": false, @@ -1047,7 +1047,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "642:10:8", + "src": "642:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1061,18 +1061,18 @@ "typeString": "address" } ], - "id": 869, + "id": 613, "name": "ModuleManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "628:13:8", + "referencedDeclaration": 971, + "src": "628:13:5", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ModuleManager_$1142_$", + "typeIdentifier": "t_type$_t_contract$_ModuleManager_$971_$", "typeString": "type(contract ModuleManager)" } }, - "id": 872, + "id": 616, "isConstant": false, "isLValue": false, "isPure": false, @@ -1080,26 +1080,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "628:25:8", + "src": "628:25:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } }, - "src": "618:35:8", + "src": "618:35:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } }, - "id": 874, + "id": 618, "nodeType": "ExpressionStatement", - "src": "618:35:8" + "src": "618:35:5" } ] }, "documentation": null, - "id": 876, + "id": 620, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1107,30 +1107,30 @@ "name": "setManager", "nodeType": "FunctionDefinition", "parameters": { - "id": 858, + "id": 602, "nodeType": "ParameterList", "parameters": [], - "src": "411:2:8" + "src": "411:2:5" }, "payable": false, "returnParameters": { - "id": 859, + "id": 603, "nodeType": "ParameterList", "parameters": [], - "src": "435:0:8" + "src": "435:0:5" }, - "scope": 877, - "src": "392:268:8", + "scope": 621, + "src": "392:268:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 878, - "src": "225:437:8" + "scope": 622, + "src": "225:437:5" } ], - "src": "0:663:8" + "src": "0:663:5" }, "compiler": { "name": "solc", @@ -1138,5 +1138,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T10:43:07.898Z" + "updatedAt": "2018-05-16T10:51:14.746Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ModuleManager.json b/safe-contracts/build/contracts/ModuleManager.json index 04b6de49..8ab073d5 100644 --- a/safe-contracts/build/contracts/ModuleManager.json +++ b/safe-contracts/build/contracts/ModuleManager.json @@ -3,32 +3,8 @@ "abi": [ { "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "isModule", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "modules", + "inputs": [], + "name": "SENTINEL_MODULES", "outputs": [ { "name": "", @@ -92,7 +68,7 @@ "type": "address" } ], - "name": "addModule", + "name": "enableModule", "outputs": [], "payable": false, "stateMutability": "nonpayable", @@ -102,15 +78,15 @@ "constant": false, "inputs": [ { - "name": "moduleIndex", - "type": "uint256" + "name": "prevModule", + "type": "address" }, { "name": "module", "type": "address" } ], - "name": "removeModule", + "name": "disableModule", "outputs": [], "payable": false, "stateMutability": "nonpayable", @@ -136,7 +112,7 @@ "type": "uint8" } ], - "name": "executeModule", + "name": "execTransactionFromModule", "outputs": [ { "name": "success", @@ -162,62 +138,62 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610ae8806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631ed86f191461009057806342f6e389146100d35780637c6401d31461012e57806381b2248a1461017b578063a3f4df7e146101e8578063b021640a14610278578063b2494df314610330578063ffa1ad741461039c575b005b34801561009c57600080fd5b506100d1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061042c565b005b3480156100df57600080fd5b50610114600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105a5565b604051808215151515815260200191505060405180910390f35b34801561013a57600080fd5b5061017960048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105c5565b005b34801561018757600080fd5b506101a66004803603810190808035906020019092919050505061077d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f457600080fd5b506101fd6107bb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561023d578082015181840152602081019050610222565b50505050905090810190601f16801561026a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028457600080fd5b50610316600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506107f4565b604051808215151515815260200191505060405180910390f35b34801561033c57600080fd5b50610345610865565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561038857808201518184015260208101905061036d565b505050509050019250505060405180910390f35b3480156103a857600080fd5b506103b16108f3565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103f15780820151818401526020810190506103d6565b50505050905090810190601f16801561041e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561046657600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561048c57600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156104e557600080fd5b60008190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60016020528060005260406000206000915054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105ff57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008381548110151561062557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561067257600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006001600080549050038154811015156106e157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008381548110151561071b57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054809190600190036107789190610a6b565b505050565b60008181548110151561078c57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561084e57600080fd5b61085b858585855a61092c565b9050949350505050565b606060008054806020026020016040519081016040528092919081815260200182805480156108e957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161089f575b5050505050905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000600281111561093c57fe5b84600281111561094857fe5b14156109615761095a87878786610a29565b9150610a1f565b6001600281111561096e57fe5b84600281111561097a57fe5b14156109925761098b878685610a42565b9150610a1e565b61099b85610a59565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b815481835581811115610a9257818360005260206000209182019101610a919190610a97565b5b505050565b610ab991905b80821115610ab5576000816000905550600101610a9d565b5090565b905600a165627a7a723058206fc1cadae78bd8d092ed47582dfc37039722fb9d1a82eee418f0f5e3f5cbe86a0029", - "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631ed86f191461009057806342f6e389146100d35780637c6401d31461012e57806381b2248a1461017b578063a3f4df7e146101e8578063b021640a14610278578063b2494df314610330578063ffa1ad741461039c575b005b34801561009c57600080fd5b506100d1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061042c565b005b3480156100df57600080fd5b50610114600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105a5565b604051808215151515815260200191505060405180910390f35b34801561013a57600080fd5b5061017960048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105c5565b005b34801561018757600080fd5b506101a66004803603810190808035906020019092919050505061077d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f457600080fd5b506101fd6107bb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561023d578082015181840152602081019050610222565b50505050905090810190601f16801561026a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028457600080fd5b50610316600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506107f4565b604051808215151515815260200191505060405180910390f35b34801561033c57600080fd5b50610345610865565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561038857808201518184015260208101905061036d565b505050509050019250505060405180910390f35b3480156103a857600080fd5b506103b16108f3565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103f15780820151818401526020810190506103d6565b50505050905090810190601f16801561041e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561046657600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561048c57600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156104e557600080fd5b60008190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60016020528060005260406000206000915054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105ff57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008381548110151561062557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561067257600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006001600080549050038154811015156106e157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008381548110151561071b57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054809190600190036107789190610a6b565b505050565b60008181548110151561078c57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561084e57600080fd5b61085b858585855a61092c565b9050949350505050565b606060008054806020026020016040519081016040528092919081815260200182805480156108e957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161089f575b5050505050905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000600281111561093c57fe5b84600281111561094857fe5b14156109615761095a87878786610a29565b9150610a1f565b6001600281111561096e57fe5b84600281111561097a57fe5b14156109925761098b878685610a42565b9150610a1e565b61099b85610a59565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b815481835581811115610a9257818360005260206000209182019101610a919190610a97565b5b505050565b610ab991905b80821115610ab5576000816000905550600101610a9d565b5090565b905600a165627a7a723058206fc1cadae78bd8d092ed47582dfc37039722fb9d1a82eee418f0f5e3f5cbe86a0029", - "sourceMap": "303:4090:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;303:4090:9;;;;;;;", - "deployedSourceMap": "303:4090:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1166:300;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1166:300:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;599:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;599:41:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1722:336;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1722:336:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;500:23: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2394:361;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2394:361:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4279:112: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;4279:112: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1166:300;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1317:1:9;1306:6;1298:20;;;;1290:29;;;;;;;;1379:8;:16;1388:6;1379:16;;;;;;;;;;;;;;;;;;;;;;;;;1378:17;1370:26;;;;;;;;1406:7;1419:6;1406:20;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1406:20:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1455:4;1436:8;:16;1445:6;1436:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1166:300;:::o;599:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;1722:336::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1924:6:9;1900:30;;:7;1908:11;1900:20;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;1892:39;;;;;;;;1960:5;1941:8;:16;1950:6;1941:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;1998:7;2023:1;2006:7;:14;;;;:18;1998:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:7;1983:11;1975:20;;;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;2035:7;:16;;;;;;;;;;;;:::i;:::-;;1722:336;;:::o;500:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;401:46::-;;;;;;;;;;;;;;;;;;;;:::o;2394:361::-;2514:12;2599:8;:20;2608:10;2599:20;;;;;;;;;;;;;;;;;;;;;;;;;2591:29;;;;;;;;2702:46;2710:2;2714:5;2721:4;2727:9;2738;2702:7;:46::i;:::-;2692:56;;2394:361;;;;;;:::o;4279:112::-;4346:8;4377:7;4370:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;:::o;453:40::-;;;;;;;;;;;;;;;;;;;;:::o;2761:548::-;2892:12;3163:19;2937;2924:32;;;;;;;;:9;:32;;;;;;;;;2920:383;;;2980:35;2992:2;2996:5;3003:4;3009:5;2980:11;:35::i;:::-;2970:45;;2920:383;;;3047:27;3034:40;;;;;;;;:9;:40;;;;;;;;;3030:273;;;3098:36;3118:2;3122:4;3128:5;3098:19;:36::i;:::-;3088:46;;3030:273;;;3185:19;3199:4;3185:13;:19::i;:::-;3163:41;;3243:1;3228:11;:16;;;;3218:26;;3263:29;3280:11;3263:29;;;;;;;;;;;;;;;;;;;;;;3030:273;2920:383;2761:548;;;;;;;;:::o;3315:309::-;3424:12;3606:1;3603;3596:4;3590:11;3583:4;3577;3573:15;3566:5;3562:2;3555:5;3550:58;3539:69;;3525:93;;;;;;:::o;3630:303::-;3732:12;3915:1;3912;3905:4;3899:11;3892:4;3886;3882:15;3878:2;3871:5;3858:59;3847:70;;3833:94;;;;;:::o;3939:261::-;4008:19;4178:4;4172:11;4165:4;4159;4155:15;4152:1;4145:39;4130:54;;4116:78;;;:::o;303:4090::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.23;\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\n Module[] public modules;\n\n // isModule mapping allows to check if a module was whitelisted.\n mapping (address => bool) public isModule;\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 if (to != 0)\n // Setup has to complete successfully or transaction fails.\n require(executeDelegateCall(to, data, gasleft()));\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 addModule(Module module)\n public\n authorized\n {\n // Module address cannot be null.\n require(address(module) != 0);\n // Module cannot be added twice.\n require(!isModule[module]);\n modules.push(module);\n isModule[module] = true;\n }\n\n /// @dev Allows to remove a module from the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param moduleIndex Array index position of module to be removed from whitelist.\n /// @param module Module to be removed.\n function removeModule(uint256 moduleIndex, Module module)\n public\n authorized\n {\n // Validate module address corresponds to module index.\n require(modules[moduleIndex] == module);\n isModule[module] = false;\n modules[moduleIndex] = modules[modules.length - 1];\n modules.length--;\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 executeModule(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n returns (bool success)\n {\n // Only whitelisted modules are allowed.\n require(isModule[msg.sender]);\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 (Module[])\n {\n return modules;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610d8f806100206000396000f300608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610462565b005b34801561018c57600080fd5b506101956106db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6106e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109bc565b005b34801561034257600080fd5b5061034b610beb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561044b57600080fd5b610458858585855a610c24565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156104f05750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156104fb57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561057e57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561082b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610787565b8260405190808252806020026020018201604052801561085a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156109b35781818481518110151561090957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506108c4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a8e57600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115610c3457fe5b846002811115610c4057fe5b1415610c5957610c5287878786610d21565b9150610d17565b60016002811115610c6657fe5b846002811115610c7257fe5b1415610c8a57610c83878685610d3a565b9150610d16565b610c9385610d51565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820f73984cc7cb90fc15f3fdf21f5e74b21221f6ace06f0742ae3ee75acdbd56ef40029", + "deployedBytecode": "0x608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610462565b005b34801561018c57600080fd5b506101956106db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6106e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109bc565b005b34801561034257600080fd5b5061034b610beb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561044b57600080fd5b610458858585855a610c24565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156104f05750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156104fb57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561057e57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561082b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610787565b8260405190808252806020026020018201604052801561085a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156109b35781818481518110151561090957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506108c4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a8e57600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115610c3457fe5b846002811115610c4057fe5b1415610c5957610c5287878786610d21565b9150610d17565b60016002811115610c6657fe5b846002811115610c7257fe5b1415610c8a57610c83878685610d3a565b9150610d16565b610c9385610d51565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820f73984cc7cb90fc15f3fdf21f5e74b21221f6ace06f0742ae3ee75acdbd56ef40029", + "sourceMap": "303:4860:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;303:4860:6;;;;;;;", + "deployedSourceMap": "303:4860:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423: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;4423:738:6;;;;;;;;;;;;;;;;;1887:299;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:6;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;499:55::-;550:3;499:55;:::o;401:46::-;;;;;;;;;;;;;;;;;;;;:::o;4423:738::-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807: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;4807:26:6;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;1887:299::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:6;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;453:40::-;;;;;;;;;;;;;;;;;;;;:::o;2905:548::-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", + "source": "pragma solidity 0.4.23;\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);\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()));\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);\n // Module cannot be added twice.\n require(modules[module] == 0);\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 corresponds to module index.\n require(modules[prevModule] == address(module));\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);\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": [ - 1142 + 971 ] }, - "id": 1143, + "id": 972, "nodeType": "SourceUnit", "nodes": [ { - "id": 879, + "id": 623, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:9" + "src": "0:23:6" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 880, + "id": 624, "nodeType": "ImportDirective", - "scope": 1143, - "sourceUnit": 878, - "src": "24:22:9", + "scope": 972, + "sourceUnit": 622, + "src": "24:22:6", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 881, + "id": 625, "nodeType": "ImportDirective", - "scope": 1143, - "sourceUnit": 780, - "src": "47:26:9", + "scope": 972, + "sourceUnit": 581, + "src": "47:26:6", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "./Enum.sol", - "id": 882, + "id": 626, "nodeType": "ImportDirective", - "scope": 1143, - "sourceUnit": 31, - "src": "74:20:9", + "scope": 972, + "sourceUnit": 7, + "src": "74:20:6", "symbolAliases": [], "unitAlias": "" }, @@ -227,31 +203,31 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 883, + "id": 627, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1559, - "src": "329:14:9", + "referencedDeclaration": 1359, + "src": "329:14:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeIdentifier": "t_contract$_SelfAuthorized_$1359", "typeString": "contract SelfAuthorized" } }, - "id": 884, + "id": 628, "nodeType": "InheritanceSpecifier", - "src": "329:14:9" + "src": "329:14:6" } ], "contractDependencies": [ - 1559 + 1359 ], "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": 1142, + "id": 971, "linearizedBaseContracts": [ - 1142, - 1559 + 971, + 1359 ], "name": "ModuleManager", "nodeType": "ContractDefinition", @@ -259,21 +235,21 @@ { "anonymous": false, "documentation": null, - "id": 888, + "id": 632, "name": "ContractCreation", "nodeType": "EventDefinition", "parameters": { - "id": 887, + "id": 631, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 886, + "id": 630, "indexed": false, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "374:19:9", + "scope": 632, + "src": "374:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -281,10 +257,10 @@ "typeString": "address" }, "typeName": { - "id": 885, + "id": 629, "name": "address", "nodeType": "ElementaryTypeName", - "src": "374:7:9", + "src": "374:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -294,17 +270,17 @@ "visibility": "internal" } ], - "src": "373:21:9" + "src": "373:21:6" }, - "src": "351:44:9" + "src": "351:44:6" }, { "constant": true, - "id": 891, + "id": 635, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1142, - "src": "401:46:9", + "scope": 971, + "src": "401:46:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -312,10 +288,10 @@ "typeString": "string" }, "typeName": { - "id": 889, + "id": 633, "name": "string", "nodeType": "ElementaryTypeName", - "src": "401:6:9", + "src": "401:6:6", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -324,14 +300,14 @@ "value": { "argumentTypes": null, "hexValue": "4d6f64756c65204d616e61676572", - "id": 890, + "id": 634, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "431:16:9", + "src": "431:16:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_12aaa44a1bae367a1e1d9881f5d80283afded6373c2a1ca586db420944084efb", @@ -343,11 +319,11 @@ }, { "constant": true, - "id": 894, + "id": 638, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1142, - "src": "453:40:9", + "scope": 971, + "src": "453:40:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -355,10 +331,10 @@ "typeString": "string" }, "typeName": { - "id": 892, + "id": 636, "name": "string", "nodeType": "ElementaryTypeName", - "src": "453:6:9", + "src": "453:6:6", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -367,14 +343,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 893, + "id": 637, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "486:7:9", + "src": "486:7:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -385,97 +361,140 @@ "visibility": "public" }, { - "constant": false, - "id": 897, - "name": "modules", + "constant": true, + "id": 643, + "name": "SENTINEL_MODULES", "nodeType": "VariableDeclaration", - "scope": 1142, - "src": "500:23:9", + "scope": 971, + "src": "499:55:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", - "typeString": "contract Module[]" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "baseType": { - "contractScope": null, - "id": 895, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "500:6:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "id": 896, - "length": null, - "nodeType": "ArrayTypeName", - "src": "500:8:9", + "id": 639, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "499:7:6", "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage_ptr", - "typeString": "contract Module[]" + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "307831", + "id": 641, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "550:3:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "0x1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 640, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "542:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "542:12:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - "value": null, "visibility": "public" }, { "constant": false, - "id": 901, - "name": "isModule", + "id": 647, + "name": "modules", "nodeType": "VariableDeclaration", - "scope": 1142, - "src": "599:41:9", + "scope": 971, + "src": "561:45:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" }, "typeName": { - "id": 900, + "id": 646, "keyType": { - "id": 898, + "id": 644, "name": "address", "nodeType": "ElementaryTypeName", - "src": "608:7:9", + "src": "570:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "599:25:9", + "src": "561:28:6", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" }, "valueType": { - "id": 899, - "name": "bool", + "id": 645, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "619:4:9", + "src": "581:7:6", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } } }, "value": null, - "visibility": "public" + "visibility": "internal" }, { "body": { - "id": 904, + "id": 650, "nodeType": "Block", - "src": "755:8:9", + "src": "721:8:6", "statements": [] }, "documentation": "@dev Fallback function accepts Ether transactions.", - "id": 905, + "id": 651, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -483,317 +502,29 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 902, + "id": 648, "nodeType": "ParameterList", "parameters": [], - "src": "715:2:9" + "src": "681:2:6" }, "payable": true, "returnParameters": { - "id": 903, + "id": 649, "nodeType": "ParameterList", "parameters": [], - "src": "755:0:9" + "src": "721:0:6" }, - "scope": 1142, - "src": "706:57:9", + "scope": 971, + "src": "672:57:6", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 925, + "id": 685, "nodeType": "Block", - "src": "836:163:9", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 914, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 912, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 907, - "src": "850:2:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 913, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "856:1:9", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "850:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 924, - "nodeType": "IfStatement", - "src": "846:146:9", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 917, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 907, - "src": "971:2:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 918, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 909, - "src": "975:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 919, - "name": "gasleft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "981:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 920, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "981:9:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 916, - "name": "executeDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1123, - "src": "951: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": 921, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "951:40:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 915, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "943:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 922, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "943:49:9", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 923, - "nodeType": "ExpressionStatement", - "src": "943:49:9" - } - } - ] - }, - "documentation": null, - "id": 926, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setupModules", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 910, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 907, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 926, - "src": "791:10:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 906, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "791:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 909, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 926, - "src": "803:10:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 908, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "803:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "790:24:9" - }, - "payable": false, - "returnParameters": { - "id": 911, - "nodeType": "ParameterList", - "parameters": [], - "src": "836:0:9" - }, - "scope": 1142, - "src": "769:230:9", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 960, - "nodeType": "Block", - "src": "1238:228:9", + "src": "802:266:6", "statements": [ { "expression": { @@ -805,24 +536,1160 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 938, + "id": 663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 659, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "820:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 661, + "indexExpression": { + "argumentTypes": null, + "id": 660, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "828:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "820:25:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "849:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "820:30:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 658, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "812:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "812:39:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 665, + "nodeType": "ExpressionStatement", + "src": "812:39:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 666, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "861:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 668, + "indexExpression": { + "argumentTypes": null, + "id": 667, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "869:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "861:25:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 669, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "889:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "861:44:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 671, + "nodeType": "ExpressionStatement", + "src": "861:44:6" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 672, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 653, + "src": "919:2:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 673, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "925:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "919:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 684, + "nodeType": "IfStatement", + "src": "915:146:6", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 935, + "id": 677, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 653, + "src": "1040:2:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 678, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 655, + "src": "1044:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 679, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2389, + "src": "1050:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1050:9:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 676, + "name": "executeDelegateCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 888, + "src": "1020:19:6", + "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": 681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1020:40:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 675, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "1012:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1012:49:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 683, + "nodeType": "ExpressionStatement", + "src": "1012:49:6" + } + } + ] + }, + "documentation": null, + "id": 686, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setupModules", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 656, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 653, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 686, + "src": "757:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 652, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "757:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 655, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 686, + "src": "769:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 654, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "769:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "756:24:6" + }, + "payable": false, + "returnParameters": { + "id": 657, + "nodeType": "ParameterList", + "parameters": [], + "src": "802:0:6" + }, + "scope": 971, + "src": "735:333:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 729, + "nodeType": "Block", + "src": "1310:316:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 695, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 688, + "src": "1390:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + ], + "id": 694, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1382:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1382:15:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1401:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1382:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 700, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 688, + "src": "1414:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + ], + "id": 699, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1406:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1406:15:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 702, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "1425:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1406:35:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1382:59:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 693, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "1374:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1374:68:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 706, + "nodeType": "ExpressionStatement", + "src": "1374:68:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 708, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "1501:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 710, + "indexExpression": { + "argumentTypes": null, + "id": 709, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 688, + "src": "1509:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1501:15:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1520:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1501:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 707, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "1493:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1493:29:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 714, + "nodeType": "ExpressionStatement", + "src": "1493:29:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 715, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "1532:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 717, + "indexExpression": { + "argumentTypes": null, + "id": 716, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 688, + "src": "1540:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1532:15:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 718, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "1550:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 720, + "indexExpression": { + "argumentTypes": null, + "id": 719, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "1558:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1550:25:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1532:43:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 722, + "nodeType": "ExpressionStatement", + "src": "1532:43:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 723, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "1585:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 725, + "indexExpression": { + "argumentTypes": null, + "id": 724, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "1593:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1585:25:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 726, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 688, + "src": "1613:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "src": "1585:34:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 728, + "nodeType": "ExpressionStatement", + "src": "1585:34:6" + } + ] + }, + "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": 730, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 691, + "modifierName": { + "argumentTypes": null, + "id": 690, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "1295:10:6", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1295:10:6" + } + ], + "name": "enableModule", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 688, + "name": "module", + "nodeType": "VariableDeclaration", + "scope": 730, + "src": "1257:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 687, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 621, + "src": "1257:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1256:15:6" + }, + "payable": false, + "returnParameters": { + "id": 692, + "nodeType": "ParameterList", + "parameters": [], + "src": "1310:0:6" + }, + "scope": 971, + "src": "1235:391:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 763, + "nodeType": "Block", + "src": "1982:204:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 740, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "2064:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 742, + "indexExpression": { + "argumentTypes": null, + "id": 741, + "name": "prevModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 732, + "src": "2072:10:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2064:19:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 744, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 928, - "src": "1306:6:9", + "referencedDeclaration": 734, + "src": "2095:6:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", + "typeIdentifier": "t_contract$_Module_$621", "typeString": "contract Module" } } @@ -830,24 +1697,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$877", + "typeIdentifier": "t_contract$_Module_$621", "typeString": "contract Module" } ], - "id": 934, + "id": 743, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1298:7:9", + "src": "2087:7:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 936, + "id": 745, "isConstant": false, "isLValue": false, "isPure": false, @@ -855,7 +1722,414 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1298:15:9", + "src": "2087:15:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2064:38:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 739, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "2056:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2056:47:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 748, + "nodeType": "ExpressionStatement", + "src": "2056:47:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 749, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "2113:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 751, + "indexExpression": { + "argumentTypes": null, + "id": 750, + "name": "prevModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 732, + "src": "2121:10:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2113:19:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 752, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "2135:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 754, + "indexExpression": { + "argumentTypes": null, + "id": 753, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 734, + "src": "2143:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2135:15:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2113:37:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 756, + "nodeType": "ExpressionStatement", + "src": "2113:37:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 757, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "2160:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 759, + "indexExpression": { + "argumentTypes": null, + "id": 758, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 734, + "src": "2168:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2160:15:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2178:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2160:19:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 762, + "nodeType": "ExpressionStatement", + "src": "2160:19:6" + } + ] + }, + "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": 764, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 737, + "modifierName": { + "argumentTypes": null, + "id": 736, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "1967:10:6", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1967:10:6" + } + ], + "name": "disableModule", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 735, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 732, + "name": "prevModule", + "nodeType": "VariableDeclaration", + "scope": 764, + "src": "1910:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 731, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 621, + "src": "1910:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 734, + "name": "module", + "nodeType": "VariableDeclaration", + "scope": 764, + "src": "1929:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 733, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 621, + "src": "1929:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1909:34:6" + }, + "payable": false, + "returnParameters": { + "id": 738, + "nodeType": "ParameterList", + "parameters": [], + "src": "1982:0:6" + }, + "scope": 971, + "src": "1887:299:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 797, + "nodeType": "Block", + "src": "2672:227:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 778, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "2739:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 781, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 779, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2396, + "src": "2747:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2747:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2739:19:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -866,14 +2140,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 937, + "id": 782, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1317:1:9", + "src": "2762:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -881,7 +2155,7 @@ }, "value": "0" }, - "src": "1298:20:9", + "src": "2739:24:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -895,21 +2169,21 @@ "typeString": "bool" } ], - "id": 933, + "id": 777, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1290:7:9", + "referencedDeclaration": 2399, + "src": "2731:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 939, + "id": 784, "isConstant": false, "isLValue": false, "isPure": false, @@ -917,971 +2191,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1290:29:9", + "src": "2731:33:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 940, + "id": 785, "nodeType": "ExpressionStatement", - "src": "1290:29:9" + "src": "2731:33:6" }, { "expression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 945, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1378:17:9", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 942, - "name": "isModule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "1379:8:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 944, - "indexExpression": { - "argumentTypes": null, - "id": 943, - "name": "module", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 928, - "src": "1388:6:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1379:16:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 941, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "1370:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 946, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1370:26:9", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 947, - "nodeType": "ExpressionStatement", - "src": "1370:26:9" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 951, - "name": "module", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 928, - "src": "1419:6:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - ], - "expression": { - "argumentTypes": null, - "id": 948, - "name": "modules", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1406:7:9", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", - "typeString": "contract Module[] storage ref" - } - }, - "id": 950, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "push", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1406:12:9", - "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_Module_$877_$returns$_t_uint256_$", - "typeString": "function (contract Module) returns (uint256)" - } - }, - "id": 952, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1406:20:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 953, - "nodeType": "ExpressionStatement", - "src": "1406:20:9" - }, - { - "expression": { - "argumentTypes": null, - "id": 958, + "id": 795, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 954, - "name": "isModule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "1436:8:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 956, - "indexExpression": { - "argumentTypes": null, - "id": 955, - "name": "module", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 928, - "src": "1445:6:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1436:16:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 957, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1455:4:9", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "1436:23:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 959, - "nodeType": "ExpressionStatement", - "src": "1436:23: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": 961, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 931, - "modifierName": { - "argumentTypes": null, - "id": 930, - "name": "authorized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "1223:10:9", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "1223:10:9" - } - ], - "name": "addModule", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 929, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 928, - "name": "module", - "nodeType": "VariableDeclaration", - "scope": 961, - "src": "1185:13:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - }, - "typeName": { - "contractScope": null, - "id": 927, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "1185:6:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1184:15:9" - }, - "payable": false, - "returnParameters": { - "id": 932, - "nodeType": "ParameterList", - "parameters": [], - "src": "1238:0:9" - }, - "scope": 1142, - "src": "1166:300:9", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1000, - "nodeType": "Block", - "src": "1818:240:9", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - }, - "id": 975, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 971, - "name": "modules", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1900:7:9", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", - "typeString": "contract Module[] storage ref" - } - }, - "id": 973, - "indexExpression": { - "argumentTypes": null, - "id": 972, - "name": "moduleIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "1908:11:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1900:20:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 974, - "name": "module", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 965, - "src": "1924:6:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "src": "1900:30:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 970, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "1892:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 976, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1892:39:9", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 977, - "nodeType": "ExpressionStatement", - "src": "1892:39:9" - }, - { - "expression": { - "argumentTypes": null, - "id": 982, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 978, - "name": "isModule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "1941:8:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 980, - "indexExpression": { - "argumentTypes": null, - "id": 979, - "name": "module", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 965, - "src": "1950:6:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1941:16:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 981, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1960:5:9", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "1941:24:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 983, - "nodeType": "ExpressionStatement", - "src": "1941:24:9" - }, - { - "expression": { - "argumentTypes": null, - "id": 993, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 984, - "name": "modules", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1975:7:9", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", - "typeString": "contract Module[] storage ref" - } - }, - "id": 986, - "indexExpression": { - "argumentTypes": null, - "id": 985, - "name": "moduleIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "1983:11:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1975:20:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 987, - "name": "modules", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1998:7:9", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", - "typeString": "contract Module[] storage ref" - } - }, - "id": 992, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 991, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 988, - "name": "modules", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "2006:7:9", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", - "typeString": "contract Module[] storage ref" - } - }, - "id": 989, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2006:14:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 990, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2023:1:9", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2006:18:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1998:27:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "src": "1975:50:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "id": 994, - "nodeType": "ExpressionStatement", - "src": "1975:50:9" - }, - { - "expression": { - "argumentTypes": null, - "id": 998, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "2035:16:9", - "subExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 995, - "name": "modules", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "2035:7:9", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", - "typeString": "contract Module[] storage ref" - } - }, - "id": 997, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2035:14:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 999, - "nodeType": "ExpressionStatement", - "src": "2035:16:9" - } - ] - }, - "documentation": "@dev Allows to remove a module from the whitelist.\n This can only be done via a Safe transaction.\n @param moduleIndex Array index position of module to be removed from whitelist.\n @param module Module to be removed.", - "id": 1001, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 968, - "modifierName": { - "argumentTypes": null, - "id": 967, - "name": "authorized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "1803:10:9", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "1803:10:9" - } - ], - "name": "removeModule", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 966, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 963, - "name": "moduleIndex", - "nodeType": "VariableDeclaration", - "scope": 1001, - "src": "1744:19:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 962, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1744:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 965, - "name": "module", - "nodeType": "VariableDeclaration", - "scope": 1001, - "src": "1765:13:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - }, - "typeName": { - "contractScope": null, - "id": 964, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "1765:6:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1743:36:9" - }, - "payable": false, - "returnParameters": { - "id": 969, - "nodeType": "ParameterList", - "parameters": [], - "src": "1818:0:9" - }, - "scope": 1142, - "src": "1722:336:9", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1032, - "nodeType": "Block", - "src": "2532:223:9", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1015, - "name": "isModule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "2599:8:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1018, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1016, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "2608:3:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1017, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2608:10:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2599:20:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1014, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "2591:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1019, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2591:29:9", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1020, - "nodeType": "ExpressionStatement", - "src": "2591:29:9" - }, - { - "expression": { - "argumentTypes": null, - "id": 1030, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1021, + "id": 786, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1012, - "src": "2692:7:9", + "referencedDeclaration": 775, + "src": "2836:7:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1894,12 +2229,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1023, + "id": 788, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1003, - "src": "2710:2:9", + "referencedDeclaration": 766, + "src": "2854:2:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1907,12 +2242,12 @@ }, { "argumentTypes": null, - "id": 1024, + "id": 789, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1005, - "src": "2714:5:9", + "referencedDeclaration": 768, + "src": "2858:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1920,12 +2255,12 @@ }, { "argumentTypes": null, - "id": 1025, + "id": 790, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1007, - "src": "2721:4:9", + "referencedDeclaration": 770, + "src": "2865:4:6", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1933,14 +2268,14 @@ }, { "argumentTypes": null, - "id": 1026, + "id": 791, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1009, - "src": "2727:9:9", + "referencedDeclaration": 772, + "src": "2871:9:6", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -1949,18 +2284,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1027, + "id": 792, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "2738:7:9", + "referencedDeclaration": 2389, + "src": "2882:7:6", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1028, + "id": 793, "isConstant": false, "isLValue": false, "isPure": false, @@ -1968,7 +2303,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2738:9:9", + "src": "2882:9:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1990,7 +2325,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { @@ -1998,18 +2333,18 @@ "typeString": "uint256" } ], - "id": 1022, + "id": 787, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1095, - "src": "2702:7:9", + "referencedDeclaration": 860, + "src": "2846:7:6", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 1029, + "id": 794, "isConstant": false, "isLValue": false, "isPure": false, @@ -2017,43 +2352,43 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2702:46:9", + "src": "2846:46:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2692:56:9", + "src": "2836:56:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1031, + "id": 796, "nodeType": "ExpressionStatement", - "src": "2692:56:9" + "src": "2836:56:6" } ] }, "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": 1033, + "id": 798, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "executeModule", + "name": "execTransactionFromModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 1010, + "id": 773, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1003, + "id": 766, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1033, - "src": "2417:10:9", + "scope": 798, + "src": "2557:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2061,10 +2396,10 @@ "typeString": "address" }, "typeName": { - "id": 1002, + "id": 765, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2417:7:9", + "src": "2557:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2075,11 +2410,11 @@ }, { "constant": false, - "id": 1005, + "id": 768, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1033, - "src": "2429:13:9", + "scope": 798, + "src": "2569:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2087,10 +2422,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1004, + "id": 767, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2429:7:9", + "src": "2569:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2101,11 +2436,11 @@ }, { "constant": false, - "id": 1007, + "id": 770, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1033, - "src": "2444:10:9", + "scope": 798, + "src": "2584:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2113,10 +2448,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1006, + "id": 769, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2444:5:9", + "src": "2584:5:6", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2127,26 +2462,26 @@ }, { "constant": false, - "id": 1009, + "id": 772, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 1033, - "src": "2456:24:9", + "scope": 798, + "src": "2596:24:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 1008, + "id": 771, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "2456:14:9", + "referencedDeclaration": 5, + "src": "2596:14:6", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -2154,20 +2489,20 @@ "visibility": "internal" } ], - "src": "2416:65:9" + "src": "2556:65:6" }, "payable": false, "returnParameters": { - "id": 1013, + "id": 776, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1012, + "id": 775, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1033, - "src": "2514:12:9", + "scope": 798, + "src": "2654:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2175,10 +2510,10 @@ "typeString": "bool" }, "typeName": { - "id": 1011, + "id": 774, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2514:4:9", + "src": "2654:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2188,42 +2523,42 @@ "visibility": "internal" } ], - "src": "2513:14:9" + "src": "2653:14:6" }, - "scope": 1142, - "src": "2394:361:9", + "scope": 971, + "src": "2522:377:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1094, + "id": 859, "nodeType": "Block", - "src": "2910:399:9", + "src": "3054:399:6", "statements": [ { "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, - "id": 1052, + "id": 817, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1048, + "id": 813, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1041, - "src": "2924:9:9", + "referencedDeclaration": 806, + "src": "3068:9:6", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -2235,32 +2570,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1049, + "id": 814, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 30, - "src": "2937:4:9", + "referencedDeclaration": 6, + "src": "3081:4:6", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", "typeString": "type(contract Enum)" } }, - "id": 1050, + "id": 815, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "2937:14:9", + "referencedDeclaration": 5, + "src": "3081:14:6", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 1051, + "id": 816, "isConstant": false, "isLValue": false, "isPure": true, @@ -2268,13 +2603,13 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2937:19:9", + "src": "3081:19:6", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, - "src": "2924:32:9", + "src": "3068:32:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2284,24 +2619,24 @@ "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, - "id": 1066, + "id": 831, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1062, + "id": 827, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1041, - "src": "3034:9:9", + "referencedDeclaration": 806, + "src": "3178:9:6", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -2313,32 +2648,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1063, + "id": 828, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 30, - "src": "3047:4:9", + "referencedDeclaration": 6, + "src": "3191:4:6", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", "typeString": "type(contract Enum)" } }, - "id": 1064, + "id": 829, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "3047:14:9", + "referencedDeclaration": 5, + "src": "3191:14:6", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 1065, + "id": 830, "isConstant": false, "isLValue": false, "isPure": true, @@ -2346,35 +2681,35 @@ "memberName": "DelegateCall", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3047:27:9", + "src": "3191:27:6", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, - "src": "3034:40:9", + "src": "3178:40:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 1091, + "id": 856, "nodeType": "Block", - "src": "3149:154:9", + "src": "3293:154:6", "statements": [ { "assignments": [ - 1076 + 841 ], "declarations": [ { "constant": false, - "id": 1076, + "id": 841, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 1095, - "src": "3163:19:9", + "scope": 860, + "src": "3307:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2382,10 +2717,10 @@ "typeString": "address" }, "typeName": { - "id": 1075, + "id": 840, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3163:7:9", + "src": "3307:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2395,18 +2730,18 @@ "visibility": "internal" } ], - "id": 1080, + "id": 845, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1078, + "id": 843, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1039, - "src": "3199:4:9", + "referencedDeclaration": 804, + "src": "3343:4:6", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2420,18 +2755,18 @@ "typeString": "bytes memory" } ], - "id": 1077, + "id": 842, "name": "executeCreate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1132, - "src": "3185:13:9", + "referencedDeclaration": 897, + "src": "3329:13:6", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", "typeString": "function (bytes memory) returns (address)" } }, - "id": 1079, + "id": 844, "isConstant": false, "isLValue": false, "isPure": false, @@ -2439,31 +2774,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3185:19:9", + "src": "3329:19:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3163:41:9" + "src": "3307:41:6" }, { "expression": { "argumentTypes": null, - "id": 1085, + "id": 850, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1081, + "id": 846, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1046, - "src": "3218:7:9", + "referencedDeclaration": 811, + "src": "3362:7:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2477,19 +2812,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1084, + "id": 849, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1082, + "id": 847, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1076, - "src": "3228:11:9", + "referencedDeclaration": 841, + "src": "3372:11:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2500,14 +2835,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1083, + "id": 848, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3243:1:9", + "src": "3387:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2515,21 +2850,21 @@ }, "value": "0" }, - "src": "3228:16:9", + "src": "3372:16:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3218:26:9", + "src": "3362:26:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1086, + "id": 851, "nodeType": "ExpressionStatement", - "src": "3218:26:9" + "src": "3362:26:6" }, { "eventCall": { @@ -2537,12 +2872,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1088, + "id": 853, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1076, - "src": "3280:11:9", + "referencedDeclaration": 841, + "src": "3424:11:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2556,18 +2891,18 @@ "typeString": "address" } ], - "id": 1087, + "id": 852, "name": "ContractCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 888, - "src": "3263:16:9", + "referencedDeclaration": 632, + "src": "3407:16:6", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 1089, + "id": 854, "isConstant": false, "isLValue": false, "isPure": false, @@ -2575,37 +2910,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3263:29:9", + "src": "3407:29:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1090, + "id": 855, "nodeType": "EmitStatement", - "src": "3258:34:9" + "src": "3402:34:6" } ] }, - "id": 1092, + "id": 857, "nodeType": "IfStatement", - "src": "3030:273:9", + "src": "3174:273:6", "trueBody": { "expression": { "argumentTypes": null, - "id": 1073, + "id": 838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1067, + "id": 832, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1046, - "src": "3088:7:9", + "referencedDeclaration": 811, + "src": "3232:7:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2618,12 +2953,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1069, + "id": 834, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1035, - "src": "3118:2:9", + "referencedDeclaration": 800, + "src": "3262:2:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2631,12 +2966,12 @@ }, { "argumentTypes": null, - "id": 1070, + "id": 835, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1039, - "src": "3122:4:9", + "referencedDeclaration": 804, + "src": "3266:4:6", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2644,12 +2979,12 @@ }, { "argumentTypes": null, - "id": 1071, + "id": 836, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1043, - "src": "3128:5:9", + "referencedDeclaration": 808, + "src": "3272:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2671,18 +3006,18 @@ "typeString": "uint256" } ], - "id": 1068, + "id": 833, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1123, - "src": "3098:19:9", + "referencedDeclaration": 888, + "src": "3242:19:6", "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": 1072, + "id": 837, "isConstant": false, "isLValue": false, "isPure": false, @@ -2690,42 +3025,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3098:36:9", + "src": "3242:36:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3088:46:9", + "src": "3232:46:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1074, + "id": 839, "nodeType": "ExpressionStatement", - "src": "3088:46:9" + "src": "3232:46:6" } }, - "id": 1093, + "id": 858, "nodeType": "IfStatement", - "src": "2920:383:9", + "src": "3064:383:6", "trueBody": { "expression": { "argumentTypes": null, - "id": 1060, + "id": 825, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1053, + "id": 818, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1046, - "src": "2970:7:9", + "referencedDeclaration": 811, + "src": "3114:7:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2738,12 +3073,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1055, + "id": 820, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1035, - "src": "2992:2:9", + "referencedDeclaration": 800, + "src": "3136:2:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2751,12 +3086,12 @@ }, { "argumentTypes": null, - "id": 1056, + "id": 821, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "2996:5:9", + "referencedDeclaration": 802, + "src": "3140:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2764,12 +3099,12 @@ }, { "argumentTypes": null, - "id": 1057, + "id": 822, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1039, - "src": "3003:4:9", + "referencedDeclaration": 804, + "src": "3147:4:6", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2777,12 +3112,12 @@ }, { "argumentTypes": null, - "id": 1058, + "id": 823, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1043, - "src": "3009:5:9", + "referencedDeclaration": 808, + "src": "3153:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2808,18 +3143,18 @@ "typeString": "uint256" } ], - "id": 1054, + "id": 819, "name": "executeCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "2980:11:9", + "referencedDeclaration": 875, + "src": "3124:11:6", "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": 1059, + "id": 824, "isConstant": false, "isLValue": false, "isPure": false, @@ -2827,27 +3162,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2980:35:9", + "src": "3124:35:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2970:45:9", + "src": "3114:45:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1061, + "id": 826, "nodeType": "ExpressionStatement", - "src": "2970:45:9" + "src": "3114:45:6" } } ] }, "documentation": null, - "id": 1095, + "id": 860, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2855,16 +3190,16 @@ "name": "execute", "nodeType": "FunctionDefinition", "parameters": { - "id": 1044, + "id": 809, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1035, + "id": 800, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1095, - "src": "2778:10:9", + "scope": 860, + "src": "2922:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2872,10 +3207,10 @@ "typeString": "address" }, "typeName": { - "id": 1034, + "id": 799, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2778:7:9", + "src": "2922:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2886,11 +3221,11 @@ }, { "constant": false, - "id": 1037, + "id": 802, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1095, - "src": "2790:13:9", + "scope": 860, + "src": "2934:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2898,10 +3233,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1036, + "id": 801, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2790:7:9", + "src": "2934:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2912,11 +3247,11 @@ }, { "constant": false, - "id": 1039, + "id": 804, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1095, - "src": "2805:10:9", + "scope": 860, + "src": "2949:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2924,10 +3259,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1038, + "id": 803, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2805:5:9", + "src": "2949:5:6", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2938,26 +3273,26 @@ }, { "constant": false, - "id": 1041, + "id": 806, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 1095, - "src": "2817:24:9", + "scope": 860, + "src": "2961:24:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 1040, + "id": 805, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "2817:14:9", + "referencedDeclaration": 5, + "src": "2961:14:6", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -2966,11 +3301,11 @@ }, { "constant": false, - "id": 1043, + "id": 808, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 1095, - "src": "2843:13:9", + "scope": 860, + "src": "2987:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2978,10 +3313,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1042, + "id": 807, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2843:7:9", + "src": "2987:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2991,20 +3326,20 @@ "visibility": "internal" } ], - "src": "2777:80:9" + "src": "2921:80:6" }, "payable": false, "returnParameters": { - "id": 1047, + "id": 812, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1046, + "id": 811, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1095, - "src": "2892:12:9", + "scope": 860, + "src": "3036:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3012,10 +3347,10 @@ "typeString": "bool" }, "typeName": { - "id": 1045, + "id": 810, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2892:4:9", + "src": "3036:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3025,86 +3360,86 @@ "visibility": "internal" } ], - "src": "2891:14:9" + "src": "3035:14:6" }, - "scope": 1142, - "src": "2761:548:9", + "scope": 971, + "src": "2905:548:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1109, + "id": 874, "nodeType": "Block", - "src": "3442:182:9", + "src": "3586:182:6", "statements": [ { "externalReferences": [ { "data": { - "declaration": 1101, + "declaration": 866, "isOffset": false, "isSlot": false, - "src": "3596:4:9", + "src": "3740:4:6", "valueSize": 1 } }, { "data": { - "declaration": 1101, + "declaration": 866, "isOffset": false, "isSlot": false, - "src": "3577:4:9", + "src": "3721:4:6", "valueSize": 1 } }, { "success": { - "declaration": 1106, + "declaration": 871, "isOffset": false, "isSlot": false, - "src": "3539:7:9", + "src": "3683:7:6", "valueSize": 1 } }, { "txGas": { - "declaration": 1103, + "declaration": 868, "isOffset": false, "isSlot": false, - "src": "3555:5:9", + "src": "3699:5:6", "valueSize": 1 } }, { "to": { - "declaration": 1097, + "declaration": 862, "isOffset": false, "isSlot": false, - "src": "3562:2:9", + "src": "3706:2:6", "valueSize": 1 } }, { "value": { - "declaration": 1099, + "declaration": 864, "isOffset": false, "isSlot": false, - "src": "3566:5:9", + "src": "3710:5:6", "valueSize": 1 } } ], - "id": 1108, + "id": 873, "nodeType": "InlineAssembly", "operations": "{\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3516:108:9" + "src": "3660:108:6" } ] }, "documentation": null, - "id": 1110, + "id": 875, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3112,16 +3447,16 @@ "name": "executeCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 1104, + "id": 869, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1097, + "id": 862, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1110, - "src": "3336:10:9", + "scope": 875, + "src": "3480:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3129,10 +3464,10 @@ "typeString": "address" }, "typeName": { - "id": 1096, + "id": 861, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3336:7:9", + "src": "3480:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3143,11 +3478,11 @@ }, { "constant": false, - "id": 1099, + "id": 864, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1110, - "src": "3348:13:9", + "scope": 875, + "src": "3492:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3155,10 +3490,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1098, + "id": 863, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3348:7:9", + "src": "3492:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3169,11 +3504,11 @@ }, { "constant": false, - "id": 1101, + "id": 866, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1110, - "src": "3363:10:9", + "scope": 875, + "src": "3507:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3181,10 +3516,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1100, + "id": 865, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3363:5:9", + "src": "3507:5:6", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3195,11 +3530,11 @@ }, { "constant": false, - "id": 1103, + "id": 868, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 1110, - "src": "3375:13:9", + "scope": 875, + "src": "3519:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3207,10 +3542,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1102, + "id": 867, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3375:7:9", + "src": "3519:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3220,20 +3555,20 @@ "visibility": "internal" } ], - "src": "3335:54:9" + "src": "3479:54:6" }, "payable": false, "returnParameters": { - "id": 1107, + "id": 872, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1106, + "id": 871, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1110, - "src": "3424:12:9", + "scope": 875, + "src": "3568:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3241,10 +3576,10 @@ "typeString": "bool" }, "typeName": { - "id": 1105, + "id": 870, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3424:4:9", + "src": "3568:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3254,77 +3589,77 @@ "visibility": "internal" } ], - "src": "3423:14:9" + "src": "3567:14:6" }, - "scope": 1142, - "src": "3315:309:9", + "scope": 971, + "src": "3459:309:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1122, + "id": 887, "nodeType": "Block", - "src": "3750:183:9", + "src": "3894:183:6", "statements": [ { "externalReferences": [ { "data": { - "declaration": 1114, + "declaration": 879, "isOffset": false, "isSlot": false, - "src": "3905:4:9", + "src": "4049:4:6", "valueSize": 1 } }, { "data": { - "declaration": 1114, + "declaration": 879, "isOffset": false, "isSlot": false, - "src": "3886:4:9", + "src": "4030:4:6", "valueSize": 1 } }, { "success": { - "declaration": 1119, + "declaration": 884, "isOffset": false, "isSlot": false, - "src": "3847:7:9", + "src": "3991:7:6", "valueSize": 1 } }, { "txGas": { - "declaration": 1116, + "declaration": 881, "isOffset": false, "isSlot": false, - "src": "3871:5:9", + "src": "4015:5:6", "valueSize": 1 } }, { "to": { - "declaration": 1112, + "declaration": 877, "isOffset": false, "isSlot": false, - "src": "3878:2:9", + "src": "4022:2:6", "valueSize": 1 } } ], - "id": 1121, + "id": 886, "nodeType": "InlineAssembly", "operations": "{\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3824:109:9" + "src": "3968:109:6" } ] }, "documentation": null, - "id": 1123, + "id": 888, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3332,16 +3667,16 @@ "name": "executeDelegateCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 1117, + "id": 882, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1112, + "id": 877, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1123, - "src": "3659:10:9", + "scope": 888, + "src": "3803:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3349,10 +3684,10 @@ "typeString": "address" }, "typeName": { - "id": 1111, + "id": 876, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3659:7:9", + "src": "3803:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3363,11 +3698,11 @@ }, { "constant": false, - "id": 1114, + "id": 879, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1123, - "src": "3671:10:9", + "scope": 888, + "src": "3815:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3375,10 +3710,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1113, + "id": 878, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3671:5:9", + "src": "3815:5:6", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3389,11 +3724,11 @@ }, { "constant": false, - "id": 1116, + "id": 881, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 1123, - "src": "3683:13:9", + "scope": 888, + "src": "3827:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3401,10 +3736,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1115, + "id": 880, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3683:7:9", + "src": "3827:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3414,20 +3749,20 @@ "visibility": "internal" } ], - "src": "3658:39:9" + "src": "3802:39:6" }, "payable": false, "returnParameters": { - "id": 1120, + "id": 885, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1119, + "id": 884, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1123, - "src": "3732:12:9", + "scope": 888, + "src": "3876:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3435,10 +3770,10 @@ "typeString": "bool" }, "typeName": { - "id": 1118, + "id": 883, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3732:4:9", + "src": "3876:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3448,59 +3783,59 @@ "visibility": "internal" } ], - "src": "3731:14:9" + "src": "3875:14:6" }, - "scope": 1142, - "src": "3630:303:9", + "scope": 971, + "src": "3774:303:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1131, + "id": 896, "nodeType": "Block", - "src": "4033:167:9", + "src": "4177:167:6", "statements": [ { "externalReferences": [ { "newContract": { - "declaration": 1128, + "declaration": 893, "isOffset": false, "isSlot": false, - "src": "4130:11:9", + "src": "4274:11:6", "valueSize": 1 } }, { "data": { - "declaration": 1125, + "declaration": 890, "isOffset": false, "isSlot": false, - "src": "4159:4:9", + "src": "4303:4:6", "valueSize": 1 } }, { "data": { - "declaration": 1125, + "declaration": 890, "isOffset": false, "isSlot": false, - "src": "4178:4:9", + "src": "4322:4:6", "valueSize": 1 } } ], - "id": 1130, + "id": 895, "nodeType": "InlineAssembly", "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", - "src": "4107:93:9" + "src": "4251:93:6" } ] }, "documentation": null, - "id": 1132, + "id": 897, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3508,16 +3843,16 @@ "name": "executeCreate", "nodeType": "FunctionDefinition", "parameters": { - "id": 1126, + "id": 891, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1125, + "id": 890, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1132, - "src": "3962:10:9", + "scope": 897, + "src": "4106:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3525,10 +3860,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1124, + "id": 889, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3962:5:9", + "src": "4106:5:6", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3538,20 +3873,20 @@ "visibility": "internal" } ], - "src": "3961:12:9" + "src": "4105:12:6" }, "payable": false, "returnParameters": { - "id": 1129, + "id": 894, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1128, + "id": 893, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 1132, - "src": "4008:19:9", + "scope": 897, + "src": "4152:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3559,10 +3894,10 @@ "typeString": "address" }, "typeName": { - "id": 1127, + "id": 892, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4008:7:9", + "src": "4152:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3572,43 +3907,814 @@ "visibility": "internal" } ], - "src": "4007:21:9" + "src": "4151:21:6" }, - "scope": 1142, - "src": "3939:261:9", + "scope": 971, + "src": "4083:261:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1140, + "id": 969, "nodeType": "Block", - "src": "4360:31:9", + "src": "4505:656:6", "statements": [ + { + "assignments": [ + 904 + ], + "declarations": [ + { + "constant": false, + "id": 904, + "name": "moduleCount", + "nodeType": "VariableDeclaration", + "scope": 970, + "src": "4549:19:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 903, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4549:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 906, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 905, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4571:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4549:23:6" + }, + { + "assignments": [ + 908 + ], + "declarations": [ + { + "constant": false, + "id": 908, + "name": "currentModule", + "nodeType": "VariableDeclaration", + "scope": 970, + "src": "4582:21:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 907, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4582:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 912, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 909, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "4606:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 911, + "indexExpression": { + "argumentTypes": null, + "id": 910, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "4614:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4606:25:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4582:49:6" + }, + { + "body": { + "id": 925, + "nodeType": "Block", + "src": "4682:91:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 916, + "name": "currentModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "4696:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 917, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "4712:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 919, + "indexExpression": { + "argumentTypes": null, + "id": 918, + "name": "currentModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "4720:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4712:22:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4696:38:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 921, + "nodeType": "ExpressionStatement", + "src": "4696:38:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4748:14:6", + "subExpression": { + "argumentTypes": null, + "id": 922, + "name": "moduleCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "4748:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 924, + "nodeType": "ExpressionStatement", + "src": "4748:14:6" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 913, + "name": "currentModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "4647:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 914, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "4664:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4647:33:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 926, + "nodeType": "WhileStatement", + "src": "4641:132:6" + }, + { + "assignments": [ + 930 + ], + "declarations": [ + { + "constant": false, + "id": 930, + "name": "array", + "nodeType": "VariableDeclaration", + "scope": 970, + "src": "4782:22:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 928, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4782:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 929, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4782:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 936, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 934, + "name": "moduleCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "4821:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 933, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "4807:13:6", + "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": 931, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4811:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 932, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4811:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + } + }, + "id": 935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4807:26:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4782:51:6" + }, { "expression": { "argumentTypes": null, - "id": 1138, - "name": "modules", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "4377:7:9", + "id": 939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 937, + "name": "moduleCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "4877:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 938, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4891:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4877:15:6", "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", - "typeString": "contract Module[] storage ref" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "functionReturnParameters": 1137, - "id": 1139, + "id": 940, + "nodeType": "ExpressionStatement", + "src": "4877:15:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 941, + "name": "currentModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "4902:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 942, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "4918:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 944, + "indexExpression": { + "argumentTypes": null, + "id": 943, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "4926:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4918:25:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4902:41:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 946, + "nodeType": "ExpressionStatement", + "src": "4902:41:6" + }, + { + "body": { + "id": 965, + "nodeType": "Block", + "src": "4994:139:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 950, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 930, + "src": "5008:5:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 952, + "indexExpression": { + "argumentTypes": null, + "id": 951, + "name": "moduleCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "5014:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5008:18:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 953, + "name": "currentModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "5029:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5008:34:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 955, + "nodeType": "ExpressionStatement", + "src": "5008:34:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 956, + "name": "currentModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "5056:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 957, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "5072:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 959, + "indexExpression": { + "argumentTypes": null, + "id": 958, + "name": "currentModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "5080:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5072:22:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5056:38:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 961, + "nodeType": "ExpressionStatement", + "src": "5056:38:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "5108:14:6", + "subExpression": { + "argumentTypes": null, + "id": 962, + "name": "moduleCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "5108:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 964, + "nodeType": "ExpressionStatement", + "src": "5108:14:6" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 947, + "name": "currentModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "4959:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 948, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "4976:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4959:33:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 966, + "nodeType": "WhileStatement", + "src": "4953:180:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 967, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 930, + "src": "5149:5:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "functionReturnParameters": 902, + "id": 968, "nodeType": "Return", - "src": "4370:14:9" + "src": "5142:12:6" } ] }, "documentation": "@dev Returns array of modules.\n @return Array of modules.", - "id": 1141, + "id": 970, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3616,120 +4722,118 @@ "name": "getModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 1133, + "id": 898, "nodeType": "ParameterList", "parameters": [], - "src": "4298:2:9" + "src": "4442:2:6" }, "payable": false, "returnParameters": { - "id": 1137, + "id": 902, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1136, + "id": 901, "name": "", "nodeType": "VariableDeclaration", - "scope": 1141, - "src": "4346:8:9", + "scope": 970, + "src": "4490:9:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_memory_ptr", - "typeString": "contract Module[]" + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" }, "typeName": { "baseType": { - "contractScope": null, - "id": 1134, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "4346:6:9", + "id": 899, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4490:7:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1135, + "id": 900, "length": null, "nodeType": "ArrayTypeName", - "src": "4346:8:9", + "src": "4490:9:6", "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage_ptr", - "typeString": "contract Module[]" + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], - "src": "4345:10:9" + "src": "4489:11:6" }, - "scope": 1142, - "src": "4279:112:9", + "scope": 971, + "src": "4423:738:6", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1143, - "src": "303:4090:9" + "scope": 972, + "src": "303:4860:6" } ], - "src": "0:4394:9" + "src": "0:5164:6" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "exportedSymbols": { "ModuleManager": [ - 1142 + 971 ] }, - "id": 1143, + "id": 972, "nodeType": "SourceUnit", "nodes": [ { - "id": 879, + "id": 623, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:9" + "src": "0:23:6" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 880, + "id": 624, "nodeType": "ImportDirective", - "scope": 1143, - "sourceUnit": 878, - "src": "24:22:9", + "scope": 972, + "sourceUnit": 622, + "src": "24:22:6", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 881, + "id": 625, "nodeType": "ImportDirective", - "scope": 1143, - "sourceUnit": 780, - "src": "47:26:9", + "scope": 972, + "sourceUnit": 581, + "src": "47:26:6", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "./Enum.sol", - "id": 882, + "id": 626, "nodeType": "ImportDirective", - "scope": 1143, - "sourceUnit": 31, - "src": "74:20:9", + "scope": 972, + "sourceUnit": 7, + "src": "74:20:6", "symbolAliases": [], "unitAlias": "" }, @@ -3739,31 +4843,31 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 883, + "id": 627, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1559, - "src": "329:14:9", + "referencedDeclaration": 1359, + "src": "329:14:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeIdentifier": "t_contract$_SelfAuthorized_$1359", "typeString": "contract SelfAuthorized" } }, - "id": 884, + "id": 628, "nodeType": "InheritanceSpecifier", - "src": "329:14:9" + "src": "329:14:6" } ], "contractDependencies": [ - 1559 + 1359 ], "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": 1142, + "id": 971, "linearizedBaseContracts": [ - 1142, - 1559 + 971, + 1359 ], "name": "ModuleManager", "nodeType": "ContractDefinition", @@ -3771,21 +4875,21 @@ { "anonymous": false, "documentation": null, - "id": 888, + "id": 632, "name": "ContractCreation", "nodeType": "EventDefinition", "parameters": { - "id": 887, + "id": 631, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 886, + "id": 630, "indexed": false, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "374:19:9", + "scope": 632, + "src": "374:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3793,10 +4897,10 @@ "typeString": "address" }, "typeName": { - "id": 885, + "id": 629, "name": "address", "nodeType": "ElementaryTypeName", - "src": "374:7:9", + "src": "374:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3806,17 +4910,17 @@ "visibility": "internal" } ], - "src": "373:21:9" + "src": "373:21:6" }, - "src": "351:44:9" + "src": "351:44:6" }, { "constant": true, - "id": 891, + "id": 635, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1142, - "src": "401:46:9", + "scope": 971, + "src": "401:46:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3824,10 +4928,10 @@ "typeString": "string" }, "typeName": { - "id": 889, + "id": 633, "name": "string", "nodeType": "ElementaryTypeName", - "src": "401:6:9", + "src": "401:6:6", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3836,14 +4940,14 @@ "value": { "argumentTypes": null, "hexValue": "4d6f64756c65204d616e61676572", - "id": 890, + "id": 634, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "431:16:9", + "src": "431:16:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_12aaa44a1bae367a1e1d9881f5d80283afded6373c2a1ca586db420944084efb", @@ -3855,11 +4959,11 @@ }, { "constant": true, - "id": 894, + "id": 638, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1142, - "src": "453:40:9", + "scope": 971, + "src": "453:40:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3867,10 +4971,10 @@ "typeString": "string" }, "typeName": { - "id": 892, + "id": 636, "name": "string", "nodeType": "ElementaryTypeName", - "src": "453:6:9", + "src": "453:6:6", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3879,14 +4983,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 893, + "id": 637, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "486:7:9", + "src": "486:7:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -3897,97 +5001,140 @@ "visibility": "public" }, { - "constant": false, - "id": 897, - "name": "modules", + "constant": true, + "id": 643, + "name": "SENTINEL_MODULES", "nodeType": "VariableDeclaration", - "scope": 1142, - "src": "500:23:9", + "scope": 971, + "src": "499:55:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", - "typeString": "contract Module[]" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "baseType": { - "contractScope": null, - "id": 895, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "500:6:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "id": 896, - "length": null, - "nodeType": "ArrayTypeName", - "src": "500:8:9", + "id": 639, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "499:7:6", "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage_ptr", - "typeString": "contract Module[]" + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "307831", + "id": 641, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "550:3:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "0x1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 640, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "542:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "542:12:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - "value": null, "visibility": "public" }, { "constant": false, - "id": 901, - "name": "isModule", + "id": 647, + "name": "modules", "nodeType": "VariableDeclaration", - "scope": 1142, - "src": "599:41:9", + "scope": 971, + "src": "561:45:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" }, "typeName": { - "id": 900, + "id": 646, "keyType": { - "id": 898, + "id": 644, "name": "address", "nodeType": "ElementaryTypeName", - "src": "608:7:9", + "src": "570:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "599:25:9", + "src": "561:28:6", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" }, "valueType": { - "id": 899, - "name": "bool", + "id": 645, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "619:4:9", + "src": "581:7:6", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } } }, "value": null, - "visibility": "public" + "visibility": "internal" }, { "body": { - "id": 904, + "id": 650, "nodeType": "Block", - "src": "755:8:9", + "src": "721:8:6", "statements": [] }, "documentation": "@dev Fallback function accepts Ether transactions.", - "id": 905, + "id": 651, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3995,317 +5142,29 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 902, + "id": 648, "nodeType": "ParameterList", "parameters": [], - "src": "715:2:9" + "src": "681:2:6" }, "payable": true, "returnParameters": { - "id": 903, + "id": 649, "nodeType": "ParameterList", "parameters": [], - "src": "755:0:9" + "src": "721:0:6" }, - "scope": 1142, - "src": "706:57:9", + "scope": 971, + "src": "672:57:6", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 925, + "id": 685, "nodeType": "Block", - "src": "836:163:9", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 914, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 912, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 907, - "src": "850:2:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 913, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "856:1:9", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "850:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 924, - "nodeType": "IfStatement", - "src": "846:146:9", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 917, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 907, - "src": "971:2:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 918, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 909, - "src": "975:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 919, - "name": "gasleft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "981:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 920, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "981:9:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 916, - "name": "executeDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1123, - "src": "951: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": 921, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "951:40:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 915, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "943:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 922, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "943:49:9", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 923, - "nodeType": "ExpressionStatement", - "src": "943:49:9" - } - } - ] - }, - "documentation": null, - "id": 926, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setupModules", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 910, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 907, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 926, - "src": "791:10:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 906, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "791:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 909, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 926, - "src": "803:10:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 908, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "803:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "790:24:9" - }, - "payable": false, - "returnParameters": { - "id": 911, - "nodeType": "ParameterList", - "parameters": [], - "src": "836:0:9" - }, - "scope": 1142, - "src": "769:230:9", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 960, - "nodeType": "Block", - "src": "1238:228:9", + "src": "802:266:6", "statements": [ { "expression": { @@ -4317,24 +5176,1160 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 938, + "id": 663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 659, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "820:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 661, + "indexExpression": { + "argumentTypes": null, + "id": 660, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "828:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "820:25:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "849:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "820:30:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 658, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "812:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "812:39:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 665, + "nodeType": "ExpressionStatement", + "src": "812:39:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 666, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "861:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 668, + "indexExpression": { + "argumentTypes": null, + "id": 667, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "869:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "861:25:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 669, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "889:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "861:44:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 671, + "nodeType": "ExpressionStatement", + "src": "861:44:6" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 672, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 653, + "src": "919:2:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 673, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "925:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "919:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 684, + "nodeType": "IfStatement", + "src": "915:146:6", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 935, + "id": 677, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 653, + "src": "1040:2:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 678, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 655, + "src": "1044:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 679, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2389, + "src": "1050:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1050:9:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 676, + "name": "executeDelegateCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 888, + "src": "1020:19:6", + "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": 681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1020:40:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 675, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "1012:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1012:49:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 683, + "nodeType": "ExpressionStatement", + "src": "1012:49:6" + } + } + ] + }, + "documentation": null, + "id": 686, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setupModules", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 656, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 653, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 686, + "src": "757:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 652, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "757:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 655, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 686, + "src": "769:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 654, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "769:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "756:24:6" + }, + "payable": false, + "returnParameters": { + "id": 657, + "nodeType": "ParameterList", + "parameters": [], + "src": "802:0:6" + }, + "scope": 971, + "src": "735:333:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 729, + "nodeType": "Block", + "src": "1310:316:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 695, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 688, + "src": "1390:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + ], + "id": 694, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1382:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1382:15:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1401:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1382:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 700, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 688, + "src": "1414:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + ], + "id": 699, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1406:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1406:15:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 702, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "1425:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1406:35:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1382:59:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 693, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "1374:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1374:68:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 706, + "nodeType": "ExpressionStatement", + "src": "1374:68:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 708, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "1501:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 710, + "indexExpression": { + "argumentTypes": null, + "id": 709, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 688, + "src": "1509:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1501:15:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1520:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1501:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 707, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "1493:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1493:29:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 714, + "nodeType": "ExpressionStatement", + "src": "1493:29:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 715, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "1532:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 717, + "indexExpression": { + "argumentTypes": null, + "id": 716, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 688, + "src": "1540:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1532:15:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 718, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "1550:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 720, + "indexExpression": { + "argumentTypes": null, + "id": 719, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "1558:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1550:25:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1532:43:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 722, + "nodeType": "ExpressionStatement", + "src": "1532:43:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 723, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "1585:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 725, + "indexExpression": { + "argumentTypes": null, + "id": 724, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "1593:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1585:25:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 726, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 688, + "src": "1613:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "src": "1585:34:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 728, + "nodeType": "ExpressionStatement", + "src": "1585:34:6" + } + ] + }, + "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": 730, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 691, + "modifierName": { + "argumentTypes": null, + "id": 690, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "1295:10:6", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1295:10:6" + } + ], + "name": "enableModule", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 688, + "name": "module", + "nodeType": "VariableDeclaration", + "scope": 730, + "src": "1257:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 687, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 621, + "src": "1257:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1256:15:6" + }, + "payable": false, + "returnParameters": { + "id": 692, + "nodeType": "ParameterList", + "parameters": [], + "src": "1310:0:6" + }, + "scope": 971, + "src": "1235:391:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 763, + "nodeType": "Block", + "src": "1982:204:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 740, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "2064:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 742, + "indexExpression": { + "argumentTypes": null, + "id": 741, + "name": "prevModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 732, + "src": "2072:10:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2064:19:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 744, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 928, - "src": "1306:6:9", + "referencedDeclaration": 734, + "src": "2095:6:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", + "typeIdentifier": "t_contract$_Module_$621", "typeString": "contract Module" } } @@ -4342,24 +6337,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$877", + "typeIdentifier": "t_contract$_Module_$621", "typeString": "contract Module" } ], - "id": 934, + "id": 743, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1298:7:9", + "src": "2087:7:6", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 936, + "id": 745, "isConstant": false, "isLValue": false, "isPure": false, @@ -4367,7 +6362,414 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1298:15:9", + "src": "2087:15:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2064:38:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 739, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "2056:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2056:47:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 748, + "nodeType": "ExpressionStatement", + "src": "2056:47:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 749, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "2113:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 751, + "indexExpression": { + "argumentTypes": null, + "id": 750, + "name": "prevModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 732, + "src": "2121:10:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2113:19:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 752, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "2135:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 754, + "indexExpression": { + "argumentTypes": null, + "id": 753, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 734, + "src": "2143:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2135:15:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2113:37:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 756, + "nodeType": "ExpressionStatement", + "src": "2113:37:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 757, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "2160:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 759, + "indexExpression": { + "argumentTypes": null, + "id": 758, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 734, + "src": "2168:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2160:15:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2178:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2160:19:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 762, + "nodeType": "ExpressionStatement", + "src": "2160:19:6" + } + ] + }, + "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": 764, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 737, + "modifierName": { + "argumentTypes": null, + "id": 736, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "1967:10:6", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1967:10:6" + } + ], + "name": "disableModule", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 735, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 732, + "name": "prevModule", + "nodeType": "VariableDeclaration", + "scope": 764, + "src": "1910:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 731, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 621, + "src": "1910:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 734, + "name": "module", + "nodeType": "VariableDeclaration", + "scope": 764, + "src": "1929:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 733, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 621, + "src": "1929:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1909:34:6" + }, + "payable": false, + "returnParameters": { + "id": 738, + "nodeType": "ParameterList", + "parameters": [], + "src": "1982:0:6" + }, + "scope": 971, + "src": "1887:299:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 797, + "nodeType": "Block", + "src": "2672:227:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 778, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "2739:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 781, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 779, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2396, + "src": "2747:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2747:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2739:19:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4378,14 +6780,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 937, + "id": 782, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1317:1:9", + "src": "2762:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4393,7 +6795,7 @@ }, "value": "0" }, - "src": "1298:20:9", + "src": "2739:24:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4407,21 +6809,21 @@ "typeString": "bool" } ], - "id": 933, + "id": 777, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1290:7:9", + "referencedDeclaration": 2399, + "src": "2731:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 939, + "id": 784, "isConstant": false, "isLValue": false, "isPure": false, @@ -4429,971 +6831,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1290:29:9", + "src": "2731:33:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 940, + "id": 785, "nodeType": "ExpressionStatement", - "src": "1290:29:9" + "src": "2731:33:6" }, { "expression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 945, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1378:17:9", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 942, - "name": "isModule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "1379:8:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 944, - "indexExpression": { - "argumentTypes": null, - "id": 943, - "name": "module", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 928, - "src": "1388:6:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1379:16:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 941, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "1370:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 946, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1370:26:9", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 947, - "nodeType": "ExpressionStatement", - "src": "1370:26:9" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 951, - "name": "module", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 928, - "src": "1419:6:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - ], - "expression": { - "argumentTypes": null, - "id": 948, - "name": "modules", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1406:7:9", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", - "typeString": "contract Module[] storage ref" - } - }, - "id": 950, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "push", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1406:12:9", - "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_Module_$877_$returns$_t_uint256_$", - "typeString": "function (contract Module) returns (uint256)" - } - }, - "id": 952, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1406:20:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 953, - "nodeType": "ExpressionStatement", - "src": "1406:20:9" - }, - { - "expression": { - "argumentTypes": null, - "id": 958, + "id": 795, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 954, - "name": "isModule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "1436:8:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 956, - "indexExpression": { - "argumentTypes": null, - "id": 955, - "name": "module", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 928, - "src": "1445:6:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1436:16:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 957, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1455:4:9", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "1436:23:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 959, - "nodeType": "ExpressionStatement", - "src": "1436:23: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": 961, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 931, - "modifierName": { - "argumentTypes": null, - "id": 930, - "name": "authorized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "1223:10:9", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "1223:10:9" - } - ], - "name": "addModule", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 929, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 928, - "name": "module", - "nodeType": "VariableDeclaration", - "scope": 961, - "src": "1185:13:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - }, - "typeName": { - "contractScope": null, - "id": 927, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "1185:6:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1184:15:9" - }, - "payable": false, - "returnParameters": { - "id": 932, - "nodeType": "ParameterList", - "parameters": [], - "src": "1238:0:9" - }, - "scope": 1142, - "src": "1166:300:9", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1000, - "nodeType": "Block", - "src": "1818:240:9", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - }, - "id": 975, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 971, - "name": "modules", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1900:7:9", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", - "typeString": "contract Module[] storage ref" - } - }, - "id": 973, - "indexExpression": { - "argumentTypes": null, - "id": 972, - "name": "moduleIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "1908:11:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1900:20:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 974, - "name": "module", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 965, - "src": "1924:6:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "src": "1900:30:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 970, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "1892:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 976, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1892:39:9", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 977, - "nodeType": "ExpressionStatement", - "src": "1892:39:9" - }, - { - "expression": { - "argumentTypes": null, - "id": 982, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 978, - "name": "isModule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "1941:8:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 980, - "indexExpression": { - "argumentTypes": null, - "id": 979, - "name": "module", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 965, - "src": "1950:6:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1941:16:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 981, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1960:5:9", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "1941:24:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 983, - "nodeType": "ExpressionStatement", - "src": "1941:24:9" - }, - { - "expression": { - "argumentTypes": null, - "id": 993, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 984, - "name": "modules", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1975:7:9", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", - "typeString": "contract Module[] storage ref" - } - }, - "id": 986, - "indexExpression": { - "argumentTypes": null, - "id": 985, - "name": "moduleIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "1983:11:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1975:20:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 987, - "name": "modules", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1998:7:9", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", - "typeString": "contract Module[] storage ref" - } - }, - "id": 992, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 991, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 988, - "name": "modules", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "2006:7:9", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", - "typeString": "contract Module[] storage ref" - } - }, - "id": 989, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2006:14:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 990, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2023:1:9", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2006:18:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1998:27:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "src": "1975:50:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "id": 994, - "nodeType": "ExpressionStatement", - "src": "1975:50:9" - }, - { - "expression": { - "argumentTypes": null, - "id": 998, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "2035:16:9", - "subExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 995, - "name": "modules", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "2035:7:9", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", - "typeString": "contract Module[] storage ref" - } - }, - "id": 997, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2035:14:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 999, - "nodeType": "ExpressionStatement", - "src": "2035:16:9" - } - ] - }, - "documentation": "@dev Allows to remove a module from the whitelist.\n This can only be done via a Safe transaction.\n @param moduleIndex Array index position of module to be removed from whitelist.\n @param module Module to be removed.", - "id": 1001, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 968, - "modifierName": { - "argumentTypes": null, - "id": 967, - "name": "authorized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "1803:10:9", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "1803:10:9" - } - ], - "name": "removeModule", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 966, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 963, - "name": "moduleIndex", - "nodeType": "VariableDeclaration", - "scope": 1001, - "src": "1744:19:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 962, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1744:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 965, - "name": "module", - "nodeType": "VariableDeclaration", - "scope": 1001, - "src": "1765:13:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - }, - "typeName": { - "contractScope": null, - "id": 964, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "1765:6:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1743:36:9" - }, - "payable": false, - "returnParameters": { - "id": 969, - "nodeType": "ParameterList", - "parameters": [], - "src": "1818:0:9" - }, - "scope": 1142, - "src": "1722:336:9", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1032, - "nodeType": "Block", - "src": "2532:223:9", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1015, - "name": "isModule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "2599:8:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1018, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1016, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "2608:3:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1017, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2608:10:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2599:20:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1014, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "2591:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1019, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2591:29:9", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1020, - "nodeType": "ExpressionStatement", - "src": "2591:29:9" - }, - { - "expression": { - "argumentTypes": null, - "id": 1030, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1021, + "id": 786, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1012, - "src": "2692:7:9", + "referencedDeclaration": 775, + "src": "2836:7:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5406,12 +6869,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1023, + "id": 788, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1003, - "src": "2710:2:9", + "referencedDeclaration": 766, + "src": "2854:2:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5419,12 +6882,12 @@ }, { "argumentTypes": null, - "id": 1024, + "id": 789, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1005, - "src": "2714:5:9", + "referencedDeclaration": 768, + "src": "2858:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5432,12 +6895,12 @@ }, { "argumentTypes": null, - "id": 1025, + "id": 790, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1007, - "src": "2721:4:9", + "referencedDeclaration": 770, + "src": "2865:4:6", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5445,14 +6908,14 @@ }, { "argumentTypes": null, - "id": 1026, + "id": 791, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1009, - "src": "2727:9:9", + "referencedDeclaration": 772, + "src": "2871:9:6", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -5461,18 +6924,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1027, + "id": 792, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "2738:7:9", + "referencedDeclaration": 2389, + "src": "2882:7:6", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1028, + "id": 793, "isConstant": false, "isLValue": false, "isPure": false, @@ -5480,7 +6943,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2738:9:9", + "src": "2882:9:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5502,7 +6965,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, { @@ -5510,18 +6973,18 @@ "typeString": "uint256" } ], - "id": 1022, + "id": 787, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1095, - "src": "2702:7:9", + "referencedDeclaration": 860, + "src": "2846:7:6", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 1029, + "id": 794, "isConstant": false, "isLValue": false, "isPure": false, @@ -5529,43 +6992,43 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2702:46:9", + "src": "2846:46:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2692:56:9", + "src": "2836:56:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1031, + "id": 796, "nodeType": "ExpressionStatement", - "src": "2692:56:9" + "src": "2836:56:6" } ] }, "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": 1033, + "id": 798, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "executeModule", + "name": "execTransactionFromModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 1010, + "id": 773, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1003, + "id": 766, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1033, - "src": "2417:10:9", + "scope": 798, + "src": "2557:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5573,10 +7036,10 @@ "typeString": "address" }, "typeName": { - "id": 1002, + "id": 765, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2417:7:9", + "src": "2557:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5587,11 +7050,11 @@ }, { "constant": false, - "id": 1005, + "id": 768, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1033, - "src": "2429:13:9", + "scope": 798, + "src": "2569:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5599,10 +7062,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1004, + "id": 767, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2429:7:9", + "src": "2569:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5613,11 +7076,11 @@ }, { "constant": false, - "id": 1007, + "id": 770, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1033, - "src": "2444:10:9", + "scope": 798, + "src": "2584:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5625,10 +7088,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1006, + "id": 769, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2444:5:9", + "src": "2584:5:6", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5639,26 +7102,26 @@ }, { "constant": false, - "id": 1009, + "id": 772, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 1033, - "src": "2456:24:9", + "scope": 798, + "src": "2596:24:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 1008, + "id": 771, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "2456:14:9", + "referencedDeclaration": 5, + "src": "2596:14:6", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -5666,20 +7129,20 @@ "visibility": "internal" } ], - "src": "2416:65:9" + "src": "2556:65:6" }, "payable": false, "returnParameters": { - "id": 1013, + "id": 776, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1012, + "id": 775, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1033, - "src": "2514:12:9", + "scope": 798, + "src": "2654:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5687,10 +7150,10 @@ "typeString": "bool" }, "typeName": { - "id": 1011, + "id": 774, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2514:4:9", + "src": "2654:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5700,42 +7163,42 @@ "visibility": "internal" } ], - "src": "2513:14:9" + "src": "2653:14:6" }, - "scope": 1142, - "src": "2394:361:9", + "scope": 971, + "src": "2522:377:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1094, + "id": 859, "nodeType": "Block", - "src": "2910:399:9", + "src": "3054:399:6", "statements": [ { "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, - "id": 1052, + "id": 817, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1048, + "id": 813, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1041, - "src": "2924:9:9", + "referencedDeclaration": 806, + "src": "3068:9:6", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -5747,32 +7210,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1049, + "id": 814, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 30, - "src": "2937:4:9", + "referencedDeclaration": 6, + "src": "3081:4:6", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", "typeString": "type(contract Enum)" } }, - "id": 1050, + "id": 815, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "2937:14:9", + "referencedDeclaration": 5, + "src": "3081:14:6", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 1051, + "id": 816, "isConstant": false, "isLValue": false, "isPure": true, @@ -5780,13 +7243,13 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2937:19:9", + "src": "3081:19:6", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, - "src": "2924:32:9", + "src": "3068:32:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5796,24 +7259,24 @@ "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, - "id": 1066, + "id": 831, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1062, + "id": 827, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1041, - "src": "3034:9:9", + "referencedDeclaration": 806, + "src": "3178:9:6", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -5825,32 +7288,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1063, + "id": 828, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 30, - "src": "3047:4:9", + "referencedDeclaration": 6, + "src": "3191:4:6", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", "typeString": "type(contract Enum)" } }, - "id": 1064, + "id": 829, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "3047:14:9", + "referencedDeclaration": 5, + "src": "3191:14:6", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 1065, + "id": 830, "isConstant": false, "isLValue": false, "isPure": true, @@ -5858,35 +7321,35 @@ "memberName": "DelegateCall", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3047:27:9", + "src": "3191:27:6", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, - "src": "3034:40:9", + "src": "3178:40:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 1091, + "id": 856, "nodeType": "Block", - "src": "3149:154:9", + "src": "3293:154:6", "statements": [ { "assignments": [ - 1076 + 841 ], "declarations": [ { "constant": false, - "id": 1076, + "id": 841, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 1095, - "src": "3163:19:9", + "scope": 860, + "src": "3307:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5894,10 +7357,10 @@ "typeString": "address" }, "typeName": { - "id": 1075, + "id": 840, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3163:7:9", + "src": "3307:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5907,18 +7370,18 @@ "visibility": "internal" } ], - "id": 1080, + "id": 845, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1078, + "id": 843, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1039, - "src": "3199:4:9", + "referencedDeclaration": 804, + "src": "3343:4:6", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5932,18 +7395,18 @@ "typeString": "bytes memory" } ], - "id": 1077, + "id": 842, "name": "executeCreate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1132, - "src": "3185:13:9", + "referencedDeclaration": 897, + "src": "3329:13:6", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", "typeString": "function (bytes memory) returns (address)" } }, - "id": 1079, + "id": 844, "isConstant": false, "isLValue": false, "isPure": false, @@ -5951,31 +7414,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3185:19:9", + "src": "3329:19:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3163:41:9" + "src": "3307:41:6" }, { "expression": { "argumentTypes": null, - "id": 1085, + "id": 850, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1081, + "id": 846, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1046, - "src": "3218:7:9", + "referencedDeclaration": 811, + "src": "3362:7:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5989,19 +7452,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1084, + "id": 849, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1082, + "id": 847, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1076, - "src": "3228:11:9", + "referencedDeclaration": 841, + "src": "3372:11:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6012,14 +7475,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1083, + "id": 848, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3243:1:9", + "src": "3387:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6027,21 +7490,21 @@ }, "value": "0" }, - "src": "3228:16:9", + "src": "3372:16:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3218:26:9", + "src": "3362:26:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1086, + "id": 851, "nodeType": "ExpressionStatement", - "src": "3218:26:9" + "src": "3362:26:6" }, { "eventCall": { @@ -6049,12 +7512,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1088, + "id": 853, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1076, - "src": "3280:11:9", + "referencedDeclaration": 841, + "src": "3424:11:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6068,18 +7531,18 @@ "typeString": "address" } ], - "id": 1087, + "id": 852, "name": "ContractCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 888, - "src": "3263:16:9", + "referencedDeclaration": 632, + "src": "3407:16:6", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 1089, + "id": 854, "isConstant": false, "isLValue": false, "isPure": false, @@ -6087,37 +7550,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3263:29:9", + "src": "3407:29:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1090, + "id": 855, "nodeType": "EmitStatement", - "src": "3258:34:9" + "src": "3402:34:6" } ] }, - "id": 1092, + "id": 857, "nodeType": "IfStatement", - "src": "3030:273:9", + "src": "3174:273:6", "trueBody": { "expression": { "argumentTypes": null, - "id": 1073, + "id": 838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1067, + "id": 832, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1046, - "src": "3088:7:9", + "referencedDeclaration": 811, + "src": "3232:7:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6130,12 +7593,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1069, + "id": 834, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1035, - "src": "3118:2:9", + "referencedDeclaration": 800, + "src": "3262:2:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6143,12 +7606,12 @@ }, { "argumentTypes": null, - "id": 1070, + "id": 835, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1039, - "src": "3122:4:9", + "referencedDeclaration": 804, + "src": "3266:4:6", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6156,12 +7619,12 @@ }, { "argumentTypes": null, - "id": 1071, + "id": 836, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1043, - "src": "3128:5:9", + "referencedDeclaration": 808, + "src": "3272:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6183,18 +7646,18 @@ "typeString": "uint256" } ], - "id": 1068, + "id": 833, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1123, - "src": "3098:19:9", + "referencedDeclaration": 888, + "src": "3242:19:6", "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": 1072, + "id": 837, "isConstant": false, "isLValue": false, "isPure": false, @@ -6202,42 +7665,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3098:36:9", + "src": "3242:36:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3088:46:9", + "src": "3232:46:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1074, + "id": 839, "nodeType": "ExpressionStatement", - "src": "3088:46:9" + "src": "3232:46:6" } }, - "id": 1093, + "id": 858, "nodeType": "IfStatement", - "src": "2920:383:9", + "src": "3064:383:6", "trueBody": { "expression": { "argumentTypes": null, - "id": 1060, + "id": 825, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1053, + "id": 818, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1046, - "src": "2970:7:9", + "referencedDeclaration": 811, + "src": "3114:7:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6250,12 +7713,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1055, + "id": 820, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1035, - "src": "2992:2:9", + "referencedDeclaration": 800, + "src": "3136:2:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6263,12 +7726,12 @@ }, { "argumentTypes": null, - "id": 1056, + "id": 821, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "2996:5:9", + "referencedDeclaration": 802, + "src": "3140:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6276,12 +7739,12 @@ }, { "argumentTypes": null, - "id": 1057, + "id": 822, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1039, - "src": "3003:4:9", + "referencedDeclaration": 804, + "src": "3147:4:6", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6289,12 +7752,12 @@ }, { "argumentTypes": null, - "id": 1058, + "id": 823, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1043, - "src": "3009:5:9", + "referencedDeclaration": 808, + "src": "3153:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6320,18 +7783,18 @@ "typeString": "uint256" } ], - "id": 1054, + "id": 819, "name": "executeCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "2980:11:9", + "referencedDeclaration": 875, + "src": "3124:11:6", "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": 1059, + "id": 824, "isConstant": false, "isLValue": false, "isPure": false, @@ -6339,27 +7802,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2980:35:9", + "src": "3124:35:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2970:45:9", + "src": "3114:45:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1061, + "id": 826, "nodeType": "ExpressionStatement", - "src": "2970:45:9" + "src": "3114:45:6" } } ] }, "documentation": null, - "id": 1095, + "id": 860, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6367,16 +7830,16 @@ "name": "execute", "nodeType": "FunctionDefinition", "parameters": { - "id": 1044, + "id": 809, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1035, + "id": 800, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1095, - "src": "2778:10:9", + "scope": 860, + "src": "2922:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6384,10 +7847,10 @@ "typeString": "address" }, "typeName": { - "id": 1034, + "id": 799, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2778:7:9", + "src": "2922:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6398,11 +7861,11 @@ }, { "constant": false, - "id": 1037, + "id": 802, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1095, - "src": "2790:13:9", + "scope": 860, + "src": "2934:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6410,10 +7873,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1036, + "id": 801, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2790:7:9", + "src": "2934:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6424,11 +7887,11 @@ }, { "constant": false, - "id": 1039, + "id": 804, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1095, - "src": "2805:10:9", + "scope": 860, + "src": "2949:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6436,10 +7899,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1038, + "id": 803, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2805:5:9", + "src": "2949:5:6", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6450,26 +7913,26 @@ }, { "constant": false, - "id": 1041, + "id": 806, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 1095, - "src": "2817:24:9", + "scope": 860, + "src": "2961:24:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 1040, + "id": 805, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "2817:14:9", + "referencedDeclaration": 5, + "src": "2961:14:6", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", + "typeIdentifier": "t_enum$_Operation_$5", "typeString": "enum Enum.Operation" } }, @@ -6478,11 +7941,11 @@ }, { "constant": false, - "id": 1043, + "id": 808, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 1095, - "src": "2843:13:9", + "scope": 860, + "src": "2987:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6490,10 +7953,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1042, + "id": 807, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2843:7:9", + "src": "2987:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6503,20 +7966,20 @@ "visibility": "internal" } ], - "src": "2777:80:9" + "src": "2921:80:6" }, "payable": false, "returnParameters": { - "id": 1047, + "id": 812, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1046, + "id": 811, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1095, - "src": "2892:12:9", + "scope": 860, + "src": "3036:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6524,10 +7987,10 @@ "typeString": "bool" }, "typeName": { - "id": 1045, + "id": 810, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2892:4:9", + "src": "3036:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6537,86 +8000,86 @@ "visibility": "internal" } ], - "src": "2891:14:9" + "src": "3035:14:6" }, - "scope": 1142, - "src": "2761:548:9", + "scope": 971, + "src": "2905:548:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1109, + "id": 874, "nodeType": "Block", - "src": "3442:182:9", + "src": "3586:182:6", "statements": [ { "externalReferences": [ { "data": { - "declaration": 1101, + "declaration": 866, "isOffset": false, "isSlot": false, - "src": "3596:4:9", + "src": "3740:4:6", "valueSize": 1 } }, { "data": { - "declaration": 1101, + "declaration": 866, "isOffset": false, "isSlot": false, - "src": "3577:4:9", + "src": "3721:4:6", "valueSize": 1 } }, { "success": { - "declaration": 1106, + "declaration": 871, "isOffset": false, "isSlot": false, - "src": "3539:7:9", + "src": "3683:7:6", "valueSize": 1 } }, { "txGas": { - "declaration": 1103, + "declaration": 868, "isOffset": false, "isSlot": false, - "src": "3555:5:9", + "src": "3699:5:6", "valueSize": 1 } }, { "to": { - "declaration": 1097, + "declaration": 862, "isOffset": false, "isSlot": false, - "src": "3562:2:9", + "src": "3706:2:6", "valueSize": 1 } }, { "value": { - "declaration": 1099, + "declaration": 864, "isOffset": false, "isSlot": false, - "src": "3566:5:9", + "src": "3710:5:6", "valueSize": 1 } } ], - "id": 1108, + "id": 873, "nodeType": "InlineAssembly", "operations": "{\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3516:108:9" + "src": "3660:108:6" } ] }, "documentation": null, - "id": 1110, + "id": 875, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6624,16 +8087,16 @@ "name": "executeCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 1104, + "id": 869, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1097, + "id": 862, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1110, - "src": "3336:10:9", + "scope": 875, + "src": "3480:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6641,10 +8104,10 @@ "typeString": "address" }, "typeName": { - "id": 1096, + "id": 861, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3336:7:9", + "src": "3480:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6655,11 +8118,11 @@ }, { "constant": false, - "id": 1099, + "id": 864, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1110, - "src": "3348:13:9", + "scope": 875, + "src": "3492:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6667,10 +8130,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1098, + "id": 863, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3348:7:9", + "src": "3492:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6681,11 +8144,11 @@ }, { "constant": false, - "id": 1101, + "id": 866, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1110, - "src": "3363:10:9", + "scope": 875, + "src": "3507:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6693,10 +8156,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1100, + "id": 865, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3363:5:9", + "src": "3507:5:6", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6707,11 +8170,11 @@ }, { "constant": false, - "id": 1103, + "id": 868, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 1110, - "src": "3375:13:9", + "scope": 875, + "src": "3519:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6719,10 +8182,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1102, + "id": 867, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3375:7:9", + "src": "3519:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6732,20 +8195,20 @@ "visibility": "internal" } ], - "src": "3335:54:9" + "src": "3479:54:6" }, "payable": false, "returnParameters": { - "id": 1107, + "id": 872, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1106, + "id": 871, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1110, - "src": "3424:12:9", + "scope": 875, + "src": "3568:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6753,10 +8216,10 @@ "typeString": "bool" }, "typeName": { - "id": 1105, + "id": 870, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3424:4:9", + "src": "3568:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6766,77 +8229,77 @@ "visibility": "internal" } ], - "src": "3423:14:9" + "src": "3567:14:6" }, - "scope": 1142, - "src": "3315:309:9", + "scope": 971, + "src": "3459:309:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1122, + "id": 887, "nodeType": "Block", - "src": "3750:183:9", + "src": "3894:183:6", "statements": [ { "externalReferences": [ { "data": { - "declaration": 1114, + "declaration": 879, "isOffset": false, "isSlot": false, - "src": "3905:4:9", + "src": "4049:4:6", "valueSize": 1 } }, { "data": { - "declaration": 1114, + "declaration": 879, "isOffset": false, "isSlot": false, - "src": "3886:4:9", + "src": "4030:4:6", "valueSize": 1 } }, { "success": { - "declaration": 1119, + "declaration": 884, "isOffset": false, "isSlot": false, - "src": "3847:7:9", + "src": "3991:7:6", "valueSize": 1 } }, { "txGas": { - "declaration": 1116, + "declaration": 881, "isOffset": false, "isSlot": false, - "src": "3871:5:9", + "src": "4015:5:6", "valueSize": 1 } }, { "to": { - "declaration": 1112, + "declaration": 877, "isOffset": false, "isSlot": false, - "src": "3878:2:9", + "src": "4022:2:6", "valueSize": 1 } } ], - "id": 1121, + "id": 886, "nodeType": "InlineAssembly", "operations": "{\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3824:109:9" + "src": "3968:109:6" } ] }, "documentation": null, - "id": 1123, + "id": 888, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6844,16 +8307,16 @@ "name": "executeDelegateCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 1117, + "id": 882, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1112, + "id": 877, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1123, - "src": "3659:10:9", + "scope": 888, + "src": "3803:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6861,10 +8324,10 @@ "typeString": "address" }, "typeName": { - "id": 1111, + "id": 876, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3659:7:9", + "src": "3803:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6875,11 +8338,11 @@ }, { "constant": false, - "id": 1114, + "id": 879, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1123, - "src": "3671:10:9", + "scope": 888, + "src": "3815:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6887,10 +8350,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1113, + "id": 878, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3671:5:9", + "src": "3815:5:6", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6901,11 +8364,11 @@ }, { "constant": false, - "id": 1116, + "id": 881, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 1123, - "src": "3683:13:9", + "scope": 888, + "src": "3827:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6913,10 +8376,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1115, + "id": 880, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3683:7:9", + "src": "3827:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6926,20 +8389,20 @@ "visibility": "internal" } ], - "src": "3658:39:9" + "src": "3802:39:6" }, "payable": false, "returnParameters": { - "id": 1120, + "id": 885, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1119, + "id": 884, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1123, - "src": "3732:12:9", + "scope": 888, + "src": "3876:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6947,10 +8410,10 @@ "typeString": "bool" }, "typeName": { - "id": 1118, + "id": 883, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3732:4:9", + "src": "3876:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6960,59 +8423,59 @@ "visibility": "internal" } ], - "src": "3731:14:9" + "src": "3875:14:6" }, - "scope": 1142, - "src": "3630:303:9", + "scope": 971, + "src": "3774:303:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1131, + "id": 896, "nodeType": "Block", - "src": "4033:167:9", + "src": "4177:167:6", "statements": [ { "externalReferences": [ { "newContract": { - "declaration": 1128, + "declaration": 893, "isOffset": false, "isSlot": false, - "src": "4130:11:9", + "src": "4274:11:6", "valueSize": 1 } }, { "data": { - "declaration": 1125, + "declaration": 890, "isOffset": false, "isSlot": false, - "src": "4159:4:9", + "src": "4303:4:6", "valueSize": 1 } }, { "data": { - "declaration": 1125, + "declaration": 890, "isOffset": false, "isSlot": false, - "src": "4178:4:9", + "src": "4322:4:6", "valueSize": 1 } } ], - "id": 1130, + "id": 895, "nodeType": "InlineAssembly", "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", - "src": "4107:93:9" + "src": "4251:93:6" } ] }, "documentation": null, - "id": 1132, + "id": 897, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7020,16 +8483,16 @@ "name": "executeCreate", "nodeType": "FunctionDefinition", "parameters": { - "id": 1126, + "id": 891, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1125, + "id": 890, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1132, - "src": "3962:10:9", + "scope": 897, + "src": "4106:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7037,10 +8500,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1124, + "id": 889, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3962:5:9", + "src": "4106:5:6", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -7050,20 +8513,20 @@ "visibility": "internal" } ], - "src": "3961:12:9" + "src": "4105:12:6" }, "payable": false, "returnParameters": { - "id": 1129, + "id": 894, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1128, + "id": 893, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 1132, - "src": "4008:19:9", + "scope": 897, + "src": "4152:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7071,10 +8534,10 @@ "typeString": "address" }, "typeName": { - "id": 1127, + "id": 892, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4008:7:9", + "src": "4152:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7084,43 +8547,814 @@ "visibility": "internal" } ], - "src": "4007:21:9" + "src": "4151:21:6" }, - "scope": 1142, - "src": "3939:261:9", + "scope": 971, + "src": "4083:261:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1140, + "id": 969, "nodeType": "Block", - "src": "4360:31:9", + "src": "4505:656:6", "statements": [ + { + "assignments": [ + 904 + ], + "declarations": [ + { + "constant": false, + "id": 904, + "name": "moduleCount", + "nodeType": "VariableDeclaration", + "scope": 970, + "src": "4549:19:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 903, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4549:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 906, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 905, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4571:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4549:23:6" + }, + { + "assignments": [ + 908 + ], + "declarations": [ + { + "constant": false, + "id": 908, + "name": "currentModule", + "nodeType": "VariableDeclaration", + "scope": 970, + "src": "4582:21:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 907, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4582:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 912, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 909, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "4606:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 911, + "indexExpression": { + "argumentTypes": null, + "id": 910, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "4614:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4606:25:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4582:49:6" + }, + { + "body": { + "id": 925, + "nodeType": "Block", + "src": "4682:91:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 916, + "name": "currentModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "4696:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 917, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "4712:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 919, + "indexExpression": { + "argumentTypes": null, + "id": 918, + "name": "currentModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "4720:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4712:22:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4696:38:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 921, + "nodeType": "ExpressionStatement", + "src": "4696:38:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4748:14:6", + "subExpression": { + "argumentTypes": null, + "id": 922, + "name": "moduleCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "4748:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 924, + "nodeType": "ExpressionStatement", + "src": "4748:14:6" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 913, + "name": "currentModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "4647:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 914, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "4664:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4647:33:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 926, + "nodeType": "WhileStatement", + "src": "4641:132:6" + }, + { + "assignments": [ + 930 + ], + "declarations": [ + { + "constant": false, + "id": 930, + "name": "array", + "nodeType": "VariableDeclaration", + "scope": 970, + "src": "4782:22:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 928, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4782:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 929, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4782:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 936, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 934, + "name": "moduleCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "4821:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 933, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "4807:13:6", + "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": 931, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4811:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 932, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4811:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + } + }, + "id": 935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4807:26:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4782:51:6" + }, { "expression": { "argumentTypes": null, - "id": 1138, - "name": "modules", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "4377:7:9", + "id": 939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 937, + "name": "moduleCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "4877:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 938, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4891:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4877:15:6", "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", - "typeString": "contract Module[] storage ref" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "functionReturnParameters": 1137, - "id": 1139, + "id": 940, + "nodeType": "ExpressionStatement", + "src": "4877:15:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 941, + "name": "currentModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "4902:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 942, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "4918:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 944, + "indexExpression": { + "argumentTypes": null, + "id": 943, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "4926:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4918:25:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4902:41:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 946, + "nodeType": "ExpressionStatement", + "src": "4902:41:6" + }, + { + "body": { + "id": 965, + "nodeType": "Block", + "src": "4994:139:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 950, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 930, + "src": "5008:5:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 952, + "indexExpression": { + "argumentTypes": null, + "id": 951, + "name": "moduleCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "5014:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5008:18:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 953, + "name": "currentModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "5029:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5008:34:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 955, + "nodeType": "ExpressionStatement", + "src": "5008:34:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 956, + "name": "currentModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "5056:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 957, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 647, + "src": "5072:7:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 959, + "indexExpression": { + "argumentTypes": null, + "id": 958, + "name": "currentModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "5080:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5072:22:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5056:38:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 961, + "nodeType": "ExpressionStatement", + "src": "5056:38:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "5108:14:6", + "subExpression": { + "argumentTypes": null, + "id": 962, + "name": "moduleCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "5108:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 964, + "nodeType": "ExpressionStatement", + "src": "5108:14:6" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 947, + "name": "currentModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "4959:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 948, + "name": "SENTINEL_MODULES", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "4976:16:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4959:33:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 966, + "nodeType": "WhileStatement", + "src": "4953:180:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 967, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 930, + "src": "5149:5:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "functionReturnParameters": 902, + "id": 968, "nodeType": "Return", - "src": "4370:14:9" + "src": "5142:12:6" } ] }, "documentation": "@dev Returns array of modules.\n @return Array of modules.", - "id": 1141, + "id": 970, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7128,69 +9362,67 @@ "name": "getModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 1133, + "id": 898, "nodeType": "ParameterList", "parameters": [], - "src": "4298:2:9" + "src": "4442:2:6" }, "payable": false, "returnParameters": { - "id": 1137, + "id": 902, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1136, + "id": 901, "name": "", "nodeType": "VariableDeclaration", - "scope": 1141, - "src": "4346:8:9", + "scope": 970, + "src": "4490:9:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_memory_ptr", - "typeString": "contract Module[]" + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" }, "typeName": { "baseType": { - "contractScope": null, - "id": 1134, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "4346:6:9", + "id": 899, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4490:7:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1135, + "id": 900, "length": null, "nodeType": "ArrayTypeName", - "src": "4346:8:9", + "src": "4490:9:6", "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage_ptr", - "typeString": "contract Module[]" + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], - "src": "4345:10:9" + "src": "4489:11:6" }, - "scope": 1142, - "src": "4279:112:9", + "scope": 971, + "src": "4423:738:6", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1143, - "src": "303:4090:9" + "scope": 972, + "src": "303:4860:6" } ], - "src": "0:4394:9" + "src": "0:5164:6" }, "compiler": { "name": "solc", @@ -7198,5 +9430,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T10:43:07.898Z" + "updatedAt": "2018-05-16T10:51:14.748Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSend.json b/safe-contracts/build/contracts/MultiSend.json index 47cffc8a..5dc2904d 100644 --- a/safe-contracts/build/contracts/MultiSend.json +++ b/safe-contracts/build/contracts/MultiSend.json @@ -340,8 +340,8 @@ "4": { "events": {}, "links": {}, - "address": "0x0bcf053aec288e75a338486b27d1340b11a5a818", - "transactionHash": "0x670d0ace2ffca0389ecff0dd2fb54fee15d237e652e7e67a06586187d00e3f2a" + "address": "0xeb51df3ce4e31ee60ed86cc860e68a4f892960cc", + "transactionHash": "0x1a3baba678d7b4d4c2ae5d151176442d5306e7958e83cecf49a6256fdfd2f4cb" }, "1525950336085": { "events": {}, @@ -354,8 +354,14 @@ "links": {}, "address": "0xf5cfa4069271285402ba2585c521c6c627810963", "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" + }, + "1526478212260": { + "events": {}, + "links": {}, + "address": "0x20658014abeebf3f064bf4442a5cd160143b800e", + "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-14T07:39:37.970Z" + "updatedAt": "2018-05-16T13:45:24.531Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/OwnerManager.json b/safe-contracts/build/contracts/OwnerManager.json index e7f4bd90..cf8b0653 100644 --- a/safe-contracts/build/contracts/OwnerManager.json +++ b/safe-contracts/build/contracts/OwnerManager.json @@ -3,13 +3,8 @@ "abi": [ { "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "owners", + "inputs": [], + "name": "SENTINEL_OWNERS", "outputs": [ { "name": "", @@ -32,7 +27,7 @@ "type": "uint8" } ], - "name": "addOwner", + "name": "addOwnerWithThreshold", "outputs": [], "payable": false, "stateMutability": "nonpayable", @@ -42,8 +37,8 @@ "constant": false, "inputs": [ { - "name": "ownerIndex", - "type": "uint256" + "name": "prevOwner", + "type": "address" }, { "name": "owner", @@ -64,8 +59,8 @@ "constant": false, "inputs": [ { - "name": "oldOwnerIndex", - "type": "uint256" + "name": "prevOwner", + "type": "address" }, { "name": "oldOwner", @@ -76,7 +71,7 @@ "type": "address" } ], - "name": "replaceOwner", + "name": "swapOwner", "outputs": [], "payable": false, "stateMutability": "nonpayable", @@ -99,7 +94,7 @@ { "constant": true, "inputs": [], - "name": "threshold", + "name": "getThreshold", "outputs": [ { "name": "", @@ -144,40 +139,40 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610b4e806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146100935780630e5229b0146101005780632f54bf6e1461015057806342cde4e8146101ab57806354e99c6e146101dc578063842b954e14610249578063a0e67e2b146102a3578063b7f3358d1461030f575b600080fd5b34801561009f57600080fd5b506100be6004803603810190808035906020019092919050505061033f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561010c57600080fd5b5061014e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061037d565b005b34801561015c57600080fd5b50610191600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610520565b604051808215151515815260200191505060405180910390f35b3480156101b757600080fd5b506101c0610576565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101e857600080fd5b5061024760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061058d565b005b34801561025557600080fd5b506102a160048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506107c6565b005b3480156102af57600080fd5b506102b86109c1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102fb5780820151818401526020810190506102e0565b505050509050019250505060405180910390f35b34801561031b57600080fd5b5061033d600480360381019080803560ff169060200190929190505050610a4f565b005b60008181548110151561034e57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156103b757600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141515156103dd57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561043657600080fd5b60008290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600160009054906101000a900460ff1660ff1614151561051c5761051b81610a4f565b5b5050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160009054906101000a900460ff16905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105c757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156105ed57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561064657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660008481548110151561066c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106b957600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060008481548110151561077957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561080057600080fd5b8060ff166001600080549050031015151561081a57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660008481548110151561084057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561088d57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006001600080549050038154811015156108fc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008481548110151561093657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054809190600190036109939190610ad1565b508060ff16600160009054906101000a900460ff1660ff161415156109bc576109bb81610a4f565b5b505050565b60606000805480602002602001604051908101604052809291908181526020018280548015610a4557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109fb575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8957600080fd5b6000805490508160ff1611151515610aa057600080fd5b60018160ff1610151515610ab357600080fd5b80600160006101000a81548160ff021916908360ff16021790555050565b815481835581811115610af857818360005260206000209182019101610af79190610afd565b5b505050565b610b1f91905b80821115610b1b576000816000905550600101610b03565b5090565b905600a165627a7a72305820e78155e74b906f83eb64e436f45d07ae88b2195944595ca816ddbec6abb1ecb90029", - "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146100935780630e5229b0146101005780632f54bf6e1461015057806342cde4e8146101ab57806354e99c6e146101dc578063842b954e14610249578063a0e67e2b146102a3578063b7f3358d1461030f575b600080fd5b34801561009f57600080fd5b506100be6004803603810190808035906020019092919050505061033f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561010c57600080fd5b5061014e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061037d565b005b34801561015c57600080fd5b50610191600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610520565b604051808215151515815260200191505060405180910390f35b3480156101b757600080fd5b506101c0610576565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101e857600080fd5b5061024760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061058d565b005b34801561025557600080fd5b506102a160048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506107c6565b005b3480156102af57600080fd5b506102b86109c1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102fb5780820151818401526020810190506102e0565b505050509050019250505060405180910390f35b34801561031b57600080fd5b5061033d600480360381019080803560ff169060200190929190505050610a4f565b005b60008181548110151561034e57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156103b757600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141515156103dd57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561043657600080fd5b60008290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600160009054906101000a900460ff1660ff1614151561051c5761051b81610a4f565b5b5050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160009054906101000a900460ff16905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105c757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156105ed57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561064657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660008481548110151561066c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106b957600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060008481548110151561077957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561080057600080fd5b8060ff166001600080549050031015151561081a57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660008481548110151561084057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561088d57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006001600080549050038154811015156108fc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008481548110151561093657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054809190600190036109939190610ad1565b508060ff16600160009054906101000a900460ff1660ff161415156109bc576109bb81610a4f565b5b505050565b60606000805480602002602001604051908101604052809291908181526020018280548015610a4557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109fb575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8957600080fd5b6000805490508160ff1611151515610aa057600080fd5b60018160ff1610151515610ab357600080fd5b80600160006101000a81548160ff021916908360ff16021790555050565b815481835581811115610af857818360005260206000209182019101610af79190610afd565b5b505050565b610b1f91905b80821115610b1b576000816000905550600101610b03565b5090565b905600a165627a7a72305820e78155e74b906f83eb64e436f45d07ae88b2195944595ca816ddbec6abb1ecb90029", - "sourceMap": "240:4632:10:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:4632:10;;;;;;;", - "deployedSourceMap": "240:4632:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1737:431;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1737:431:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4552:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4552:125:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4436:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4436:110:10;;;;;;;;;;;;;;;;;;;;;;;;;;;3419:501;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3419:501:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:599;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2499:599:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4759:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4759:111:10;;;;;;;;;;;;;;;;;4109:321;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4109:321:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1737:431::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1894:1:10;1885:5;:10;;;;1877:19;;;;;;;;1955:7;:14;1963:5;1955:14;;;;;;;;;;;;;;;;;;;;;;;;;1954:15;1946:24;;;;;;;;1980:6;1992:5;1980:18;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1980:18:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025:4;2008:7;:14;2016:5;2008:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;2110:10;2097:23;;:9;;;;;;;;;;;:23;;;;2093:68;;;2134:27;2150:10;2134:15;:27::i;:::-;2093:68;1737:431;;:::o;4552:125::-;4629:4;4656:7;:14;4664:5;4656:14;;;;;;;;;;;;;;;;;;;;;;;;;4649:21;;4552:125;;;:::o;4436:110::-;4502:5;4530:9;;;;;;;;;;;4523:16;;4436:110;:::o;3419:501::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;3609:1:10;3597:8;:13;;;;3589:22;;;;;;;;3670:7;:17;3678:8;3670:17;;;;;;;;;;;;;;;;;;;;;;;;;3669:18;3661:27;;;;;;;;3793:8;3768:33;;:6;3775:13;3768:21;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;3760:42;;;;;;;;3832:5;3812:7;:17;3820:8;3812:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;3867:4;3847:7;:17;3855:8;3847:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3905:8;3881:6;3888:13;3881:21;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;3419:501;;;:::o;2499:599::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;2727:10:10;2706:31;;2722:1;2706:6;:13;;;;:17;:31;;2698:40;;;;;;;;2840:5;2818:27;;:6;2825:10;2818:18;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;2810:36;;;;;;;;2873:5;2856:7;:14;2864:5;2856:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;2909:6;2932:1;2916:6;:13;;;;:17;2909:25;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:6;2895:10;2888:18;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2944:6;:15;;;;;;;;;;;;:::i;:::-;;3040:10;3027:23;;:9;;;;;;;;;;;:23;;;;3023:68;;;3064:27;3080:10;3064:15;:27::i;:::-;3023:68;2499:599;;;:::o;4759:111::-;4825:9;4857:6;4850:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111;:::o;4109:321::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;4291:6:10;:13;;;;4277:10;:27;;;;4269:36;;;;;;;;4389:1;4375:10;:15;;;;4367:24;;;;;;;;4413:10;4401:9;;:22;;;;;;;;;;;;;;;;;;4109:321;:::o;240:4632::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.23;\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 owners;\n uint8 public threshold;\n\n // isOwner mapping allows to check if an address is a Safe owner.\n mapping (address => bool) public isOwner;\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);\n // Validate that threshold is smaller than number of added owners.\n require(_threshold <= _owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n // Initializing Safe 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);\n // No duplicate owners allowed.\n require(!isOwner[owner]);\n isOwner[owner] = true;\n }\n owners = _owners;\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 addOwner(address owner, uint8 _threshold)\n public\n authorized\n {\n // Owner address cannot be null.\n require(owner != 0);\n // No duplicate owners allowed.\n require(!isOwner[owner]);\n owners.push(owner);\n isOwner[owner] = true;\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 ownerIndex Array index position of owner address to be removed.\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(uint256 ownerIndex, address owner, uint8 _threshold)\n public\n authorized\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(owners.length - 1 >= _threshold);\n // Validate owner address corresponds to owner index.\n require(owners[ownerIndex] == owner);\n isOwner[owner] = false;\n owners[ownerIndex] = owners[owners.length - 1];\n owners.length--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param oldOwnerIndex Array index position of owner address to be replaced.\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function replaceOwner(uint256 oldOwnerIndex, address oldOwner, address newOwner)\n public\n authorized\n {\n // Owner address cannot be null.\n require(newOwner != 0);\n // No duplicate owners allowed.\n require(!isOwner[newOwner]);\n // Validate owner address corresponds to owner index.\n require(owners[oldOwnerIndex] == oldOwner);\n isOwner[oldOwner] = false;\n isOwner[newOwner] = true;\n owners[oldOwnerIndex] = newOwner;\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 <= owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n function threshold()\n public\n view\n returns (uint8)\n {\n return threshold;\n }\n\n function isOwner(address owner)\n public\n view\n returns (bool)\n {\n return isOwner[owner];\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 return owners;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610efa806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610657565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca61065c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506107f5565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610874565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b34801561033057600080fd5b50610339610eb7565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561041057600080fd5b8060ff1660018054031015151561042657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156104be57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff1614151561065257610651816107f5565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156106935781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156107ec5780838381518110151561074257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506106fd565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082f57600080fd5b6001548160ff161115151561084357600080fd5b60018160ff161015151561085657600080fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108ae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156109025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561090d57600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561099057600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610b2457610b23816107f5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b6257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610bb65750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610bc157600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cdc57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a72305820372e97755cf66d7d4dedc8cf9b71ad26a96c66a3db678bac90c5e04bea67c8ab0029", + "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610657565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca61065c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506107f5565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610874565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b34801561033057600080fd5b50610339610eb7565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561041057600080fd5b8060ff1660018054031015151561042657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156104be57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff1614151561065257610651816107f5565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156106935781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156107ec5780838381518110151561074257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506106fd565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082f57600080fd5b6001548160ff161115151561084357600080fd5b60018160ff161015151561085657600080fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108ae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156109025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561090d57600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561099057600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610b2457610b23816107f5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b6257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610bb65750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610bc157600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cdc57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a72305820372e97755cf66d7d4dedc8cf9b71ad26a96c66a3db678bac90c5e04bea67c8ab0029", + "sourceMap": "240:5272:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:5272:7;;;;;;;", + "deployedSourceMap": "240:5272:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:7;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052: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;5052:458:7;;;;;;;;;;;;;;;;;4398:318;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:7;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2776:573::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:7;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;5052:458::-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168: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;5168:25:7;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;4398:318::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:7;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:7;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;3683:526::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:7;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o", + "source": "pragma solidity 0.4.23;\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 uint8 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);\n // Validate that threshold is smaller than number of added owners.\n require(_threshold <= _owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\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);\n // No duplicate owners allowed.\n require(owners[owner] == 0);\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);\n // No duplicate owners allowed.\n require(owners[owner] == 0);\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);\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == owner);\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);\n // No duplicate owners allowed.\n require(owners[newOwner] == 0);\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == oldOwner);\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);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n function getThreshold()\n public\n view\n returns (uint8)\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": [ - 1438 + 1343 ] }, - "id": 1439, + "id": 1344, "nodeType": "SourceUnit", "nodes": [ { - "id": 1144, + "id": 973, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:10" + "src": "0:23:7" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 1145, + "id": 974, "nodeType": "ImportDirective", - "scope": 1439, - "sourceUnit": 1560, - "src": "24:30:10", + "scope": 1344, + "sourceUnit": 1360, + "src": "24:30:7", "symbolAliases": [], "unitAlias": "" }, @@ -187,78 +182,194 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1146, + "id": 975, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1559, - "src": "265:14:10", + "referencedDeclaration": 1359, + "src": "265:14:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeIdentifier": "t_contract$_SelfAuthorized_$1359", "typeString": "contract SelfAuthorized" } }, - "id": 1147, + "id": 976, "nodeType": "InheritanceSpecifier", - "src": "265:14:10" + "src": "265:14:7" } ], "contractDependencies": [ - 1559 + 1359 ], "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": 1438, + "id": 1343, "linearizedBaseContracts": [ - 1438, - 1559 + 1343, + 1359 ], "name": "OwnerManager", "nodeType": "ContractDefinition", "nodes": [ { - "constant": false, - "id": 1150, - "name": "owners", + "constant": true, + "id": 981, + "name": "SENTINEL_OWNERS", "nodeType": "VariableDeclaration", - "scope": 1438, - "src": "287:23:10", + "scope": 1343, + "src": "287:54:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[]" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "baseType": { - "id": 1148, + "id": 977, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "287:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "307831", + "id": 979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "337:3:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "0x1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "329:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 980, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "329:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "id": 985, + "name": "owners", + "nodeType": "VariableDeclaration", + "scope": 1343, + "src": "348:43:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "typeName": { + "id": 984, + "keyType": { + "id": 982, "name": "address", "nodeType": "ElementaryTypeName", - "src": "287:7:10", + "src": "356:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1149, - "length": null, - "nodeType": "ArrayTypeName", - "src": "287:9:10", + "nodeType": "Mapping", + "src": "348:27:7", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "valueType": { + "id": 983, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "367:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } }, "value": null, - "visibility": "public" + "visibility": "internal" }, { "constant": false, - "id": 1152, + "id": 987, + "name": "ownerCount", + "nodeType": "VariableDeclaration", + "scope": 1343, + "src": "397:18:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 986, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "397:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 989, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 1438, - "src": "316:22:10", + "scope": 1343, + "src": "421:24:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -266,68 +377,23 @@ "typeString": "uint8" }, "typeName": { - "id": 1151, + "id": 988, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "316:5:10", + "src": "421:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1156, - "name": "isOwner", - "nodeType": "VariableDeclaration", - "scope": 1438, - "src": "415:40:10", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 1155, - "keyType": { - "id": 1153, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "424:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "415:25:10", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 1154, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "435:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" + "visibility": "internal" }, { "body": { - "id": 1229, + "id": 1082, "nodeType": "Block", - "src": "730:767:10", + "src": "720:946:7", "statements": [ { "expression": { @@ -339,21 +405,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1167, + "id": 1000, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1165, + "id": 998, "name": "threshold", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "872:9:10", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "862:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -364,14 +428,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1166, + "id": 999, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "885:1:10", + "src": "875:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -379,7 +443,7 @@ }, "value": "0" }, - "src": "872:14:10", + "src": "862:14:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -393,21 +457,21 @@ "typeString": "bool" } ], - "id": 1164, + "id": 997, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "864:7:10", + "referencedDeclaration": 2399, + "src": "854:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1168, + "id": 1001, "isConstant": false, "isLValue": false, "isPure": false, @@ -415,15 +479,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "864:23:10", + "src": "854:23:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1169, + "id": 1002, "nodeType": "ExpressionStatement", - "src": "864:23:10" + "src": "854:23:7" }, { "expression": { @@ -435,19 +499,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1174, + "id": 1007, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1171, + "id": 1004, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "980:10:10", + "referencedDeclaration": 994, + "src": "970:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -459,18 +523,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1172, + "id": 1005, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1159, - "src": "994:7:10", + "referencedDeclaration": 992, + "src": "984:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1173, + "id": 1006, "isConstant": false, "isLValue": false, "isPure": false, @@ -478,13 +542,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "994:14:10", + "src": "984:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "980:28:10", + "src": "970:28:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -498,21 +562,21 @@ "typeString": "bool" } ], - "id": 1170, + "id": 1003, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "972:7:10", + "referencedDeclaration": 2399, + "src": "962:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1175, + "id": 1008, "isConstant": false, "isLValue": false, "isPure": false, @@ -520,15 +584,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "972:37:10", + "src": "962:37:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1176, + "id": 1009, "nodeType": "ExpressionStatement", - "src": "972:37:10" + "src": "962:37:7" }, { "expression": { @@ -540,19 +604,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1180, + "id": 1013, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1178, + "id": 1011, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1079:10:10", + "referencedDeclaration": 994, + "src": "1069:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -563,14 +627,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1179, + "id": 1012, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1093:1:10", + "src": "1083:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -578,7 +642,7 @@ }, "value": "1" }, - "src": "1079:15:10", + "src": "1069:15:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -592,21 +656,21 @@ "typeString": "bool" } ], - "id": 1177, + "id": 1010, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1071:7:10", + "referencedDeclaration": 2399, + "src": "1061:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1181, + "id": 1014, "isConstant": false, "isLValue": false, "isPure": false, @@ -614,34 +678,83 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1071:24:10", + "src": "1061:24:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1182, + "id": 1015, "nodeType": "ExpressionStatement", - "src": "1071:24:10" + "src": "1061:24:7" + }, + { + "assignments": [ + 1017 + ], + "declarations": [ + { + "constant": false, + "id": 1017, + "name": "currentOwner", + "nodeType": "VariableDeclaration", + "scope": 1083, + "src": "1132:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1016, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1132:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1019, + "initialValue": { + "argumentTypes": null, + "id": 1018, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "1155:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1132:38:7" }, { "body": { - "id": 1219, + "id": 1065, "nodeType": "Block", - "src": "1187:246:10", + "src": "1225:318:7", "statements": [ { "assignments": [ - 1195 + 1032 ], "declarations": [ { "constant": false, - "id": 1195, + "id": 1032, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1230, - "src": "1246:13:10", + "scope": 1083, + "src": "1284:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -649,10 +762,10 @@ "typeString": "address" }, "typeName": { - "id": 1194, + "id": 1031, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1246:7:10", + "src": "1284:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -662,31 +775,31 @@ "visibility": "internal" } ], - "id": 1199, + "id": 1036, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1196, + "id": 1033, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1159, - "src": "1262:7:10", + "referencedDeclaration": 992, + "src": "1300:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1198, + "id": 1035, "indexExpression": { "argumentTypes": null, - "id": 1197, + "id": 1034, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1184, - "src": "1270:1:10", + "referencedDeclaration": 1021, + "src": "1308:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -697,14 +810,172 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1262:10:10", + "src": "1300:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1246:26:10" + "src": "1284:26:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1038, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "1332:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1039, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1341:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1332:10:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1041, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "1346:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 1042, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "1355:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1346:24:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1332:38:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1037, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "1324:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1324:47:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1046, + "nodeType": "ExpressionStatement", + "src": "1324:47:7" }, { "expression": { @@ -716,131 +987,35 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1203, + "id": 1052, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "argumentTypes": null, - "id": 1201, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "1294:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1202, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1303:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1294:10:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1200, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "1286:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1286:19:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1205, - "nodeType": "ExpressionStatement", - "src": "1286:19:10" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1210, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1371:15:10", - "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1207, - "name": "isOwner", + "id": 1048, + "name": "owners", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "1372:7:10", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "1437:6:7", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" } }, - "id": 1209, + "id": 1050, "indexExpression": { "argumentTypes": null, - "id": 1208, + "id": 1049, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "1380:5:10", + "referencedDeclaration": 1032, + "src": "1444:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -851,12 +1026,33 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1372:14:10", + "src": "1437:13:7", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1051, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1454:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1437:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -870,21 +1066,21 @@ "typeString": "bool" } ], - "id": 1206, + "id": 1047, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1363:7:10", + "referencedDeclaration": 2399, + "src": "1429:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1211, + "id": 1053, "isConstant": false, "isLValue": false, "isPure": false, @@ -892,20 +1088,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1363:24:10", + "src": "1429:27:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1212, + "id": 1054, "nodeType": "ExpressionStatement", - "src": "1363:24:10" + "src": "1429:27:7" }, { "expression": { "argumentTypes": null, - "id": 1217, + "id": 1059, "isConstant": false, "isLValue": false, "isPure": false, @@ -914,28 +1110,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1213, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "1401:7:10", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1215, - "indexExpression": { - "argumentTypes": null, - "id": 1214, - "name": "owner", + "id": 1055, + "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "1409:5:10", + "referencedDeclaration": 985, + "src": "1470:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1057, + "indexExpression": { + "argumentTypes": null, + "id": 1056, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1017, + "src": "1477:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -946,41 +1140,82 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1401:14:10", + "src": "1470:20:7", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "hexValue": "74727565", - "id": 1216, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1418:4:10", - "subdenomination": null, + "id": 1058, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "1493:5:7", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "src": "1401:21:10", + "src": "1470:28:7", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1218, + "id": 1060, "nodeType": "ExpressionStatement", - "src": "1401:21:10" + "src": "1470:28:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1061, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1017, + "src": "1512:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1062, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "1527:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1512:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1064, + "nodeType": "ExpressionStatement", + "src": "1512:20:7" } ] }, @@ -990,19 +1225,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1190, + "id": 1027, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1187, + "id": 1024, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1184, - "src": "1162:1:10", + "referencedDeclaration": 1021, + "src": "1200:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1014,18 +1249,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1188, + "id": 1025, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1159, - "src": "1166:7:10", + "referencedDeclaration": 992, + "src": "1204:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1189, + "id": 1026, "isConstant": false, "isLValue": false, "isPure": false, @@ -1033,31 +1268,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1166:14:10", + "src": "1204:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1162:18:10", + "src": "1200:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1220, + "id": 1066, "initializationExpression": { "assignments": [ - 1184 + 1021 ], "declarations": [ { "constant": false, - "id": 1184, + "id": 1021, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1230, - "src": "1147:9:10", + "scope": 1083, + "src": "1185:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1065,10 +1300,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1183, + "id": 1020, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1147:7:10", + "src": "1185:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1078,18 +1313,18 @@ "visibility": "internal" } ], - "id": 1186, + "id": 1023, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1185, + "id": 1022, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1159:1:10", + "src": "1197:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1098,12 +1333,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1147:13:10" + "src": "1185:13:7" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1192, + "id": 1029, "isConstant": false, "isLValue": false, "isPure": false, @@ -1111,15 +1346,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1182:3:10", + "src": "1220:3:7", "subExpression": { "argumentTypes": null, - "id": 1191, + "id": 1028, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1184, - "src": "1182:1:10", + "referencedDeclaration": 1021, + "src": "1220:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1130,77 +1365,164 @@ "typeString": "uint256" } }, - "id": 1193, + "id": 1030, "nodeType": "ExpressionStatement", - "src": "1182:3:10" + "src": "1220:3:7" }, "nodeType": "ForStatement", - "src": "1142:291:10" + "src": "1180:363:7" }, { "expression": { "argumentTypes": null, - "id": 1223, + "id": 1071, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1221, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "1442:6:10", + "baseExpression": { + "argumentTypes": null, + "id": 1067, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "1552:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1069, + "indexExpression": { + "argumentTypes": null, + "id": 1068, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1017, + "src": "1559:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1552:20:7", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1222, - "name": "_owners", + "id": 1070, + "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1159, - "src": "1451:7:10", + "referencedDeclaration": 981, + "src": "1575:15:7", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "src": "1442:16:10", + "src": "1552:38:7", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1224, + "id": 1072, "nodeType": "ExpressionStatement", - "src": "1442:16:10" + "src": "1552:38:7" }, { "expression": { "argumentTypes": null, - "id": 1227, + "id": 1076, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1225, + "id": 1073, + "name": "ownerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "1600:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1074, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 992, + "src": "1613:7:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1613:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1600:27:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1077, + "nodeType": "ExpressionStatement", + "src": "1600:27:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1078, "name": "threshold", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "1468:9:10", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "1637:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1210,31 +1532,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1226, + "id": 1079, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1480:10:10", + "referencedDeclaration": 994, + "src": "1649:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1468:22:10", + "src": "1637:22:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1228, + "id": 1081, "nodeType": "ExpressionStatement", - "src": "1468:22:10" + "src": "1637:22:7" } ] }, "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": 1230, + "id": 1083, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1242,16 +1564,16 @@ "name": "setupOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1162, + "id": 995, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1159, + "id": 992, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 1230, - "src": "672:17:10", + "scope": 1083, + "src": "662:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1260,19 +1582,19 @@ }, "typeName": { "baseType": { - "id": 1157, + "id": 990, "name": "address", "nodeType": "ElementaryTypeName", - "src": "672:7:10", + "src": "662:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1158, + "id": 991, "length": null, "nodeType": "ArrayTypeName", - "src": "672:9:10", + "src": "662:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -1283,11 +1605,11 @@ }, { "constant": false, - "id": 1161, + "id": 994, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1230, - "src": "691:16:10", + "scope": 1083, + "src": "681:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1295,10 +1617,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1160, + "id": 993, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "691:5:10", + "src": "681:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1308,26 +1630,26 @@ "visibility": "internal" } ], - "src": "671:37:10" + "src": "661:37:7" }, "payable": false, "returnParameters": { - "id": 1163, + "id": 996, "nodeType": "ParameterList", "parameters": [], - "src": "730:0:10" + "src": "720:0:7" }, - "scope": 1438, - "src": "651:846:10", + "scope": 1343, + "src": "641:1025:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1272, + "id": 1135, "nodeType": "Block", - "src": "1826:342:10", + "src": "2008:426:7", "statements": [ { "expression": { @@ -1336,48 +1658,112 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" }, - "id": 1242, + "id": 1099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1240, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "1885:5:10", - "typeDescriptions": { + "commonType": { "typeIdentifier": "t_address", "typeString": "address" + }, + "id": 1095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1093, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1085, + "src": "2067:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1094, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2076:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2067:10:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "nodeType": "BinaryOperation", - "operator": "!=", + "operator": "&&", "rightExpression": { "argumentTypes": null, - "hexValue": "30", - "id": 1241, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1098, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "number", + "isPure": false, "lValueRequested": false, - "nodeType": "Literal", - "src": "1894:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "leftExpression": { + "argumentTypes": null, + "id": 1096, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1085, + "src": "2081:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "value": "0" + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 1097, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "2090:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2081:24:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, - "src": "1885:10:10", + "src": "2067:38:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1391,21 +1777,21 @@ "typeString": "bool" } ], - "id": 1239, + "id": 1092, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1877:7:10", + "referencedDeclaration": 2399, + "src": "2059:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1243, + "id": 1100, "isConstant": false, "isLValue": false, "isPure": false, @@ -1413,15 +1799,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1877:19:10", + "src": "2059:47:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1244, + "id": 1101, "nodeType": "ExpressionStatement", - "src": "1877:19:10" + "src": "2059:47:7" }, { "expression": { @@ -1429,41 +1815,39 @@ "arguments": [ { "argumentTypes": null, - "id": 1249, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1954:15:10", - "subExpression": { + "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1246, - "name": "isOwner", + "id": 1103, + "name": "owners", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "1955:7:10", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "2164:6:7", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" } }, - "id": 1248, + "id": 1105, "indexExpression": { "argumentTypes": null, - "id": 1247, + "id": 1104, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "1963:5:10", + "referencedDeclaration": 1085, + "src": "2171:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1474,614 +1858,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1955:14:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1245, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "1946:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1250, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1946:24:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1251, - "nodeType": "ExpressionStatement", - "src": "1946:24:10" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1255, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "1992:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 1252, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "1980:6:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1254, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "push", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1980:11:10", - "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) returns (uint256)" - } - }, - "id": 1256, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1980:18:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1257, - "nodeType": "ExpressionStatement", - "src": "1980:18:10" - }, - { - "expression": { - "argumentTypes": null, - "id": 1262, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1258, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "2008:7:10", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1260, - "indexExpression": { - "argumentTypes": null, - "id": 1259, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "2016:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2008:14:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1261, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2025:4:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2008:21:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1263, - "nodeType": "ExpressionStatement", - "src": "2008:21:10" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 1266, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1264, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "2097:9:10", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 1265, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1234, - "src": "2110:10:10", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2097:23:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1271, - "nodeType": "IfStatement", - "src": "2093:68:10", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1268, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1234, - "src": "2150:10:10", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 1267, - "name": "changeThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1408, - "src": "2134:15:10", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", - "typeString": "function (uint8)" - } - }, - "id": 1269, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2134:27:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1270, - "nodeType": "ExpressionStatement", - "src": "2134:27:10" - } - } - ] - }, - "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": 1273, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 1237, - "modifierName": { - "argumentTypes": null, - "id": 1236, - "name": "authorized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "1811:10:10", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "1811:10:10" - } - ], - "name": "addOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1235, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1232, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 1273, - "src": "1755:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1231, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1755:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1234, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 1273, - "src": "1770:16:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1233, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1770:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1754:33:10" - }, - "payable": false, - "returnParameters": { - "id": 1238, - "nodeType": "ParameterList", - "parameters": [], - "src": "1826:0:10" - }, - "scope": 1438, - "src": "1737:431:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1331, - "nodeType": "Block", - "src": "2611:487:10", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1290, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1288, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1285, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "2706:6:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1286, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2706:13:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1287, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2722:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2706:17:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 1289, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1279, - "src": "2727:10:10", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2706:31:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1284, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "2698:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2698:40:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1292, - "nodeType": "ExpressionStatement", - "src": "2698:40:10" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1294, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "2818:6:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1296, - "indexExpression": { - "argumentTypes": null, - "id": 1295, - "name": "ownerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1275, - "src": "2825:10:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2818:18:10", + "src": "2164:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2091,18 +1868,23 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1297, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "2840:5:10", + "hexValue": "30", + "id": 1106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2181:1:7", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" }, - "src": "2818:27:10", + "src": "2164:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2116,21 +1898,21 @@ "typeString": "bool" } ], - "id": 1293, + "id": 1102, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2810:7:10", + "referencedDeclaration": 2399, + "src": "2156:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1299, + "id": 1108, "isConstant": false, "isLValue": false, "isPure": false, @@ -2138,20 +1920,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2810:36:10", + "src": "2156:27:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1300, + "id": 1109, "nodeType": "ExpressionStatement", - "src": "2810:36:10" + "src": "2156:27:7" }, { "expression": { "argumentTypes": null, - "id": 1305, + "id": 1116, "isConstant": false, "isLValue": false, "isPure": false, @@ -2160,28 +1942,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1301, - "name": "isOwner", + "id": 1110, + "name": "owners", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "2856:7:10", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "2193:6:7", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" } }, - "id": 1303, + "id": 1112, "indexExpression": { "argumentTypes": null, - "id": 1302, + "id": 1111, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "2864:5:10", + "referencedDeclaration": 1085, + "src": "2200:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2192,46 +1972,68 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2856:14:10", + "src": "2193:13:7", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1304, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2873:5:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "baseExpression": { + "argumentTypes": null, + "id": 1113, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "2209:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } }, - "value": "false" + "id": 1115, + "indexExpression": { + "argumentTypes": null, + "id": 1114, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "2216:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2209:23:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "src": "2856:22:10", + "src": "2193:39:7", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1306, + "id": 1117, "nodeType": "ExpressionStatement", - "src": "2856:22:10" + "src": "2193:39:7" }, { "expression": { "argumentTypes": null, - "id": 1316, + "id": 1122, "isConstant": false, "isLValue": false, "isPure": false, @@ -2240,29 +2042,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1307, + "id": 1118, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "2888:6:10", + "referencedDeclaration": 985, + "src": "2242:6:7", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" } }, - "id": 1309, + "id": 1120, "indexExpression": { "argumentTypes": null, - "id": 1308, - "name": "ownerIndex", + "id": 1119, + "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1275, - "src": "2895:10:10", + "referencedDeclaration": 981, + "src": "2249:15:7", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "isConstant": false, @@ -2270,7 +2072,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2888:18:10", + "src": "2242:23:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2280,143 +2082,47 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1310, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "2909:6:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1315, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1314, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1311, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "2916:6:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1312, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2916:13:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1313, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2932:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2916:17:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2909:25:10", + "id": 1121, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1085, + "src": "2268:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2888:46:10", + "src": "2242:31:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1317, + "id": 1123, "nodeType": "ExpressionStatement", - "src": "2888:46:10" + "src": "2242:31:7" }, { "expression": { "argumentTypes": null, - "id": 1321, + "id": 1125, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", - "operator": "--", + "operator": "++", "prefix": false, - "src": "2944:15:10", + "src": "2283:12:7", "subExpression": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1318, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "2944:6:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1320, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2944:13:10", + "id": 1124, + "name": "ownerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "2283:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2427,9 +2133,9 @@ "typeString": "uint256" } }, - "id": 1322, + "id": 1126, "nodeType": "ExpressionStatement", - "src": "2944:15:10" + "src": "2283:12:7" }, { "condition": { @@ -2438,21 +2144,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1325, + "id": 1129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1323, + "id": 1127, "name": "threshold", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "3027:9:10", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "2363:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2462,39 +2166,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1324, + "id": 1128, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1279, - "src": "3040:10:10", + "referencedDeclaration": 1087, + "src": "2376:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3027:23:10", + "src": "2363:23:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1330, + "id": 1134, "nodeType": "IfStatement", - "src": "3023:68:10", + "src": "2359:68:7", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1327, + "id": 1131, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1279, - "src": "3080:10:10", + "referencedDeclaration": 1087, + "src": "2416:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2508,18 +2212,18 @@ "typeString": "uint8" } ], - "id": 1326, + "id": 1130, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1408, - "src": "3064:15:10", + "referencedDeclaration": 1271, + "src": "2400:15:7", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, - "id": 1328, + "id": 1132, "isConstant": false, "isLValue": false, "isPure": false, @@ -2527,84 +2231,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3064:27:10", + "src": "2400:27:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1329, + "id": 1133, "nodeType": "ExpressionStatement", - "src": "3064:27:10" + "src": "2400:27:7" } } ] }, - "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 ownerIndex Array index position of owner address to be removed.\n @param owner Owner address to be removed.\n @param _threshold New threshold.", - "id": 1332, + "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": 1136, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1282, + "id": 1090, "modifierName": { "argumentTypes": null, - "id": 1281, + "id": 1089, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "2596:10:10", + "referencedDeclaration": 1358, + "src": "1993:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2596:10:10" + "src": "1993:10:7" } ], - "name": "removeOwner", + "name": "addOwnerWithThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1280, + "id": 1088, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1275, - "name": "ownerIndex", - "nodeType": "VariableDeclaration", - "scope": 1332, - "src": "2520:18:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1274, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2520:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1277, + "id": 1085, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1332, - "src": "2540:13:10", + "scope": 1136, + "src": "1937:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2612,10 +2290,10 @@ "typeString": "address" }, "typeName": { - "id": 1276, + "id": 1084, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2540:7:10", + "src": "1937:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2626,11 +2304,11 @@ }, { "constant": false, - "id": 1279, + "id": 1087, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1332, - "src": "2555:16:10", + "scope": 1136, + "src": "1952:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2638,10 +2316,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1278, + "id": 1086, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2555:5:10", + "src": "1952:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2651,26 +2329,26 @@ "visibility": "internal" } ], - "src": "2519:53:10" + "src": "1936:33:7" }, "payable": false, "returnParameters": { - "id": 1283, + "id": 1091, "nodeType": "ParameterList", "parameters": [], - "src": "2611:0:10" + "src": "2008:0:7" }, - "scope": 1438, - "src": "2499:599:10", + "scope": 1343, + "src": "1906:528:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1382, + "id": 1188, "nodeType": "Block", - "src": "3538:382:10", + "src": "2887:462:7", "statements": [ { "expression": { @@ -2679,48 +2357,80 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 1346, + "id": 1152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1344, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1338, - "src": "3597:8:10", + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1148, + "name": "ownerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "2982:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2995:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2982:14:7", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "!=", + "operator": ">=", "rightExpression": { "argumentTypes": null, - "hexValue": "30", - "id": 1345, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3609:1:10", - "subdenomination": null, + "id": 1151, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "3000:10:7", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } }, - "src": "3597:13:10", + "src": "2982:28:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2734,21 +2444,21 @@ "typeString": "bool" } ], - "id": 1343, + "id": 1147, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "3589:7:10", + "referencedDeclaration": 2399, + "src": "2974:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1347, + "id": 1153, "isConstant": false, "isLValue": false, "isPure": false, @@ -2756,15 +2466,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3589:22:10", + "src": "2974:37:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1348, + "id": 1154, "nodeType": "ExpressionStatement", - "src": "3589:22:10" + "src": "2974:37:7" }, { "expression": { @@ -2772,41 +2482,39 @@ "arguments": [ { "argumentTypes": null, - "id": 1353, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "3669:18:10", - "subExpression": { + "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1350, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "3670:7:10", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1352, - "indexExpression": { - "argumentTypes": null, - "id": 1351, - "name": "newOwner", + "id": 1156, + "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1338, - "src": "3678:8:10", + "referencedDeclaration": 985, + "src": "3091:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1158, + "indexExpression": { + "argumentTypes": null, + "id": 1157, + "name": "prevOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1138, + "src": "3098:9:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2817,12 +2525,28 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3670:17:10", + "src": "3091:17:7", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1159, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "3112:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3091:26:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2836,21 +2560,21 @@ "typeString": "bool" } ], - "id": 1349, + "id": 1155, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "3661:7:10", + "referencedDeclaration": 2399, + "src": "3083:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1354, + "id": 1161, "isConstant": false, "isLValue": false, "isPure": false, @@ -2858,15 +2582,624 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3661:27:10", + "src": "3083:35:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1355, + "id": 1162, "nodeType": "ExpressionStatement", - "src": "3661:27:10" + "src": "3083:35:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1163, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "3128:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1165, + "indexExpression": { + "argumentTypes": null, + "id": 1164, + "name": "prevOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1138, + "src": "3135:9:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3128:17:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1166, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "3148:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1168, + "indexExpression": { + "argumentTypes": null, + "id": 1167, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "3155:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3148:13:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3128:33:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1170, + "nodeType": "ExpressionStatement", + "src": "3128:33:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1171, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "3171:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1173, + "indexExpression": { + "argumentTypes": null, + "id": 1172, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "3178:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3171:13:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1174, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3187:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3171:17:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1176, + "nodeType": "ExpressionStatement", + "src": "3171:17:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "3198:12:7", + "subExpression": { + "argumentTypes": null, + "id": 1177, + "name": "ownerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "3198:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1179, + "nodeType": "ExpressionStatement", + "src": "3198:12:7" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1180, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "3278:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 1181, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "3291:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "3278:23:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1187, + "nodeType": "IfStatement", + "src": "3274:68:7", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1184, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "3331:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1183, + "name": "changeThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1271, + "src": "3315:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", + "typeString": "function (uint8)" + } + }, + "id": 1185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3315:27:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1186, + "nodeType": "ExpressionStatement", + "src": "3315:27:7" + } + } + ] + }, + "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": 1189, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1145, + "modifierName": { + "argumentTypes": null, + "id": 1144, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "2872:10:7", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2872:10:7" + } + ], + "name": "removeOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1143, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1138, + "name": "prevOwner", + "nodeType": "VariableDeclaration", + "scope": 1189, + "src": "2797:17:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1137, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2797:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1140, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1189, + "src": "2816:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1139, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2816:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1142, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 1189, + "src": "2831:16:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1141, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2831:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2796:52:7" + }, + "payable": false, + "returnParameters": { + "id": 1146, + "nodeType": "ParameterList", + "parameters": [], + "src": "2887:0:7" + }, + "scope": 1343, + "src": "2776:573:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1246, + "nodeType": "Block", + "src": "3795:414:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1201, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1195, + "src": "3854:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1202, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3866:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3854:13:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1204, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1195, + "src": "3871:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 1205, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "3883:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3871:27:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3854:44:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1200, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "3846:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3846:53:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1209, + "nodeType": "ExpressionStatement", + "src": "3846:53:7" }, { "expression": { @@ -2878,7 +3211,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1361, + "id": 1215, "isConstant": false, "isLValue": false, "isPure": false, @@ -2887,29 +3220,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1357, + "id": 1211, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "3768:6:10", + "referencedDeclaration": 985, + "src": "3957:6:7", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" } }, - "id": 1359, + "id": 1213, "indexExpression": { "argumentTypes": null, - "id": 1358, - "name": "oldOwnerIndex", + "id": 1212, + "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1334, - "src": "3775:13:10", + "referencedDeclaration": 1195, + "src": "3964:8:7", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "isConstant": false, @@ -2917,7 +3250,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3768:21:10", + "src": "3957:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2927,18 +3260,23 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1360, - "name": "oldOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1336, - "src": "3793:8:10", + "hexValue": "30", + "id": 1214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3977:1:7", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" }, - "src": "3768:33:10", + "src": "3957:21:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2952,21 +3290,21 @@ "typeString": "bool" } ], - "id": 1356, + "id": 1210, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "3760:7:10", + "referencedDeclaration": 2399, + "src": "3949:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1362, + "id": 1216, "isConstant": false, "isLValue": false, "isPure": false, @@ -2974,100 +3312,136 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3760:42:10", + "src": "3949:30:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1363, + "id": 1217, "nodeType": "ExpressionStatement", - "src": "3760:42:10" + "src": "3949:30:7" }, { "expression": { "argumentTypes": null, - "id": 1368, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { + "arguments": [ + { "argumentTypes": null, - "id": 1364, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "3812:7:10", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1366, - "indexExpression": { - "argumentTypes": null, - "id": 1365, - "name": "oldOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1336, - "src": "3820:8:10", - "typeDescriptions": { + "commonType": { "typeIdentifier": "t_address", "typeString": "address" + }, + "id": 1223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1219, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "4059:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1221, + "indexExpression": { + "argumentTypes": null, + "id": 1220, + "name": "prevOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1191, + "src": "4066:9:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4059:17:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1222, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1193, + "src": "4080:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4059:29:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3812:17:10", + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1218, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "4051:7:7", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1367, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3832:5:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "3812:25:10", + "id": 1224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4051:38:7", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 1369, + "id": 1225, "nodeType": "ExpressionStatement", - "src": "3812:25:10" + "src": "4051:38:7" }, { "expression": { "argumentTypes": null, - "id": 1374, + "id": 1232, "isConstant": false, "isLValue": false, "isPure": false, @@ -3076,109 +3450,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1370, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "3847:7:10", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1372, - "indexExpression": { - "argumentTypes": null, - "id": 1371, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1338, - "src": "3855:8:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3847:17:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1373, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3867:4:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "3847:24:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1375, - "nodeType": "ExpressionStatement", - "src": "3847:24:10" - }, - { - "expression": { - "argumentTypes": null, - "id": 1380, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1376, + "id": 1226, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "3881:6:10", + "referencedDeclaration": 985, + "src": "4099:6:7", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" } }, - "id": 1378, + "id": 1228, "indexExpression": { "argumentTypes": null, - "id": 1377, - "name": "oldOwnerIndex", + "id": 1227, + "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1334, - "src": "3888:13:10", + "referencedDeclaration": 1195, + "src": "4106:8:7", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "isConstant": false, @@ -3186,7 +3480,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3881:21:10", + "src": "4099:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3196,94 +3490,246 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1379, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1338, - "src": "3905:8:10", + "baseExpression": { + "argumentTypes": null, + "id": 1229, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "4118:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1231, + "indexExpression": { + "argumentTypes": null, + "id": 1230, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1193, + "src": "4125:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4118:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3881:32:10", + "src": "4099:35:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1381, + "id": 1233, "nodeType": "ExpressionStatement", - "src": "3881:32:10" + "src": "4099:35:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1234, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "4144:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1236, + "indexExpression": { + "argumentTypes": null, + "id": 1235, + "name": "prevOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1191, + "src": "4151:9:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4144:17:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1237, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1195, + "src": "4164:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4144:28:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1239, + "nodeType": "ExpressionStatement", + "src": "4144:28:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1240, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "4182:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1242, + "indexExpression": { + "argumentTypes": null, + "id": 1241, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1193, + "src": "4189:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4182:16:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1243, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4201:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4182:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1245, + "nodeType": "ExpressionStatement", + "src": "4182:20:7" } ] }, - "documentation": "@dev Allows to replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param oldOwnerIndex Array index position of owner address to be replaced.\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", - "id": 1383, + "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": 1247, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1341, + "id": 1198, "modifierName": { "argumentTypes": null, - "id": 1340, + "id": 1197, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "3523:10:10", + "referencedDeclaration": 1358, + "src": "3780:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3523:10:10" + "src": "3780:10:7" } ], - "name": "replaceOwner", + "name": "swapOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1339, + "id": 1196, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1334, - "name": "oldOwnerIndex", + "id": 1191, + "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1383, - "src": "3441:21:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1333, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3441:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1336, - "name": "oldOwner", - "nodeType": "VariableDeclaration", - "scope": 1383, - "src": "3464:16:10", + "scope": 1247, + "src": "3702:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3291,10 +3737,10 @@ "typeString": "address" }, "typeName": { - "id": 1335, + "id": 1190, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3464:7:10", + "src": "3702:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3305,11 +3751,11 @@ }, { "constant": false, - "id": 1338, - "name": "newOwner", + "id": 1193, + "name": "oldOwner", "nodeType": "VariableDeclaration", - "scope": 1383, - "src": "3482:16:10", + "scope": 1247, + "src": "3721:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3317,10 +3763,36 @@ "typeString": "address" }, "typeName": { - "id": 1337, + "id": 1192, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3482:7:10", + "src": "3721:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1195, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 1247, + "src": "3739:16:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1194, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3739:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3330,26 +3802,26 @@ "visibility": "internal" } ], - "src": "3440:59:10" + "src": "3701:55:7" }, "payable": false, "returnParameters": { - "id": 1342, + "id": 1199, "nodeType": "ParameterList", "parameters": [], - "src": "3538:0:10" + "src": "3795:0:7" }, - "scope": 1438, - "src": "3419:501:10", + "scope": 1343, + "src": "3683:526:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1407, + "id": 1270, "nodeType": "Block", - "src": "4190:240:10", + "src": "4479:237:7", "statements": [ { "expression": { @@ -3361,19 +3833,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1394, + "id": 1257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1391, + "id": 1255, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1385, - "src": "4277:10:10", + "referencedDeclaration": 1249, + "src": "4566:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3383,34 +3855,18 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1392, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "4291:6:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1393, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4291:13:10", + "id": 1256, + "name": "ownerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "4580:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4277:27:10", + "src": "4566:24:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3424,21 +3880,21 @@ "typeString": "bool" } ], - "id": 1390, + "id": 1254, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "4269:7:10", + "referencedDeclaration": 2399, + "src": "4558:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1395, + "id": 1258, "isConstant": false, "isLValue": false, "isPure": false, @@ -3446,15 +3902,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4269:36:10", + "src": "4558:33:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1396, + "id": 1259, "nodeType": "ExpressionStatement", - "src": "4269:36:10" + "src": "4558:33:7" }, { "expression": { @@ -3466,19 +3922,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1400, + "id": 1263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1398, + "id": 1261, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1385, - "src": "4375:10:10", + "referencedDeclaration": 1249, + "src": "4661:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3489,14 +3945,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1399, + "id": 1262, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4389:1:10", + "src": "4675:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -3504,7 +3960,7 @@ }, "value": "1" }, - "src": "4375:15:10", + "src": "4661:15:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3518,21 +3974,21 @@ "typeString": "bool" } ], - "id": 1397, + "id": 1260, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "4367:7:10", + "referencedDeclaration": 2399, + "src": "4653:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1401, + "id": 1264, "isConstant": false, "isLValue": false, "isPure": false, @@ -3540,34 +3996,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4367:24:10", + "src": "4653:24:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1402, + "id": 1265, "nodeType": "ExpressionStatement", - "src": "4367:24:10" + "src": "4653:24:7" }, { "expression": { "argumentTypes": null, - "id": 1405, + "id": 1268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1403, + "id": 1266, "name": "threshold", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "4401:9:10", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "4687:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3577,68 +4031,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1404, + "id": 1267, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1385, - "src": "4413:10:10", + "referencedDeclaration": 1249, + "src": "4699:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4401:22:10", + "src": "4687:22:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1406, + "id": 1269, "nodeType": "ExpressionStatement", - "src": "4401:22:10" + "src": "4687:22:7" } ] }, "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": 1408, + "id": 1271, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1388, + "id": 1252, "modifierName": { "argumentTypes": null, - "id": 1387, + "id": 1251, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "4175:10:10", + "referencedDeclaration": 1358, + "src": "4464:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4175:10:10" + "src": "4464:10:7" } ], "name": "changeThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1386, + "id": 1250, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1385, + "id": 1249, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1408, - "src": "4134:16:10", + "scope": 1271, + "src": "4423:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3646,10 +4100,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1384, + "id": 1248, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4134:5:10", + "src": "4423:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3659,76 +4113,74 @@ "visibility": "internal" } ], - "src": "4133:18:10" + "src": "4422:18:7" }, "payable": false, "returnParameters": { - "id": 1389, + "id": 1253, "nodeType": "ParameterList", "parameters": [], - "src": "4190:0:10" + "src": "4479:0:7" }, - "scope": 1438, - "src": "4109:321:10", + "scope": 1343, + "src": "4398:318:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1415, + "id": 1278, "nodeType": "Block", - "src": "4513:33:10", + "src": "4802:33:7", "statements": [ { "expression": { "argumentTypes": null, - "id": 1413, + "id": 1276, "name": "threshold", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "4530:9:10", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "4819:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 1412, - "id": 1414, + "functionReturnParameters": 1275, + "id": 1277, "nodeType": "Return", - "src": "4523:16:10" + "src": "4812:16:7" } ] }, "documentation": null, - "id": 1416, + "id": 1279, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "threshold", + "name": "getThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1409, + "id": 1272, "nodeType": "ParameterList", "parameters": [], - "src": "4454:2:10" + "src": "4743:2:7" }, "payable": false, "returnParameters": { - "id": 1412, + "id": 1275, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1411, + "id": 1274, "name": "", "nodeType": "VariableDeclaration", - "scope": 1416, - "src": "4502:5:10", + "scope": 1279, + "src": "4791:5:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3736,10 +4188,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1410, + "id": 1273, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4502:5:10", + "src": "4791:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3749,47 +4201,419 @@ "visibility": "internal" } ], - "src": "4501:7:10" + "src": "4790:7:7" }, - "scope": 1438, - "src": "4436:110:10", + "scope": 1343, + "src": "4722:113:7", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1427, + "id": 1292, "nodeType": "Block", - "src": "4639:38:10", + "src": "4928:42:7", "statements": [ { "expression": { "argumentTypes": null, - "baseExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "argumentTypes": null, - "id": 1423, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "4656:7:10", + "baseExpression": { + "argumentTypes": null, + "id": 1286, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "4945:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1288, + "indexExpression": { + "argumentTypes": null, + "id": 1287, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1281, + "src": "4952:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4945:13:7", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1425, - "indexExpression": { + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { "argumentTypes": null, - "id": 1424, - "name": "owner", + "hexValue": "30", + "id": 1289, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4962:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4945:18:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1285, + "id": 1291, + "nodeType": "Return", + "src": "4938:25:7" + } + ] + }, + "documentation": null, + "id": 1293, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1282, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1281, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1293, + "src": "4858:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1280, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4858:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4857:15:7" + }, + "payable": false, + "returnParameters": { + "id": 1285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1284, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1293, + "src": "4918:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1283, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4918:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4917:6:7" + }, + "scope": 1343, + "src": "4841:129:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1341, + "nodeType": "Block", + "src": "5133:377:7", + "statements": [ + { + "assignments": [ + 1302 + ], + "declarations": [ + { + "constant": false, + "id": 1302, + "name": "array", + "nodeType": "VariableDeclaration", + "scope": 1342, + "src": "5143:22:7", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1300, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5143:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1301, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5143:9:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1308, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1306, + "name": "ownerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "5182:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1305, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "5168:13:7", + "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": 1303, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5172:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1304, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5172:9:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + } + }, + "id": 1307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5168:25:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5143:50:7" + }, + { + "assignments": [ + 1310 + ], + "declarations": [ + { + "constant": false, + "id": 1310, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 1342, + "src": "5237:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1309, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5237:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1312, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1311, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5253:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5237:17:7" + }, + { + "assignments": [ + 1314 + ], + "declarations": [ + { + "constant": false, + "id": 1314, + "name": "currentOwner", + "nodeType": "VariableDeclaration", + "scope": 1342, + "src": "5264:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1313, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5264:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1318, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1315, + "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1418, - "src": "4664:5:10", + "referencedDeclaration": 985, + "src": "5287:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1317, + "indexExpression": { + "argumentTypes": null, + "id": 1316, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "5294:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3800,129 +4624,275 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4656:14:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 1422, - "id": 1426, - "nodeType": "Return", - "src": "4649:21:10" - } - ] - }, - "documentation": null, - "id": 1428, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "isOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1419, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1418, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 1428, - "src": "4569:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1417, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4569:7:10", + "src": "5287:23:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "value": null, - "visibility": "internal" - } - ], - "src": "4568:15:10" - }, - "payable": false, - "returnParameters": { - "id": 1422, - "nodeType": "ParameterList", - "parameters": [ + "nodeType": "VariableDeclarationStatement", + "src": "5264:46:7" + }, { - "constant": false, - "id": 1421, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1428, - "src": "4629:4:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "body": { + "id": 1337, + "nodeType": "Block", + "src": "5359:123:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1322, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1302, + "src": "5373:5:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1324, + "indexExpression": { + "argumentTypes": null, + "id": 1323, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1310, + "src": "5379:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5373:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1325, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1314, + "src": "5388:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5373:27:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1327, + "nodeType": "ExpressionStatement", + "src": "5373:27:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1328, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1314, + "src": "5414:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1329, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "5429:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1331, + "indexExpression": { + "argumentTypes": null, + "id": 1330, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1314, + "src": "5436:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5429:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5414:35:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1333, + "nodeType": "ExpressionStatement", + "src": "5414:35:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "5463:8:7", + "subExpression": { + "argumentTypes": null, + "id": 1334, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1310, + "src": "5463:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1336, + "nodeType": "ExpressionStatement", + "src": "5463:8:7" + } + ] }, - "typeName": { - "id": 1420, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4629:4:10", + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1319, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1314, + "src": "5326:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 1320, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "5342:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5326:31:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "value": null, - "visibility": "internal" - } - ], - "src": "4628:6:10" - }, - "scope": 1438, - "src": "4552:125:10", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1436, - "nodeType": "Block", - "src": "4840:30:10", - "statements": [ + "id": 1338, + "nodeType": "WhileStatement", + "src": "5320:162:7" + }, { "expression": { "argumentTypes": null, - "id": 1434, - "name": "owners", + "id": 1339, + "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "4857:6:10", + "referencedDeclaration": 1302, + "src": "5498:5:7", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" } }, - "functionReturnParameters": 1433, - "id": 1435, + "functionReturnParameters": 1298, + "id": 1340, "nodeType": "Return", - "src": "4850:13:10" + "src": "5491:12:7" } ] }, "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", - "id": 1437, + "id": 1342, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3930,23 +4900,23 @@ "name": "getOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1429, + "id": 1294, "nodeType": "ParameterList", "parameters": [], - "src": "4777:2:10" + "src": "5070:2:7" }, "payable": false, "returnParameters": { - "id": 1433, + "id": 1298, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1432, + "id": 1297, "name": "", "nodeType": "VariableDeclaration", - "scope": 1437, - "src": "4825:9:10", + "scope": 1342, + "src": "5118:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3955,19 +4925,19 @@ }, "typeName": { "baseType": { - "id": 1430, + "id": 1295, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4825:7:10", + "src": "5118:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1431, + "id": 1296, "length": null, "nodeType": "ArrayTypeName", - "src": "4825:9:10", + "src": "5118:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -3977,49 +4947,49 @@ "visibility": "internal" } ], - "src": "4824:11:10" + "src": "5117:11:7" }, - "scope": 1438, - "src": "4759:111:10", + "scope": 1343, + "src": "5052:458:7", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1439, - "src": "240:4632:10" + "scope": 1344, + "src": "240:5272:7" } ], - "src": "0:4873:10" + "src": "0:5513:7" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "exportedSymbols": { "OwnerManager": [ - 1438 + 1343 ] }, - "id": 1439, + "id": 1344, "nodeType": "SourceUnit", "nodes": [ { - "id": 1144, + "id": 973, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:10" + "src": "0:23:7" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 1145, + "id": 974, "nodeType": "ImportDirective", - "scope": 1439, - "sourceUnit": 1560, - "src": "24:30:10", + "scope": 1344, + "sourceUnit": 1360, + "src": "24:30:7", "symbolAliases": [], "unitAlias": "" }, @@ -4029,78 +4999,194 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1146, + "id": 975, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1559, - "src": "265:14:10", + "referencedDeclaration": 1359, + "src": "265:14:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeIdentifier": "t_contract$_SelfAuthorized_$1359", "typeString": "contract SelfAuthorized" } }, - "id": 1147, + "id": 976, "nodeType": "InheritanceSpecifier", - "src": "265:14:10" + "src": "265:14:7" } ], "contractDependencies": [ - 1559 + 1359 ], "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": 1438, + "id": 1343, "linearizedBaseContracts": [ - 1438, - 1559 + 1343, + 1359 ], "name": "OwnerManager", "nodeType": "ContractDefinition", "nodes": [ { - "constant": false, - "id": 1150, - "name": "owners", + "constant": true, + "id": 981, + "name": "SENTINEL_OWNERS", "nodeType": "VariableDeclaration", - "scope": 1438, - "src": "287:23:10", + "scope": 1343, + "src": "287:54:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[]" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "baseType": { - "id": 1148, + "id": 977, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "287:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "307831", + "id": 979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "337:3:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "0x1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "329:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 980, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "329:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "id": 985, + "name": "owners", + "nodeType": "VariableDeclaration", + "scope": 1343, + "src": "348:43:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "typeName": { + "id": 984, + "keyType": { + "id": 982, "name": "address", "nodeType": "ElementaryTypeName", - "src": "287:7:10", + "src": "356:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1149, - "length": null, - "nodeType": "ArrayTypeName", - "src": "287:9:10", + "nodeType": "Mapping", + "src": "348:27:7", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "valueType": { + "id": 983, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "367:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } }, "value": null, - "visibility": "public" + "visibility": "internal" }, { "constant": false, - "id": 1152, + "id": 987, + "name": "ownerCount", + "nodeType": "VariableDeclaration", + "scope": 1343, + "src": "397:18:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 986, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "397:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 989, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 1438, - "src": "316:22:10", + "scope": 1343, + "src": "421:24:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4108,68 +5194,23 @@ "typeString": "uint8" }, "typeName": { - "id": 1151, + "id": 988, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "316:5:10", + "src": "421:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1156, - "name": "isOwner", - "nodeType": "VariableDeclaration", - "scope": 1438, - "src": "415:40:10", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 1155, - "keyType": { - "id": 1153, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "424:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "415:25:10", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 1154, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "435:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" + "visibility": "internal" }, { "body": { - "id": 1229, + "id": 1082, "nodeType": "Block", - "src": "730:767:10", + "src": "720:946:7", "statements": [ { "expression": { @@ -4181,21 +5222,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1167, + "id": 1000, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1165, + "id": 998, "name": "threshold", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "872:9:10", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "862:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4206,14 +5245,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1166, + "id": 999, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "885:1:10", + "src": "875:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4221,7 +5260,7 @@ }, "value": "0" }, - "src": "872:14:10", + "src": "862:14:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4235,21 +5274,21 @@ "typeString": "bool" } ], - "id": 1164, + "id": 997, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "864:7:10", + "referencedDeclaration": 2399, + "src": "854:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1168, + "id": 1001, "isConstant": false, "isLValue": false, "isPure": false, @@ -4257,15 +5296,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "864:23:10", + "src": "854:23:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1169, + "id": 1002, "nodeType": "ExpressionStatement", - "src": "864:23:10" + "src": "854:23:7" }, { "expression": { @@ -4277,19 +5316,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1174, + "id": 1007, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1171, + "id": 1004, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "980:10:10", + "referencedDeclaration": 994, + "src": "970:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4301,18 +5340,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1172, + "id": 1005, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1159, - "src": "994:7:10", + "referencedDeclaration": 992, + "src": "984:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1173, + "id": 1006, "isConstant": false, "isLValue": false, "isPure": false, @@ -4320,13 +5359,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "994:14:10", + "src": "984:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "980:28:10", + "src": "970:28:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4340,21 +5379,21 @@ "typeString": "bool" } ], - "id": 1170, + "id": 1003, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "972:7:10", + "referencedDeclaration": 2399, + "src": "962:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1175, + "id": 1008, "isConstant": false, "isLValue": false, "isPure": false, @@ -4362,15 +5401,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "972:37:10", + "src": "962:37:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1176, + "id": 1009, "nodeType": "ExpressionStatement", - "src": "972:37:10" + "src": "962:37:7" }, { "expression": { @@ -4382,19 +5421,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1180, + "id": 1013, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1178, + "id": 1011, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1079:10:10", + "referencedDeclaration": 994, + "src": "1069:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4405,14 +5444,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1179, + "id": 1012, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1093:1:10", + "src": "1083:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4420,7 +5459,7 @@ }, "value": "1" }, - "src": "1079:15:10", + "src": "1069:15:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4434,21 +5473,21 @@ "typeString": "bool" } ], - "id": 1177, + "id": 1010, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1071:7:10", + "referencedDeclaration": 2399, + "src": "1061:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1181, + "id": 1014, "isConstant": false, "isLValue": false, "isPure": false, @@ -4456,34 +5495,83 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1071:24:10", + "src": "1061:24:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1182, + "id": 1015, "nodeType": "ExpressionStatement", - "src": "1071:24:10" + "src": "1061:24:7" + }, + { + "assignments": [ + 1017 + ], + "declarations": [ + { + "constant": false, + "id": 1017, + "name": "currentOwner", + "nodeType": "VariableDeclaration", + "scope": 1083, + "src": "1132:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1016, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1132:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1019, + "initialValue": { + "argumentTypes": null, + "id": 1018, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "1155:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1132:38:7" }, { "body": { - "id": 1219, + "id": 1065, "nodeType": "Block", - "src": "1187:246:10", + "src": "1225:318:7", "statements": [ { "assignments": [ - 1195 + 1032 ], "declarations": [ { "constant": false, - "id": 1195, + "id": 1032, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1230, - "src": "1246:13:10", + "scope": 1083, + "src": "1284:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4491,10 +5579,10 @@ "typeString": "address" }, "typeName": { - "id": 1194, + "id": 1031, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1246:7:10", + "src": "1284:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4504,31 +5592,31 @@ "visibility": "internal" } ], - "id": 1199, + "id": 1036, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1196, + "id": 1033, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1159, - "src": "1262:7:10", + "referencedDeclaration": 992, + "src": "1300:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1198, + "id": 1035, "indexExpression": { "argumentTypes": null, - "id": 1197, + "id": 1034, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1184, - "src": "1270:1:10", + "referencedDeclaration": 1021, + "src": "1308:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4539,14 +5627,172 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1262:10:10", + "src": "1300:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1246:26:10" + "src": "1284:26:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1038, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "1332:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1039, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1341:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1332:10:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1041, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "1346:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 1042, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "1355:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1346:24:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1332:38:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1037, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "1324:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1324:47:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1046, + "nodeType": "ExpressionStatement", + "src": "1324:47:7" }, { "expression": { @@ -4558,131 +5804,35 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1203, + "id": 1052, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "argumentTypes": null, - "id": 1201, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "1294:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1202, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1303:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1294:10:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1200, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "1286:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1286:19:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1205, - "nodeType": "ExpressionStatement", - "src": "1286:19:10" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1210, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1371:15:10", - "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1207, - "name": "isOwner", + "id": 1048, + "name": "owners", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "1372:7:10", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "1437:6:7", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" } }, - "id": 1209, + "id": 1050, "indexExpression": { "argumentTypes": null, - "id": 1208, + "id": 1049, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "1380:5:10", + "referencedDeclaration": 1032, + "src": "1444:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4693,12 +5843,33 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1372:14:10", + "src": "1437:13:7", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1051, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1454:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1437:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4712,21 +5883,21 @@ "typeString": "bool" } ], - "id": 1206, + "id": 1047, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1363:7:10", + "referencedDeclaration": 2399, + "src": "1429:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1211, + "id": 1053, "isConstant": false, "isLValue": false, "isPure": false, @@ -4734,20 +5905,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1363:24:10", + "src": "1429:27:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1212, + "id": 1054, "nodeType": "ExpressionStatement", - "src": "1363:24:10" + "src": "1429:27:7" }, { "expression": { "argumentTypes": null, - "id": 1217, + "id": 1059, "isConstant": false, "isLValue": false, "isPure": false, @@ -4756,28 +5927,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1213, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "1401:7:10", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1215, - "indexExpression": { - "argumentTypes": null, - "id": 1214, - "name": "owner", + "id": 1055, + "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "1409:5:10", + "referencedDeclaration": 985, + "src": "1470:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1057, + "indexExpression": { + "argumentTypes": null, + "id": 1056, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1017, + "src": "1477:12:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4788,41 +5957,82 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1401:14:10", + "src": "1470:20:7", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "hexValue": "74727565", - "id": 1216, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1418:4:10", - "subdenomination": null, + "id": 1058, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "1493:5:7", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "src": "1401:21:10", + "src": "1470:28:7", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1218, + "id": 1060, "nodeType": "ExpressionStatement", - "src": "1401:21:10" + "src": "1470:28:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1061, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1017, + "src": "1512:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1062, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1032, + "src": "1527:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1512:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1064, + "nodeType": "ExpressionStatement", + "src": "1512:20:7" } ] }, @@ -4832,19 +6042,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1190, + "id": 1027, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1187, + "id": 1024, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1184, - "src": "1162:1:10", + "referencedDeclaration": 1021, + "src": "1200:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4856,18 +6066,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1188, + "id": 1025, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1159, - "src": "1166:7:10", + "referencedDeclaration": 992, + "src": "1204:7:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1189, + "id": 1026, "isConstant": false, "isLValue": false, "isPure": false, @@ -4875,31 +6085,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1166:14:10", + "src": "1204:14:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1162:18:10", + "src": "1200:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1220, + "id": 1066, "initializationExpression": { "assignments": [ - 1184 + 1021 ], "declarations": [ { "constant": false, - "id": 1184, + "id": 1021, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1230, - "src": "1147:9:10", + "scope": 1083, + "src": "1185:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4907,10 +6117,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1183, + "id": 1020, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1147:7:10", + "src": "1185:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4920,18 +6130,18 @@ "visibility": "internal" } ], - "id": 1186, + "id": 1023, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1185, + "id": 1022, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1159:1:10", + "src": "1197:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4940,12 +6150,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1147:13:10" + "src": "1185:13:7" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1192, + "id": 1029, "isConstant": false, "isLValue": false, "isPure": false, @@ -4953,15 +6163,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1182:3:10", + "src": "1220:3:7", "subExpression": { "argumentTypes": null, - "id": 1191, + "id": 1028, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1184, - "src": "1182:1:10", + "referencedDeclaration": 1021, + "src": "1220:1:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4972,77 +6182,164 @@ "typeString": "uint256" } }, - "id": 1193, + "id": 1030, "nodeType": "ExpressionStatement", - "src": "1182:3:10" + "src": "1220:3:7" }, "nodeType": "ForStatement", - "src": "1142:291:10" + "src": "1180:363:7" }, { "expression": { "argumentTypes": null, - "id": 1223, + "id": 1071, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1221, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "1442:6:10", + "baseExpression": { + "argumentTypes": null, + "id": 1067, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "1552:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1069, + "indexExpression": { + "argumentTypes": null, + "id": 1068, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1017, + "src": "1559:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1552:20:7", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1222, - "name": "_owners", + "id": 1070, + "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1159, - "src": "1451:7:10", + "referencedDeclaration": 981, + "src": "1575:15:7", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "src": "1442:16:10", + "src": "1552:38:7", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1224, + "id": 1072, "nodeType": "ExpressionStatement", - "src": "1442:16:10" + "src": "1552:38:7" }, { "expression": { "argumentTypes": null, - "id": 1227, + "id": 1076, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1225, + "id": 1073, + "name": "ownerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "1600:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1074, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 992, + "src": "1613:7:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1613:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1600:27:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1077, + "nodeType": "ExpressionStatement", + "src": "1600:27:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1078, "name": "threshold", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "1468:9:10", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "1637:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5052,31 +6349,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1226, + "id": 1079, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1480:10:10", + "referencedDeclaration": 994, + "src": "1649:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1468:22:10", + "src": "1637:22:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1228, + "id": 1081, "nodeType": "ExpressionStatement", - "src": "1468:22:10" + "src": "1637:22:7" } ] }, "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": 1230, + "id": 1083, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5084,16 +6381,16 @@ "name": "setupOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1162, + "id": 995, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1159, + "id": 992, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 1230, - "src": "672:17:10", + "scope": 1083, + "src": "662:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5102,19 +6399,19 @@ }, "typeName": { "baseType": { - "id": 1157, + "id": 990, "name": "address", "nodeType": "ElementaryTypeName", - "src": "672:7:10", + "src": "662:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1158, + "id": 991, "length": null, "nodeType": "ArrayTypeName", - "src": "672:9:10", + "src": "662:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -5125,11 +6422,11 @@ }, { "constant": false, - "id": 1161, + "id": 994, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1230, - "src": "691:16:10", + "scope": 1083, + "src": "681:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5137,10 +6434,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1160, + "id": 993, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "691:5:10", + "src": "681:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5150,26 +6447,26 @@ "visibility": "internal" } ], - "src": "671:37:10" + "src": "661:37:7" }, "payable": false, "returnParameters": { - "id": 1163, + "id": 996, "nodeType": "ParameterList", "parameters": [], - "src": "730:0:10" + "src": "720:0:7" }, - "scope": 1438, - "src": "651:846:10", + "scope": 1343, + "src": "641:1025:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1272, + "id": 1135, "nodeType": "Block", - "src": "1826:342:10", + "src": "2008:426:7", "statements": [ { "expression": { @@ -5178,48 +6475,112 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" }, - "id": 1242, + "id": 1099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1240, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "1885:5:10", - "typeDescriptions": { + "commonType": { "typeIdentifier": "t_address", "typeString": "address" + }, + "id": 1095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1093, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1085, + "src": "2067:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1094, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2076:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2067:10:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "nodeType": "BinaryOperation", - "operator": "!=", + "operator": "&&", "rightExpression": { "argumentTypes": null, - "hexValue": "30", - "id": 1241, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1098, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "number", + "isPure": false, "lValueRequested": false, - "nodeType": "Literal", - "src": "1894:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "leftExpression": { + "argumentTypes": null, + "id": 1096, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1085, + "src": "2081:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "value": "0" + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 1097, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "2090:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2081:24:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, - "src": "1885:10:10", + "src": "2067:38:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5233,21 +6594,21 @@ "typeString": "bool" } ], - "id": 1239, + "id": 1092, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1877:7:10", + "referencedDeclaration": 2399, + "src": "2059:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1243, + "id": 1100, "isConstant": false, "isLValue": false, "isPure": false, @@ -5255,15 +6616,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1877:19:10", + "src": "2059:47:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1244, + "id": 1101, "nodeType": "ExpressionStatement", - "src": "1877:19:10" + "src": "2059:47:7" }, { "expression": { @@ -5271,41 +6632,39 @@ "arguments": [ { "argumentTypes": null, - "id": 1249, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1954:15:10", - "subExpression": { + "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1246, - "name": "isOwner", + "id": 1103, + "name": "owners", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "1955:7:10", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "2164:6:7", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" } }, - "id": 1248, + "id": 1105, "indexExpression": { "argumentTypes": null, - "id": 1247, + "id": 1104, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "1963:5:10", + "referencedDeclaration": 1085, + "src": "2171:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5316,614 +6675,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1955:14:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1245, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "1946:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1250, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1946:24:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1251, - "nodeType": "ExpressionStatement", - "src": "1946:24:10" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1255, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "1992:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 1252, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "1980:6:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1254, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "push", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1980:11:10", - "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) returns (uint256)" - } - }, - "id": 1256, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1980:18:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1257, - "nodeType": "ExpressionStatement", - "src": "1980:18:10" - }, - { - "expression": { - "argumentTypes": null, - "id": 1262, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1258, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "2008:7:10", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1260, - "indexExpression": { - "argumentTypes": null, - "id": 1259, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "2016:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2008:14:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1261, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2025:4:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2008:21:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1263, - "nodeType": "ExpressionStatement", - "src": "2008:21:10" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 1266, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1264, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "2097:9:10", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 1265, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1234, - "src": "2110:10:10", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2097:23:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1271, - "nodeType": "IfStatement", - "src": "2093:68:10", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1268, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1234, - "src": "2150:10:10", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 1267, - "name": "changeThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1408, - "src": "2134:15:10", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", - "typeString": "function (uint8)" - } - }, - "id": 1269, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2134:27:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1270, - "nodeType": "ExpressionStatement", - "src": "2134:27:10" - } - } - ] - }, - "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": 1273, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 1237, - "modifierName": { - "argumentTypes": null, - "id": 1236, - "name": "authorized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "1811:10:10", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "1811:10:10" - } - ], - "name": "addOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1235, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1232, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 1273, - "src": "1755:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1231, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1755:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1234, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 1273, - "src": "1770:16:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1233, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1770:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1754:33:10" - }, - "payable": false, - "returnParameters": { - "id": 1238, - "nodeType": "ParameterList", - "parameters": [], - "src": "1826:0:10" - }, - "scope": 1438, - "src": "1737:431:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1331, - "nodeType": "Block", - "src": "2611:487:10", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1290, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1288, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1285, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "2706:6:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1286, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2706:13:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1287, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2722:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2706:17:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 1289, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1279, - "src": "2727:10:10", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2706:31:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1284, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "2698:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2698:40:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1292, - "nodeType": "ExpressionStatement", - "src": "2698:40:10" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1294, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "2818:6:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1296, - "indexExpression": { - "argumentTypes": null, - "id": 1295, - "name": "ownerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1275, - "src": "2825:10:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2818:18:10", + "src": "2164:13:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5933,18 +6685,23 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1297, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "2840:5:10", + "hexValue": "30", + "id": 1106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2181:1:7", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" }, - "src": "2818:27:10", + "src": "2164:18:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5958,21 +6715,21 @@ "typeString": "bool" } ], - "id": 1293, + "id": 1102, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2810:7:10", + "referencedDeclaration": 2399, + "src": "2156:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1299, + "id": 1108, "isConstant": false, "isLValue": false, "isPure": false, @@ -5980,20 +6737,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2810:36:10", + "src": "2156:27:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1300, + "id": 1109, "nodeType": "ExpressionStatement", - "src": "2810:36:10" + "src": "2156:27:7" }, { "expression": { "argumentTypes": null, - "id": 1305, + "id": 1116, "isConstant": false, "isLValue": false, "isPure": false, @@ -6002,28 +6759,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1301, - "name": "isOwner", + "id": 1110, + "name": "owners", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "2856:7:10", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "2193:6:7", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" } }, - "id": 1303, + "id": 1112, "indexExpression": { "argumentTypes": null, - "id": 1302, + "id": 1111, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "2864:5:10", + "referencedDeclaration": 1085, + "src": "2200:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6034,46 +6789,68 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2856:14:10", + "src": "2193:13:7", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1304, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2873:5:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "baseExpression": { + "argumentTypes": null, + "id": 1113, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "2209:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } }, - "value": "false" + "id": 1115, + "indexExpression": { + "argumentTypes": null, + "id": 1114, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "2216:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2209:23:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "src": "2856:22:10", + "src": "2193:39:7", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1306, + "id": 1117, "nodeType": "ExpressionStatement", - "src": "2856:22:10" + "src": "2193:39:7" }, { "expression": { "argumentTypes": null, - "id": 1316, + "id": 1122, "isConstant": false, "isLValue": false, "isPure": false, @@ -6082,29 +6859,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1307, + "id": 1118, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "2888:6:10", + "referencedDeclaration": 985, + "src": "2242:6:7", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" } }, - "id": 1309, + "id": 1120, "indexExpression": { "argumentTypes": null, - "id": 1308, - "name": "ownerIndex", + "id": 1119, + "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1275, - "src": "2895:10:10", + "referencedDeclaration": 981, + "src": "2249:15:7", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "isConstant": false, @@ -6112,7 +6889,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2888:18:10", + "src": "2242:23:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6122,143 +6899,47 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1310, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "2909:6:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1315, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1314, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1311, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "2916:6:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1312, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2916:13:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1313, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2932:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2916:17:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2909:25:10", + "id": 1121, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1085, + "src": "2268:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2888:46:10", + "src": "2242:31:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1317, + "id": 1123, "nodeType": "ExpressionStatement", - "src": "2888:46:10" + "src": "2242:31:7" }, { "expression": { "argumentTypes": null, - "id": 1321, + "id": 1125, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", - "operator": "--", + "operator": "++", "prefix": false, - "src": "2944:15:10", + "src": "2283:12:7", "subExpression": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1318, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "2944:6:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1320, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2944:13:10", + "id": 1124, + "name": "ownerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "2283:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6269,9 +6950,9 @@ "typeString": "uint256" } }, - "id": 1322, + "id": 1126, "nodeType": "ExpressionStatement", - "src": "2944:15:10" + "src": "2283:12:7" }, { "condition": { @@ -6280,21 +6961,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1325, + "id": 1129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1323, + "id": 1127, "name": "threshold", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "3027:9:10", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "2363:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6304,39 +6983,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1324, + "id": 1128, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1279, - "src": "3040:10:10", + "referencedDeclaration": 1087, + "src": "2376:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3027:23:10", + "src": "2363:23:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1330, + "id": 1134, "nodeType": "IfStatement", - "src": "3023:68:10", + "src": "2359:68:7", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1327, + "id": 1131, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1279, - "src": "3080:10:10", + "referencedDeclaration": 1087, + "src": "2416:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6350,18 +7029,18 @@ "typeString": "uint8" } ], - "id": 1326, + "id": 1130, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1408, - "src": "3064:15:10", + "referencedDeclaration": 1271, + "src": "2400:15:7", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, - "id": 1328, + "id": 1132, "isConstant": false, "isLValue": false, "isPure": false, @@ -6369,84 +7048,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3064:27:10", + "src": "2400:27:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1329, + "id": 1133, "nodeType": "ExpressionStatement", - "src": "3064:27:10" + "src": "2400:27:7" } } ] }, - "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 ownerIndex Array index position of owner address to be removed.\n @param owner Owner address to be removed.\n @param _threshold New threshold.", - "id": 1332, + "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": 1136, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1282, + "id": 1090, "modifierName": { "argumentTypes": null, - "id": 1281, + "id": 1089, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "2596:10:10", + "referencedDeclaration": 1358, + "src": "1993:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2596:10:10" + "src": "1993:10:7" } ], - "name": "removeOwner", + "name": "addOwnerWithThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1280, + "id": 1088, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1275, - "name": "ownerIndex", - "nodeType": "VariableDeclaration", - "scope": 1332, - "src": "2520:18:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1274, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2520:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1277, + "id": 1085, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1332, - "src": "2540:13:10", + "scope": 1136, + "src": "1937:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6454,10 +7107,10 @@ "typeString": "address" }, "typeName": { - "id": 1276, + "id": 1084, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2540:7:10", + "src": "1937:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6468,11 +7121,11 @@ }, { "constant": false, - "id": 1279, + "id": 1087, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1332, - "src": "2555:16:10", + "scope": 1136, + "src": "1952:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6480,10 +7133,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1278, + "id": 1086, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2555:5:10", + "src": "1952:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6493,26 +7146,26 @@ "visibility": "internal" } ], - "src": "2519:53:10" + "src": "1936:33:7" }, "payable": false, "returnParameters": { - "id": 1283, + "id": 1091, "nodeType": "ParameterList", "parameters": [], - "src": "2611:0:10" + "src": "2008:0:7" }, - "scope": 1438, - "src": "2499:599:10", + "scope": 1343, + "src": "1906:528:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1382, + "id": 1188, "nodeType": "Block", - "src": "3538:382:10", + "src": "2887:462:7", "statements": [ { "expression": { @@ -6521,48 +7174,80 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 1346, + "id": 1152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1344, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1338, - "src": "3597:8:10", + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1148, + "name": "ownerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "2982:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2995:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2982:14:7", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "!=", + "operator": ">=", "rightExpression": { "argumentTypes": null, - "hexValue": "30", - "id": 1345, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3609:1:10", - "subdenomination": null, + "id": 1151, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "3000:10:7", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } }, - "src": "3597:13:10", + "src": "2982:28:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6576,21 +7261,21 @@ "typeString": "bool" } ], - "id": 1343, + "id": 1147, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "3589:7:10", + "referencedDeclaration": 2399, + "src": "2974:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1347, + "id": 1153, "isConstant": false, "isLValue": false, "isPure": false, @@ -6598,15 +7283,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3589:22:10", + "src": "2974:37:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1348, + "id": 1154, "nodeType": "ExpressionStatement", - "src": "3589:22:10" + "src": "2974:37:7" }, { "expression": { @@ -6614,41 +7299,39 @@ "arguments": [ { "argumentTypes": null, - "id": 1353, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "3669:18:10", - "subExpression": { + "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1350, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "3670:7:10", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1352, - "indexExpression": { - "argumentTypes": null, - "id": 1351, - "name": "newOwner", + "id": 1156, + "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1338, - "src": "3678:8:10", + "referencedDeclaration": 985, + "src": "3091:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1158, + "indexExpression": { + "argumentTypes": null, + "id": 1157, + "name": "prevOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1138, + "src": "3098:9:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6659,12 +7342,28 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3670:17:10", + "src": "3091:17:7", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1159, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "3112:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3091:26:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6678,21 +7377,21 @@ "typeString": "bool" } ], - "id": 1349, + "id": 1155, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "3661:7:10", + "referencedDeclaration": 2399, + "src": "3083:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1354, + "id": 1161, "isConstant": false, "isLValue": false, "isPure": false, @@ -6700,15 +7399,624 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3661:27:10", + "src": "3083:35:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1355, + "id": 1162, "nodeType": "ExpressionStatement", - "src": "3661:27:10" + "src": "3083:35:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1163, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "3128:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1165, + "indexExpression": { + "argumentTypes": null, + "id": 1164, + "name": "prevOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1138, + "src": "3135:9:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3128:17:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1166, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "3148:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1168, + "indexExpression": { + "argumentTypes": null, + "id": 1167, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "3155:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3148:13:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3128:33:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1170, + "nodeType": "ExpressionStatement", + "src": "3128:33:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1171, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "3171:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1173, + "indexExpression": { + "argumentTypes": null, + "id": 1172, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "3178:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3171:13:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1174, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3187:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3171:17:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1176, + "nodeType": "ExpressionStatement", + "src": "3171:17:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "3198:12:7", + "subExpression": { + "argumentTypes": null, + "id": 1177, + "name": "ownerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "3198:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1179, + "nodeType": "ExpressionStatement", + "src": "3198:12:7" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1180, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "3278:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 1181, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "3291:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "3278:23:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1187, + "nodeType": "IfStatement", + "src": "3274:68:7", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1184, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "3331:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1183, + "name": "changeThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1271, + "src": "3315:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", + "typeString": "function (uint8)" + } + }, + "id": 1185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3315:27:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1186, + "nodeType": "ExpressionStatement", + "src": "3315:27:7" + } + } + ] + }, + "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": 1189, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1145, + "modifierName": { + "argumentTypes": null, + "id": 1144, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "2872:10:7", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2872:10:7" + } + ], + "name": "removeOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1143, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1138, + "name": "prevOwner", + "nodeType": "VariableDeclaration", + "scope": 1189, + "src": "2797:17:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1137, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2797:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1140, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1189, + "src": "2816:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1139, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2816:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1142, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 1189, + "src": "2831:16:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1141, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2831:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2796:52:7" + }, + "payable": false, + "returnParameters": { + "id": 1146, + "nodeType": "ParameterList", + "parameters": [], + "src": "2887:0:7" + }, + "scope": 1343, + "src": "2776:573:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1246, + "nodeType": "Block", + "src": "3795:414:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1201, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1195, + "src": "3854:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1202, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3866:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3854:13:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1204, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1195, + "src": "3871:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 1205, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "3883:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3871:27:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3854:44:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1200, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "3846:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3846:53:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1209, + "nodeType": "ExpressionStatement", + "src": "3846:53:7" }, { "expression": { @@ -6720,7 +8028,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1361, + "id": 1215, "isConstant": false, "isLValue": false, "isPure": false, @@ -6729,29 +8037,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1357, + "id": 1211, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "3768:6:10", + "referencedDeclaration": 985, + "src": "3957:6:7", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" } }, - "id": 1359, + "id": 1213, "indexExpression": { "argumentTypes": null, - "id": 1358, - "name": "oldOwnerIndex", + "id": 1212, + "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1334, - "src": "3775:13:10", + "referencedDeclaration": 1195, + "src": "3964:8:7", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "isConstant": false, @@ -6759,7 +8067,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3768:21:10", + "src": "3957:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6769,18 +8077,23 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1360, - "name": "oldOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1336, - "src": "3793:8:10", + "hexValue": "30", + "id": 1214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3977:1:7", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" }, - "src": "3768:33:10", + "src": "3957:21:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6794,21 +8107,21 @@ "typeString": "bool" } ], - "id": 1356, + "id": 1210, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "3760:7:10", + "referencedDeclaration": 2399, + "src": "3949:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1362, + "id": 1216, "isConstant": false, "isLValue": false, "isPure": false, @@ -6816,100 +8129,136 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3760:42:10", + "src": "3949:30:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1363, + "id": 1217, "nodeType": "ExpressionStatement", - "src": "3760:42:10" + "src": "3949:30:7" }, { "expression": { "argumentTypes": null, - "id": 1368, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { + "arguments": [ + { "argumentTypes": null, - "id": 1364, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "3812:7:10", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1366, - "indexExpression": { - "argumentTypes": null, - "id": 1365, - "name": "oldOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1336, - "src": "3820:8:10", - "typeDescriptions": { + "commonType": { "typeIdentifier": "t_address", "typeString": "address" + }, + "id": 1223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1219, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "4059:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1221, + "indexExpression": { + "argumentTypes": null, + "id": 1220, + "name": "prevOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1191, + "src": "4066:9:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4059:17:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1222, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1193, + "src": "4080:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4059:29:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3812:17:10", + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1218, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "4051:7:7", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1367, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3832:5:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "3812:25:10", + "id": 1224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4051:38:7", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 1369, + "id": 1225, "nodeType": "ExpressionStatement", - "src": "3812:25:10" + "src": "4051:38:7" }, { "expression": { "argumentTypes": null, - "id": 1374, + "id": 1232, "isConstant": false, "isLValue": false, "isPure": false, @@ -6918,109 +8267,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1370, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "3847:7:10", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1372, - "indexExpression": { - "argumentTypes": null, - "id": 1371, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1338, - "src": "3855:8:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3847:17:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1373, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3867:4:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "3847:24:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1375, - "nodeType": "ExpressionStatement", - "src": "3847:24:10" - }, - { - "expression": { - "argumentTypes": null, - "id": 1380, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1376, + "id": 1226, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "3881:6:10", + "referencedDeclaration": 985, + "src": "4099:6:7", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" } }, - "id": 1378, + "id": 1228, "indexExpression": { "argumentTypes": null, - "id": 1377, - "name": "oldOwnerIndex", + "id": 1227, + "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1334, - "src": "3888:13:10", + "referencedDeclaration": 1195, + "src": "4106:8:7", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "isConstant": false, @@ -7028,7 +8297,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3881:21:10", + "src": "4099:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7038,94 +8307,246 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1379, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1338, - "src": "3905:8:10", + "baseExpression": { + "argumentTypes": null, + "id": 1229, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "4118:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1231, + "indexExpression": { + "argumentTypes": null, + "id": 1230, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1193, + "src": "4125:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4118:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3881:32:10", + "src": "4099:35:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1381, + "id": 1233, "nodeType": "ExpressionStatement", - "src": "3881:32:10" + "src": "4099:35:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1234, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "4144:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1236, + "indexExpression": { + "argumentTypes": null, + "id": 1235, + "name": "prevOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1191, + "src": "4151:9:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4144:17:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1237, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1195, + "src": "4164:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4144:28:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1239, + "nodeType": "ExpressionStatement", + "src": "4144:28:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1240, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "4182:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1242, + "indexExpression": { + "argumentTypes": null, + "id": 1241, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1193, + "src": "4189:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4182:16:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1243, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4201:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4182:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1245, + "nodeType": "ExpressionStatement", + "src": "4182:20:7" } ] }, - "documentation": "@dev Allows to replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param oldOwnerIndex Array index position of owner address to be replaced.\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", - "id": 1383, + "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": 1247, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1341, + "id": 1198, "modifierName": { "argumentTypes": null, - "id": 1340, + "id": 1197, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "3523:10:10", + "referencedDeclaration": 1358, + "src": "3780:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3523:10:10" + "src": "3780:10:7" } ], - "name": "replaceOwner", + "name": "swapOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1339, + "id": 1196, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1334, - "name": "oldOwnerIndex", + "id": 1191, + "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1383, - "src": "3441:21:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1333, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3441:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1336, - "name": "oldOwner", - "nodeType": "VariableDeclaration", - "scope": 1383, - "src": "3464:16:10", + "scope": 1247, + "src": "3702:17:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7133,10 +8554,10 @@ "typeString": "address" }, "typeName": { - "id": 1335, + "id": 1190, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3464:7:10", + "src": "3702:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7147,11 +8568,11 @@ }, { "constant": false, - "id": 1338, - "name": "newOwner", + "id": 1193, + "name": "oldOwner", "nodeType": "VariableDeclaration", - "scope": 1383, - "src": "3482:16:10", + "scope": 1247, + "src": "3721:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7159,10 +8580,36 @@ "typeString": "address" }, "typeName": { - "id": 1337, + "id": 1192, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3482:7:10", + "src": "3721:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1195, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 1247, + "src": "3739:16:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1194, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3739:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7172,26 +8619,26 @@ "visibility": "internal" } ], - "src": "3440:59:10" + "src": "3701:55:7" }, "payable": false, "returnParameters": { - "id": 1342, + "id": 1199, "nodeType": "ParameterList", "parameters": [], - "src": "3538:0:10" + "src": "3795:0:7" }, - "scope": 1438, - "src": "3419:501:10", + "scope": 1343, + "src": "3683:526:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1407, + "id": 1270, "nodeType": "Block", - "src": "4190:240:10", + "src": "4479:237:7", "statements": [ { "expression": { @@ -7203,19 +8650,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1394, + "id": 1257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1391, + "id": 1255, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1385, - "src": "4277:10:10", + "referencedDeclaration": 1249, + "src": "4566:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7225,34 +8672,18 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1392, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "4291:6:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1393, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4291:13:10", + "id": 1256, + "name": "ownerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "4580:10:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4277:27:10", + "src": "4566:24:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7266,21 +8697,21 @@ "typeString": "bool" } ], - "id": 1390, + "id": 1254, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "4269:7:10", + "referencedDeclaration": 2399, + "src": "4558:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1395, + "id": 1258, "isConstant": false, "isLValue": false, "isPure": false, @@ -7288,15 +8719,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4269:36:10", + "src": "4558:33:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1396, + "id": 1259, "nodeType": "ExpressionStatement", - "src": "4269:36:10" + "src": "4558:33:7" }, { "expression": { @@ -7308,19 +8739,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1400, + "id": 1263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1398, + "id": 1261, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1385, - "src": "4375:10:10", + "referencedDeclaration": 1249, + "src": "4661:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7331,14 +8762,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1399, + "id": 1262, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4389:1:10", + "src": "4675:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -7346,7 +8777,7 @@ }, "value": "1" }, - "src": "4375:15:10", + "src": "4661:15:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7360,21 +8791,21 @@ "typeString": "bool" } ], - "id": 1397, + "id": 1260, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "4367:7:10", + "referencedDeclaration": 2399, + "src": "4653:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1401, + "id": 1264, "isConstant": false, "isLValue": false, "isPure": false, @@ -7382,34 +8813,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4367:24:10", + "src": "4653:24:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1402, + "id": 1265, "nodeType": "ExpressionStatement", - "src": "4367:24:10" + "src": "4653:24:7" }, { "expression": { "argumentTypes": null, - "id": 1405, + "id": 1268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1403, + "id": 1266, "name": "threshold", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "4401:9:10", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "4687:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7419,68 +8848,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1404, + "id": 1267, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1385, - "src": "4413:10:10", + "referencedDeclaration": 1249, + "src": "4699:10:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4401:22:10", + "src": "4687:22:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1406, + "id": 1269, "nodeType": "ExpressionStatement", - "src": "4401:22:10" + "src": "4687:22:7" } ] }, "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": 1408, + "id": 1271, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1388, + "id": 1252, "modifierName": { "argumentTypes": null, - "id": 1387, + "id": 1251, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "4175:10:10", + "referencedDeclaration": 1358, + "src": "4464:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4175:10:10" + "src": "4464:10:7" } ], "name": "changeThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1386, + "id": 1250, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1385, + "id": 1249, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1408, - "src": "4134:16:10", + "scope": 1271, + "src": "4423:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7488,10 +8917,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1384, + "id": 1248, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4134:5:10", + "src": "4423:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7501,76 +8930,74 @@ "visibility": "internal" } ], - "src": "4133:18:10" + "src": "4422:18:7" }, "payable": false, "returnParameters": { - "id": 1389, + "id": 1253, "nodeType": "ParameterList", "parameters": [], - "src": "4190:0:10" + "src": "4479:0:7" }, - "scope": 1438, - "src": "4109:321:10", + "scope": 1343, + "src": "4398:318:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1415, + "id": 1278, "nodeType": "Block", - "src": "4513:33:10", + "src": "4802:33:7", "statements": [ { "expression": { "argumentTypes": null, - "id": 1413, + "id": 1276, "name": "threshold", "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "4530:9:10", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "4819:9:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 1412, - "id": 1414, + "functionReturnParameters": 1275, + "id": 1277, "nodeType": "Return", - "src": "4523:16:10" + "src": "4812:16:7" } ] }, "documentation": null, - "id": 1416, + "id": 1279, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "threshold", + "name": "getThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1409, + "id": 1272, "nodeType": "ParameterList", "parameters": [], - "src": "4454:2:10" + "src": "4743:2:7" }, "payable": false, "returnParameters": { - "id": 1412, + "id": 1275, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1411, + "id": 1274, "name": "", "nodeType": "VariableDeclaration", - "scope": 1416, - "src": "4502:5:10", + "scope": 1279, + "src": "4791:5:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7578,10 +9005,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1410, + "id": 1273, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4502:5:10", + "src": "4791:5:7", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7591,47 +9018,419 @@ "visibility": "internal" } ], - "src": "4501:7:10" + "src": "4790:7:7" }, - "scope": 1438, - "src": "4436:110:10", + "scope": 1343, + "src": "4722:113:7", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1427, + "id": 1292, "nodeType": "Block", - "src": "4639:38:10", + "src": "4928:42:7", "statements": [ { "expression": { "argumentTypes": null, - "baseExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "argumentTypes": null, - "id": 1423, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "4656:7:10", + "baseExpression": { + "argumentTypes": null, + "id": 1286, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "4945:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1288, + "indexExpression": { + "argumentTypes": null, + "id": 1287, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1281, + "src": "4952:5:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4945:13:7", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1425, - "indexExpression": { + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { "argumentTypes": null, - "id": 1424, - "name": "owner", + "hexValue": "30", + "id": 1289, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4962:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4945:18:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1285, + "id": 1291, + "nodeType": "Return", + "src": "4938:25:7" + } + ] + }, + "documentation": null, + "id": 1293, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1282, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1281, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1293, + "src": "4858:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1280, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4858:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4857:15:7" + }, + "payable": false, + "returnParameters": { + "id": 1285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1284, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1293, + "src": "4918:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1283, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4918:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4917:6:7" + }, + "scope": 1343, + "src": "4841:129:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1341, + "nodeType": "Block", + "src": "5133:377:7", + "statements": [ + { + "assignments": [ + 1302 + ], + "declarations": [ + { + "constant": false, + "id": 1302, + "name": "array", + "nodeType": "VariableDeclaration", + "scope": 1342, + "src": "5143:22:7", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1300, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5143:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1301, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5143:9:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1308, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1306, + "name": "ownerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 987, + "src": "5182:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1305, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "5168:13:7", + "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": 1303, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5172:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1304, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5172:9:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + } + }, + "id": 1307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5168:25:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5143:50:7" + }, + { + "assignments": [ + 1310 + ], + "declarations": [ + { + "constant": false, + "id": 1310, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 1342, + "src": "5237:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1309, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5237:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1312, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1311, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5253:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5237:17:7" + }, + { + "assignments": [ + 1314 + ], + "declarations": [ + { + "constant": false, + "id": 1314, + "name": "currentOwner", + "nodeType": "VariableDeclaration", + "scope": 1342, + "src": "5264:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1313, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5264:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1318, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1315, + "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1418, - "src": "4664:5:10", + "referencedDeclaration": 985, + "src": "5287:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1317, + "indexExpression": { + "argumentTypes": null, + "id": 1316, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "5294:15:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7642,129 +9441,275 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4656:14:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 1422, - "id": 1426, - "nodeType": "Return", - "src": "4649:21:10" - } - ] - }, - "documentation": null, - "id": 1428, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "isOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1419, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1418, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 1428, - "src": "4569:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1417, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4569:7:10", + "src": "5287:23:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "value": null, - "visibility": "internal" - } - ], - "src": "4568:15:10" - }, - "payable": false, - "returnParameters": { - "id": 1422, - "nodeType": "ParameterList", - "parameters": [ + "nodeType": "VariableDeclarationStatement", + "src": "5264:46:7" + }, { - "constant": false, - "id": 1421, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1428, - "src": "4629:4:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "body": { + "id": 1337, + "nodeType": "Block", + "src": "5359:123:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1322, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1302, + "src": "5373:5:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1324, + "indexExpression": { + "argumentTypes": null, + "id": 1323, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1310, + "src": "5379:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5373:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1325, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1314, + "src": "5388:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5373:27:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1327, + "nodeType": "ExpressionStatement", + "src": "5373:27:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1328, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1314, + "src": "5414:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1329, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "5429:6:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1331, + "indexExpression": { + "argumentTypes": null, + "id": 1330, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1314, + "src": "5436:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5429:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5414:35:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1333, + "nodeType": "ExpressionStatement", + "src": "5414:35:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "5463:8:7", + "subExpression": { + "argumentTypes": null, + "id": 1334, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1310, + "src": "5463:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1336, + "nodeType": "ExpressionStatement", + "src": "5463:8:7" + } + ] }, - "typeName": { - "id": 1420, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4629:4:10", + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1319, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1314, + "src": "5326:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 1320, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "5342:15:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5326:31:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "value": null, - "visibility": "internal" - } - ], - "src": "4628:6:10" - }, - "scope": 1438, - "src": "4552:125:10", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1436, - "nodeType": "Block", - "src": "4840:30:10", - "statements": [ + "id": 1338, + "nodeType": "WhileStatement", + "src": "5320:162:7" + }, { "expression": { "argumentTypes": null, - "id": 1434, - "name": "owners", + "id": 1339, + "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "4857:6:10", + "referencedDeclaration": 1302, + "src": "5498:5:7", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" } }, - "functionReturnParameters": 1433, - "id": 1435, + "functionReturnParameters": 1298, + "id": 1340, "nodeType": "Return", - "src": "4850:13:10" + "src": "5491:12:7" } ] }, "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", - "id": 1437, + "id": 1342, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7772,23 +9717,23 @@ "name": "getOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1429, + "id": 1294, "nodeType": "ParameterList", "parameters": [], - "src": "4777:2:10" + "src": "5070:2:7" }, "payable": false, "returnParameters": { - "id": 1433, + "id": 1298, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1432, + "id": 1297, "name": "", "nodeType": "VariableDeclaration", - "scope": 1437, - "src": "4825:9:10", + "scope": 1342, + "src": "5118:9:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7797,19 +9742,19 @@ }, "typeName": { "baseType": { - "id": 1430, + "id": 1295, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4825:7:10", + "src": "5118:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1431, + "id": 1296, "length": null, "nodeType": "ArrayTypeName", - "src": "4825:9:10", + "src": "5118:9:7", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -7819,20 +9764,20 @@ "visibility": "internal" } ], - "src": "4824:11:10" + "src": "5117:11:7" }, - "scope": 1438, - "src": "4759:111:10", + "scope": 1343, + "src": "5052:458:7", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1439, - "src": "240:4632:10" + "scope": 1344, + "src": "240:5272:7" } ], - "src": "0:4873:10" + "src": "0:5513:7" }, "compiler": { "name": "solc", @@ -7840,5 +9785,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T10:43:07.899Z" + "updatedAt": "2018-05-16T10:51:14.752Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ProxyFactory.json b/safe-contracts/build/contracts/ProxyFactory.json index 8283a2fd..c0fd4e62 100644 --- a/safe-contracts/build/contracts/ProxyFactory.json +++ b/safe-contracts/build/contracts/ProxyFactory.json @@ -991,8 +991,8 @@ "4": { "events": {}, "links": {}, - "address": "0xdc7a0c8475e99fa755e935ffbe04b84ead9aadc7", - "transactionHash": "0xd1d3b32e56f0533181f582cabad03ce3e98dd1083b31baff076d9e53d1143e15" + "address": "0xf11c9ac85e73435180707156748ecbaf4efc035b", + "transactionHash": "0xf8c48bc1ea023ab15194af47f50d2c8eaeb3d7b9dd13e7325e892e92743c2979" }, "1525950336085": { "events": {}, @@ -1005,8 +1005,14 @@ "links": {}, "address": "0x321151783f8dfb4699370d1bd5cee4e82bc3b52a", "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" + }, + "1526478212260": { + "events": {}, + "links": {}, + "address": "0xf7f9b14921d4723eae3a8b29784c100301f6d8b8", + "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-14T07:39:37.950Z" + "updatedAt": "2018-05-16T13:45:24.507Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SelfAuthorized.json b/safe-contracts/build/contracts/SelfAuthorized.json index 17b31a20..d881ac34 100644 --- a/safe-contracts/build/contracts/SelfAuthorized.json +++ b/safe-contracts/build/contracts/SelfAuthorized.json @@ -3,29 +3,29 @@ "abi": [], "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820c359a8a0df732b4d3e100e43277411dee19c572529edb454cbf1fa9ee91508150029", "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820c359a8a0df732b4d3e100e43277411dee19c572529edb454cbf1fa9ee91508150029", - "sourceMap": "152:118:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;152:118:14;;;;;;;", - "deployedSourceMap": "152:118:14:-;;;;;", + "sourceMap": "152:118:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;152:118:8;;;;;;;", + "deployedSourceMap": "152:118:8:-;;;;;", "source": "pragma solidity 0.4.23;\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));\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": [ - 1559 + 1359 ] }, - "id": 1560, + "id": 1360, "nodeType": "SourceUnit", "nodes": [ { - "id": 1545, + "id": 1345, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:14" + "src": "0:23:8" }, { "baseContracts": [], @@ -33,18 +33,18 @@ "contractKind": "contract", "documentation": "@title SelfAuthorized - authorizes current contract to perform actions\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1559, + "id": 1359, "linearizedBaseContracts": [ - 1559 + 1359 ], "name": "SelfAuthorized", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1557, + "id": 1357, "nodeType": "Block", - "src": "204:64:14", + "src": "204:64:8", "statements": [ { "expression": { @@ -56,7 +56,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1553, + "id": 1353, "isConstant": false, "isLValue": false, "isPure": false, @@ -65,18 +65,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1548, + "id": 1348, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "222:3:14", + "referencedDeclaration": 2396, + "src": "222:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1549, + "id": 1349, "isConstant": false, "isLValue": false, "isPure": false, @@ -84,7 +84,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "222:10:14", + "src": "222:10:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -97,14 +97,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1551, + "id": 1351, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2484, - "src": "244:4:14", + "referencedDeclaration": 2411, + "src": "244:4:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeIdentifier": "t_contract$_SelfAuthorized_$1359", "typeString": "contract SelfAuthorized" } } @@ -112,24 +112,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeIdentifier": "t_contract$_SelfAuthorized_$1359", "typeString": "contract SelfAuthorized" } ], - "id": 1550, + "id": 1350, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "236:7:14", + "src": "236:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1552, + "id": 1352, "isConstant": false, "isLValue": false, "isPure": false, @@ -137,13 +137,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "236:13:14", + "src": "236:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "222:27:14", + "src": "222:27:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -157,21 +157,21 @@ "typeString": "bool" } ], - "id": 1547, + "id": 1347, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "214:7:14", + "referencedDeclaration": 2399, + "src": "214:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1554, + "id": 1354, "isConstant": false, "isLValue": false, "isPure": false, @@ -179,62 +179,62 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "214:36:14", + "src": "214:36:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1555, + "id": 1355, "nodeType": "ExpressionStatement", - "src": "214:36:14" + "src": "214:36:8" }, { - "id": 1556, + "id": 1356, "nodeType": "PlaceholderStatement", - "src": "260:1:14" + "src": "260:1:8" } ] }, "documentation": null, - "id": 1558, + "id": 1358, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 1546, + "id": 1346, "nodeType": "ParameterList", "parameters": [], - "src": "201:2:14" + "src": "201:2:8" }, - "src": "182:86:14", + "src": "182:86:8", "visibility": "internal" } ], - "scope": 1560, - "src": "152:118:14" + "scope": 1360, + "src": "152:118:8" } ], - "src": "0:271:14" + "src": "0:271:8" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "exportedSymbols": { "SelfAuthorized": [ - 1559 + 1359 ] }, - "id": 1560, + "id": 1360, "nodeType": "SourceUnit", "nodes": [ { - "id": 1545, + "id": 1345, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:14" + "src": "0:23:8" }, { "baseContracts": [], @@ -242,18 +242,18 @@ "contractKind": "contract", "documentation": "@title SelfAuthorized - authorizes current contract to perform actions\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1559, + "id": 1359, "linearizedBaseContracts": [ - 1559 + 1359 ], "name": "SelfAuthorized", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1557, + "id": 1357, "nodeType": "Block", - "src": "204:64:14", + "src": "204:64:8", "statements": [ { "expression": { @@ -265,7 +265,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1553, + "id": 1353, "isConstant": false, "isLValue": false, "isPure": false, @@ -274,18 +274,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1548, + "id": 1348, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "222:3:14", + "referencedDeclaration": 2396, + "src": "222:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1549, + "id": 1349, "isConstant": false, "isLValue": false, "isPure": false, @@ -293,7 +293,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "222:10:14", + "src": "222:10:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -306,14 +306,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1551, + "id": 1351, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2484, - "src": "244:4:14", + "referencedDeclaration": 2411, + "src": "244:4:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeIdentifier": "t_contract$_SelfAuthorized_$1359", "typeString": "contract SelfAuthorized" } } @@ -321,24 +321,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeIdentifier": "t_contract$_SelfAuthorized_$1359", "typeString": "contract SelfAuthorized" } ], - "id": 1550, + "id": 1350, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "236:7:14", + "src": "236:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1552, + "id": 1352, "isConstant": false, "isLValue": false, "isPure": false, @@ -346,13 +346,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "236:13:14", + "src": "236:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "222:27:14", + "src": "222:27:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -366,21 +366,21 @@ "typeString": "bool" } ], - "id": 1547, + "id": 1347, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "214:7:14", + "referencedDeclaration": 2399, + "src": "214:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1554, + "id": 1354, "isConstant": false, "isLValue": false, "isPure": false, @@ -388,42 +388,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "214:36:14", + "src": "214:36:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1555, + "id": 1355, "nodeType": "ExpressionStatement", - "src": "214:36:14" + "src": "214:36:8" }, { - "id": 1556, + "id": 1356, "nodeType": "PlaceholderStatement", - "src": "260:1:14" + "src": "260:1:8" } ] }, "documentation": null, - "id": 1558, + "id": 1358, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 1546, + "id": 1346, "nodeType": "ParameterList", "parameters": [], - "src": "201:2:14" + "src": "201:2:8" }, - "src": "182:86:14", + "src": "182:86:8", "visibility": "internal" } ], - "scope": 1560, - "src": "152:118:14" + "scope": 1360, + "src": "152:118:8" } ], - "src": "0:271:14" + "src": "0:271:8" }, "compiler": { "name": "solc", @@ -431,5 +431,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T10:43:07.901Z" + "updatedAt": "2018-05-16T10:51:14.750Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SocialRecoveryModule.json b/safe-contracts/build/contracts/SocialRecoveryModule.json index 01e86479..f7bb8824 100644 --- a/safe-contracts/build/contracts/SocialRecoveryModule.json +++ b/safe-contracts/build/contracts/SocialRecoveryModule.json @@ -250,73 +250,73 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50611131806100206000396000f3006080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014957806342cde4e8146101bc578063481c6a75146101ed57806368125a1b1461024457806379716e431461029f5780637de7edef146102d05780639ca89d0d14610313578063a3f4df7e1461035c578063ae68b056146103ec578063b79ffaff14610471578063ce146828146104da578063d2740c7614610547578063e52cb36a146105b0578063ffa1ad74146105f9575b600080fd5b3480156100ec57600080fd5b506100f5610689565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561015557600080fd5b506101ba60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff1690602001909291905050506106ad565b005b3480156101c857600080fd5b506101d1610822565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101f957600080fd5b50610202610835565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025057600080fd5b50610285600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061085b565b604051808215151515815260200191505060405180910390f35b3480156102ab57600080fd5b506102ce600480360381019080803560001916906020019092919050505061087b565b005b3480156102dc57600080fd5b50610311600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061097c565b005b34801561031f57600080fd5b506103426004803603810190808035600019169060200190929190505050610a41565b604051808215151515815260200191505060405180910390f35b34801561036857600080fd5b50610371610b40565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103b1578082015181840152602081019050610396565b50505050905090810190601f1680156103de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f857600080fd5b50610453600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610b79565b60405180826000191660001916815260200191505060405180910390f35b34801561047d57600080fd5b506104c06004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610be5565b604051808215151515815260200191505060405180910390f35b3480156104e657600080fd5b5061050560048036038101908080359060200190929190505050610c14565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561055357600080fd5b506105ae600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c52565b005b3480156105bc57600080fd5b506105df6004803603810190808035600019169060200190929190505050610f55565b604051808215151515815260200191505060405180910390f35b34801561060557600080fd5b5061060e610f75565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561064e578082015181840152602081019050610633565b50505050905090810190601f16801561067b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7f54e99c6e0000000000000000000000000000000000000000000000000000000081565b60008083518360ff16111515156106c357600080fd5b60028360ff16101515156106d657600080fd5b6106de610fae565b600091505b83518210156107ea5783828151811015156106fa57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561072c57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561078557600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506106e3565b8360029080519060200190610800929190611038565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108d357600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561090857600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109d857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109fe57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610b34576005600085600019166000191681526020019081526020016000206000600283815481101515610a8357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b045781806001019250505b600160149054906101000a900460ff1660ff16821415610b275760019250610b39565b8080600101915050610a4a565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b602083101515610bb15780518252602082019150602081019050602083039250610b8c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600281815481101515610c2357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610cad57600080fd5b602083015191507f54e99c6e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610d2057600080fd5b610d2983610b79565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610d6057600080fd5b610d6981610a41565b1515610d7457600080fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b021640a600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008660006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610e8557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610ec5578082015181840152602081019050610eaa565b50505050905090810190601f168015610ef25780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b505050506040513d6020811015610f3e57600080fd5b810190808051906020019092919050505050505050565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ff557600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8280548282559060005260206000209081019282156110b1579160200282015b828111156110b05782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611058565b5b5090506110be91906110c2565b5090565b61110291905b808211156110fe57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016110c8565b5090565b905600a165627a7a72305820d0d4a797e7a772df46dc5c07d636325879d9fe91e9fe0a658f50ee02e27f0c8e0029", - "deployedBytecode": "0x6080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014957806342cde4e8146101bc578063481c6a75146101ed57806368125a1b1461024457806379716e431461029f5780637de7edef146102d05780639ca89d0d14610313578063a3f4df7e1461035c578063ae68b056146103ec578063b79ffaff14610471578063ce146828146104da578063d2740c7614610547578063e52cb36a146105b0578063ffa1ad74146105f9575b600080fd5b3480156100ec57600080fd5b506100f5610689565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561015557600080fd5b506101ba60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff1690602001909291905050506106ad565b005b3480156101c857600080fd5b506101d1610822565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101f957600080fd5b50610202610835565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025057600080fd5b50610285600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061085b565b604051808215151515815260200191505060405180910390f35b3480156102ab57600080fd5b506102ce600480360381019080803560001916906020019092919050505061087b565b005b3480156102dc57600080fd5b50610311600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061097c565b005b34801561031f57600080fd5b506103426004803603810190808035600019169060200190929190505050610a41565b604051808215151515815260200191505060405180910390f35b34801561036857600080fd5b50610371610b40565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103b1578082015181840152602081019050610396565b50505050905090810190601f1680156103de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f857600080fd5b50610453600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610b79565b60405180826000191660001916815260200191505060405180910390f35b34801561047d57600080fd5b506104c06004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610be5565b604051808215151515815260200191505060405180910390f35b3480156104e657600080fd5b5061050560048036038101908080359060200190929190505050610c14565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561055357600080fd5b506105ae600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c52565b005b3480156105bc57600080fd5b506105df6004803603810190808035600019169060200190929190505050610f55565b604051808215151515815260200191505060405180910390f35b34801561060557600080fd5b5061060e610f75565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561064e578082015181840152602081019050610633565b50505050905090810190601f16801561067b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7f54e99c6e0000000000000000000000000000000000000000000000000000000081565b60008083518360ff16111515156106c357600080fd5b60028360ff16101515156106d657600080fd5b6106de610fae565b600091505b83518210156107ea5783828151811015156106fa57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561072c57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561078557600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506106e3565b8360029080519060200190610800929190611038565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108d357600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561090857600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109d857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109fe57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610b34576005600085600019166000191681526020019081526020016000206000600283815481101515610a8357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b045781806001019250505b600160149054906101000a900460ff1660ff16821415610b275760019250610b39565b8080600101915050610a4a565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b602083101515610bb15780518252602082019150602081019050602083039250610b8c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600281815481101515610c2357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610cad57600080fd5b602083015191507f54e99c6e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610d2057600080fd5b610d2983610b79565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610d6057600080fd5b610d6981610a41565b1515610d7457600080fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b021640a600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008660006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610e8557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610ec5578082015181840152602081019050610eaa565b50505050905090810190601f168015610ef25780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b505050506040513d6020811015610f3e57600080fd5b810190808051906020019092919050505050505050565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ff557600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8280548282559060005260206000209081019282156110b1579160200282015b828111156110b05782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611058565b5b5090506110be91906110c2565b5090565b61110291905b808211156110fe57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016110c8565b5090565b905600a165627a7a72305820d0d4a797e7a772df46dc5c07d636325879d9fe91e9fe0a658f50ee02e27f0c8e0029", - "sourceMap": "306:3521:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;306:3521:20;;;;;;;", - "deployedSourceMap": "306:3521:20:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;459:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;459:72:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1253:494;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1253:494:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;538:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;538:22:20;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:8;;;;;;;;;;;;;;;;;;;;;;;;;;;661:41:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;661:41:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1860:181;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1860:181:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;3161:405:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3161:405:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;353:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:54: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;353:54:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3695:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3695:130:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;905:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;905:65:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;566:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;566:24:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:755;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2245:755:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;770:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;770:43:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;413:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;413: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;413:40:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;459:72;;;:::o;1253:494::-;1476:9;1531:14;1357:8;:15;1343:10;:29;;;;1335:38;;;;;;;;1405:1;1391:10;:15;;;;1383:24;;;;;;;;1417:12;:10;:12::i;:::-;1488:1;1476:13;;1471:210;1495:8;:15;1491:1;:19;1471:210;;;1548:8;1557:1;1548:11;;;;;;;;;;;;;;;;;;1531:28;;1591:1;1581:6;:11;;;;1573:20;;;;;;;;1616:8;:16;1625:6;1616:16;;;;;;;;;;;;;;;;;;;;;;;;;1615:17;1607:26;;;;;;;;1666:4;1647:8;:16;1656:6;1647:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1512:3;;;;;;;1471:210;;;1700:8;1690:7;:18;;;;;;;;;;;;:::i;:::-;;1730:10;1718:9;;:22;;;;;;;;;;;;;;;;;;1253:494;;;;:::o;538:22::-;;;;;;;;;;;;;:::o;262:28:8:-;;;;;;;;;;;;;:::o;661:41:20:-;;;;;;;;;;;;;;;;;;;;;;:::o;1860:181::-;1017:8;:20;1026:10;1017:20;;;;;;;;;;;;;;;;;;;;;;;;;1009:29;;;;;;;;1963:10;:20;1974:8;1963:20;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:21;1954:30;;;;;;;;2030:4;1994:11;:21;2006:8;1994:21;;;;;;;;;;;;;;;;;:33;2016:10;1994:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1860:181;:::o;626:208:6:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;3161:405:20:-;3262:4;3282:25;3322:9;3334:1;3322:13;;3317:221;3341:7;:14;;;;3337:1;:18;3317:221;;;3380:11;:21;3392:8;3380:21;;;;;;;;;;;;;;;;;:33;3402:7;3410:1;3402:10;;;;;;;;;;;;;;;;;;;;;;;;;;;3380:33;;;;;;;;;;;;;;;;;;;;;;;;;3376:74;;;3431:19;;;;;;;3376:74;3489:9;;;;;;;;;;;3468:30;;:17;:30;3464:63;;;3523:4;3516:11;;;;3464:63;3357:3;;;;;;;3317:221;;;3554:5;3547:12;;3161:405;;;;;;:::o;353:54::-;;;;;;;;;;;;;;;;;;;;:::o;3695:130::-;3773:7;3813:4;3803: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;;;3803:15:20;;;;;;;;;;;;;;;;3796:22;;3695:130;;;:::o;905:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;566:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2245:755::-;2485:25;2744:16;2381:8;:20;2390:10;2381:20;;;;;;;;;;;;;;;;;;;;;;;;;2373:29;;;;;;;;2645:4;2639;2635:15;2629:22;2607:44;;2700:33;2678:55;;;:18;:55;;;;2670:64;;;;;;;;2763:17;2775:4;2763:11;:17::i;:::-;2744:36;;2799:10;:20;2810:8;2799:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2798:21;2790:30;;;;;;;;2838:38;2867:8;2838:28;:38::i;:::-;2830:47;;;;;;;;2910:4;2887:10;:20;2898:8;2887:20;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2924:7;;;;;;;;;;;:21;;;2954:7;;;;;;;;;;;2964:1;2967:4;2973:19;2924:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2924:69:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2924:69:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2924:69:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2924:69:20;;;;;;;;;;;;;;;;;2245:755;;;:::o;770:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;413:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:8:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;306:3521:20:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.23;\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 bytes4 public constant REPLACE_OWNER_FUNCTION_IDENTIFIER = hex\"54e99c6e\";\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]);\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);\n require(_threshold >= 2);\n setManager();\n // Set allowed friends.\n for (uint256 i = 0; i < _friends.length; i++) {\n address friend = _friends[i];\n require(friend != 0);\n require(!isFriend[friend]);\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]);\n isConfirmed[dataHash][msg.sender] = true;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param data Encoded owner replacement transaction.\n /// @return Returns if transaction can be executed.\n function recoverAccess(bytes data)\n public\n {\n // Only friends are allowed to execute the replacement.\n require(isFriend[msg.sender]);\n // Validate that transaction is a owner replacement transaction.\n bytes4 functionIdentifier;\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n }\n require(functionIdentifier == REPLACE_OWNER_FUNCTION_IDENTIFIER);\n bytes32 dataHash = getDataHash(data);\n require(!isExecuted[dataHash]);\n require(isConfirmedByRequiredFriends(dataHash));\n isExecuted[dataHash] = true;\n manager.executeModule(address(manager), 0, data, Enum.Operation.Call);\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 view\n returns (bytes32)\n {\n return keccak256(data);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b5061113b806100206000396000f3006080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014957806342cde4e8146101bc578063481c6a75146101ed57806368125a1b1461024457806379716e431461029f5780637de7edef146102d05780639ca89d0d14610313578063a3f4df7e1461035c578063ae68b056146103ec578063b79ffaff14610471578063ce146828146104da578063d2740c7614610547578063e52cb36a146105b0578063ffa1ad74146105f9575b600080fd5b3480156100ec57600080fd5b506100f5610689565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561015557600080fd5b506101ba60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff1690602001909291905050506106ad565b005b3480156101c857600080fd5b506101d1610822565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101f957600080fd5b50610202610835565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025057600080fd5b50610285600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061085b565b604051808215151515815260200191505060405180910390f35b3480156102ab57600080fd5b506102ce600480360381019080803560001916906020019092919050505061087b565b005b3480156102dc57600080fd5b50610311600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061097c565b005b34801561031f57600080fd5b506103426004803603810190808035600019169060200190929190505050610a41565b604051808215151515815260200191505060405180910390f35b34801561036857600080fd5b50610371610b40565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103b1578082015181840152602081019050610396565b50505050905090810190601f1680156103de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f857600080fd5b50610453600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610b79565b60405180826000191660001916815260200191505060405180910390f35b34801561047d57600080fd5b506104c06004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610be5565b604051808215151515815260200191505060405180910390f35b3480156104e657600080fd5b5061050560048036038101908080359060200190929190505050610c14565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561055357600080fd5b506105ae600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c52565b005b3480156105bc57600080fd5b506105df6004803603810190808035600019169060200190929190505050610f5f565b604051808215151515815260200191505060405180910390f35b34801561060557600080fd5b5061060e610f7f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561064e578082015181840152602081019050610633565b50505050905090810190601f16801561067b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7fe318b52b0000000000000000000000000000000000000000000000000000000081565b60008083518360ff16111515156106c357600080fd5b60028360ff16101515156106d657600080fd5b6106de610fb8565b600091505b83518210156107ea5783828151811015156106fa57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561072c57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561078557600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506106e3565b8360029080519060200190610800929190611042565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108d357600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561090857600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109d857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109fe57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610b34576005600085600019166000191681526020019081526020016000206000600283815481101515610a8357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b045781806001019250505b600160149054906101000a900460ff1660ff16821415610b275760019250610b39565b8080600101915050610a4a565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b602083101515610bb15780518252602082019150602081019050602083039250610b8c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600281815481101515610c2357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610cad57600080fd5b602083015191507fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610d2057600080fd5b610d2983610b79565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610d6057600080fd5b610d6981610a41565b1515610d7457600080fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008660006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610e8557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610ec5578082015181840152602081019050610eaa565b50505050905090810190601f168015610ef25780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b505050506040513d6020811015610f3e57600080fd5b81019080805190602001909291905050501515610f5a57600080fd5b505050565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610fff57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8280548282559060005260206000209081019282156110bb579160200282015b828111156110ba5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611062565b5b5090506110c891906110cc565b5090565b61110c91905b8082111561110857600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016110d2565b5090565b905600a165627a7a723058201123dfa8605844d9977e93c4ec8232b4cd0c983832a7164c449e76402ee39bd50029", + "deployedBytecode": "0x6080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014957806342cde4e8146101bc578063481c6a75146101ed57806368125a1b1461024457806379716e431461029f5780637de7edef146102d05780639ca89d0d14610313578063a3f4df7e1461035c578063ae68b056146103ec578063b79ffaff14610471578063ce146828146104da578063d2740c7614610547578063e52cb36a146105b0578063ffa1ad74146105f9575b600080fd5b3480156100ec57600080fd5b506100f5610689565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561015557600080fd5b506101ba60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff1690602001909291905050506106ad565b005b3480156101c857600080fd5b506101d1610822565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101f957600080fd5b50610202610835565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025057600080fd5b50610285600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061085b565b604051808215151515815260200191505060405180910390f35b3480156102ab57600080fd5b506102ce600480360381019080803560001916906020019092919050505061087b565b005b3480156102dc57600080fd5b50610311600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061097c565b005b34801561031f57600080fd5b506103426004803603810190808035600019169060200190929190505050610a41565b604051808215151515815260200191505060405180910390f35b34801561036857600080fd5b50610371610b40565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103b1578082015181840152602081019050610396565b50505050905090810190601f1680156103de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f857600080fd5b50610453600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610b79565b60405180826000191660001916815260200191505060405180910390f35b34801561047d57600080fd5b506104c06004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610be5565b604051808215151515815260200191505060405180910390f35b3480156104e657600080fd5b5061050560048036038101908080359060200190929190505050610c14565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561055357600080fd5b506105ae600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c52565b005b3480156105bc57600080fd5b506105df6004803603810190808035600019169060200190929190505050610f5f565b604051808215151515815260200191505060405180910390f35b34801561060557600080fd5b5061060e610f7f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561064e578082015181840152602081019050610633565b50505050905090810190601f16801561067b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7fe318b52b0000000000000000000000000000000000000000000000000000000081565b60008083518360ff16111515156106c357600080fd5b60028360ff16101515156106d657600080fd5b6106de610fb8565b600091505b83518210156107ea5783828151811015156106fa57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561072c57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561078557600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506106e3565b8360029080519060200190610800929190611042565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108d357600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561090857600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109d857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109fe57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610b34576005600085600019166000191681526020019081526020016000206000600283815481101515610a8357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b045781806001019250505b600160149054906101000a900460ff1660ff16821415610b275760019250610b39565b8080600101915050610a4a565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b602083101515610bb15780518252602082019150602081019050602083039250610b8c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600281815481101515610c2357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610cad57600080fd5b602083015191507fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610d2057600080fd5b610d2983610b79565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610d6057600080fd5b610d6981610a41565b1515610d7457600080fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008660006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610e8557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610ec5578082015181840152602081019050610eaa565b50505050905090810190601f168015610ef25780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b505050506040513d6020811015610f3e57600080fd5b81019080805190602001909291905050501515610f5a57600080fd5b505050565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610fff57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8280548282559060005260206000209081019282156110bb579160200282015b828111156110ba5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611062565b5b5090506110c891906110cc565b5090565b61110c91905b8082111561110857600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016110d2565b5090565b905600a165627a7a723058201123dfa8605844d9977e93c4ec8232b4cd0c983832a7164c449e76402ee39bd50029", + "sourceMap": "306:3542:12:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;306:3542:12;;;;;;;", + "deployedSourceMap": "306:3542:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;459:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;459:72:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1253:494;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1253:494:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;538:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;538:22:12;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;661:41:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;661:41:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1860:181;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1860:181:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;3182:405:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3182:405:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;353:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:54:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3716:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3716:130:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;905:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;905:65:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;566:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;566:24:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:776;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2245:776:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;770:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;770:43:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;413:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;413:40:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;459:72;;;:::o;1253:494::-;1476:9;1531:14;1357:8;:15;1343:10;:29;;;;1335:38;;;;;;;;1405:1;1391:10;:15;;;;1383:24;;;;;;;;1417:12;:10;:12::i;:::-;1488:1;1476:13;;1471:210;1495:8;:15;1491:1;:19;1471:210;;;1548:8;1557:1;1548:11;;;;;;;;;;;;;;;;;;1531:28;;1591:1;1581:6;:11;;;;1573:20;;;;;;;;1616:8;:16;1625:6;1616:16;;;;;;;;;;;;;;;;;;;;;;;;;1615:17;1607:26;;;;;;;;1666:4;1647:8;:16;1656:6;1647:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1512:3;;;;;;;1471:210;;;1700:8;1690:7;:18;;;;;;;;;;;;:::i;:::-;;1730:10;1718:9;;:22;;;;;;;;;;;;;;;;;;1253:494;;;;:::o;538:22::-;;;;;;;;;;;;;:::o;262:28:5:-;;;;;;;;;;;;;:::o;661:41:12:-;;;;;;;;;;;;;;;;;;;;;;:::o;1860:181::-;1017:8;:20;1026:10;1017:20;;;;;;;;;;;;;;;;;;;;;;;;;1009:29;;;;;;;;1963:10;:20;1974:8;1963:20;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:21;1954:30;;;;;;;;2030:4;1994:11;:21;2006:8;1994:21;;;;;;;;;;;;;;;;;:33;2016:10;1994:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1860:181;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;3182:405:12:-;3283:4;3303:25;3343:9;3355:1;3343:13;;3338:221;3362:7;:14;;;;3358:1;:18;3338:221;;;3401:11;:21;3413:8;3401:21;;;;;;;;;;;;;;;;;:33;3423:7;3431:1;3423:10;;;;;;;;;;;;;;;;;;;;;;;;;;;3401:33;;;;;;;;;;;;;;;;;;;;;;;;;3397:74;;;3452:19;;;;;;;3397:74;3510:9;;;;;;;;;;;3489:30;;:17;:30;3485:63;;;3544:4;3537:11;;;;3485:63;3378:3;;;;;;;3338:221;;;3575:5;3568:12;;3182:405;;;;;;:::o;353:54::-;;;;;;;;;;;;;;;;;;;;:::o;3716:130::-;3794:7;3834:4;3824: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;;;3824:15:12;;;;;;;;;;;;;;;;3817:22;;3716:130;;;:::o;905:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;566:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2245:776::-;2485:25;2744:16;2381:8;:20;2390:10;2381:20;;;;;;;;;;;;;;;;;;;;;;;;;2373:29;;;;;;;;2645:4;2639;2635:15;2629:22;2607:44;;2700:33;2678:55;;;:18;:55;;;;2670:64;;;;;;;;2763:17;2775:4;2763:11;:17::i;:::-;2744:36;;2799:10;:20;2810:8;2799:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2798:21;2790:30;;;;;;;;2838:38;2867:8;2838:28;:38::i;:::-;2830:47;;;;;;;;2910:4;2887:10;:20;2898:8;2887:20;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2932:7;;;;;;;;;;;:33;;;2974:7;;;;;;;;;;;2984:1;2987:4;2993:19;2932: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;2932:81:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2932:81:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2932:81:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2932:81:12;;;;;;;;;;;;;;;;2924:90;;;;;;;;2245:776;;;:::o;770:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;413:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:5:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;306:3542:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.23;\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 bytes4 public constant REPLACE_OWNER_FUNCTION_IDENTIFIER = hex\"e318b52b\";\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]);\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);\n require(_threshold >= 2);\n setManager();\n // Set allowed friends.\n for (uint256 i = 0; i < _friends.length; i++) {\n address friend = _friends[i];\n require(friend != 0);\n require(!isFriend[friend]);\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]);\n isConfirmed[dataHash][msg.sender] = true;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param data Encoded owner replacement transaction.\n /// @return Returns if transaction can be executed.\n function recoverAccess(bytes data)\n public\n {\n // Only friends are allowed to execute the replacement.\n require(isFriend[msg.sender]);\n // Validate that transaction is a owner replacement transaction.\n bytes4 functionIdentifier;\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n }\n require(functionIdentifier == REPLACE_OWNER_FUNCTION_IDENTIFIER);\n bytes32 dataHash = getDataHash(data);\n require(!isExecuted[dataHash]);\n require(isConfirmedByRequiredFriends(dataHash));\n isExecuted[dataHash] = true;\n require(manager.execTransactionFromModule(address(manager), 0, data, Enum.Operation.Call));\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 view\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": [ - 2304 + 2035 ] }, - "id": 2305, + "id": 2036, "nodeType": "SourceUnit", "nodes": [ { - "id": 2047, + "id": 1777, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:20" + "src": "0:23:12" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 2048, + "id": 1778, "nodeType": "ImportDirective", - "scope": 2305, - "sourceUnit": 31, - "src": "24:21:20", + "scope": 2036, + "sourceUnit": 7, + "src": "24:21:12", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2049, + "id": 1779, "nodeType": "ImportDirective", - "scope": 2305, - "sourceUnit": 878, - "src": "46:23:20", + "scope": 2036, + "sourceUnit": 622, + "src": "46:23:12", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 2050, + "id": 1780, "nodeType": "ImportDirective", - "scope": 2305, - "sourceUnit": 1143, - "src": "70:30:20", + "scope": 2036, + "sourceUnit": 972, + "src": "70:30:12", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2051, + "id": 1781, "nodeType": "ImportDirective", - "scope": 2305, - "sourceUnit": 1439, - "src": "101:29:20", + "scope": 2036, + "sourceUnit": 1344, + "src": "101:29:12", "symbolAliases": [], "unitAlias": "" }, @@ -326,46 +326,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2052, + "id": 1782, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "339:6:20", + "referencedDeclaration": 621, + "src": "339:6:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", + "typeIdentifier": "t_contract$_Module_$621", "typeString": "contract Module" } }, - "id": 2053, + "id": 1783, "nodeType": "InheritanceSpecifier", - "src": "339:6:20" + "src": "339:6:12" } ], "contractDependencies": [ - 779, - 877, - 1559 + 580, + 621, + 1359 ], "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": 2304, + "id": 2035, "linearizedBaseContracts": [ - 2304, - 877, - 779, - 1559 + 2035, + 621, + 580, + 1359 ], "name": "SocialRecoveryModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2056, + "id": 1786, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2304, - "src": "353:54:20", + "scope": 2035, + "src": "353:54:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -373,10 +373,10 @@ "typeString": "string" }, "typeName": { - "id": 2054, + "id": 1784, "name": "string", "nodeType": "ElementaryTypeName", - "src": "353:6:20", + "src": "353:6:12", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -385,14 +385,14 @@ "value": { "argumentTypes": null, "hexValue": "536f6369616c205265636f76657279204d6f64756c65", - "id": 2055, + "id": 1785, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "383:24:20", + "src": "383:24:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8f499aea563eae5544b16c9123d6c7c8537a7d9dd86296aa60c65de194207230", @@ -404,11 +404,11 @@ }, { "constant": true, - "id": 2059, + "id": 1789, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2304, - "src": "413:40:20", + "scope": 2035, + "src": "413:40:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -416,10 +416,10 @@ "typeString": "string" }, "typeName": { - "id": 2057, + "id": 1787, "name": "string", "nodeType": "ElementaryTypeName", - "src": "413:6:20", + "src": "413:6:12", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -428,14 +428,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2058, + "id": 1788, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "446:7:20", + "src": "446:7:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -447,11 +447,11 @@ }, { "constant": true, - "id": 2062, + "id": 1792, "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", "nodeType": "VariableDeclaration", - "scope": 2304, - "src": "459:72:20", + "scope": 2035, + "src": "459:72:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -459,10 +459,10 @@ "typeString": "bytes4" }, "typeName": { - "id": 2060, + "id": 1790, "name": "bytes4", "nodeType": "ElementaryTypeName", - "src": "459:6:20", + "src": "459:6:12", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -470,19 +470,19 @@ }, "value": { "argumentTypes": null, - "hexValue": "54e99c6e", - "id": 2061, + "hexValue": "e318b52b", + "id": 1791, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "518:13:20", + "src": "518:13:12", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c9d777df93ed5e148240dbbfbc0215def5044b10739d563ea8310789d1317911", - "typeString": "literal_string (contains invalid UTF-8 sequence at position 4)" + "typeIdentifier": "t_stringliteral_df42753442dae44b262788763363a184bfb8d0df593d5073d67844ce4b3a2d8b", + "typeString": "literal_string (contains invalid UTF-8 sequence at position 2)" }, "value": null }, @@ -490,11 +490,11 @@ }, { "constant": false, - "id": 2064, + "id": 1794, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2304, - "src": "538:22:20", + "scope": 2035, + "src": "538:22:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -502,10 +502,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2063, + "id": 1793, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "538:5:20", + "src": "538:5:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -516,11 +516,11 @@ }, { "constant": false, - "id": 2067, + "id": 1797, "name": "friends", "nodeType": "VariableDeclaration", - "scope": 2304, - "src": "566:24:20", + "scope": 2035, + "src": "566:24:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -529,19 +529,19 @@ }, "typeName": { "baseType": { - "id": 2065, + "id": 1795, "name": "address", "nodeType": "ElementaryTypeName", - "src": "566:7:20", + "src": "566:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2066, + "id": 1796, "length": null, "nodeType": "ArrayTypeName", - "src": "566:9:20", + "src": "566:9:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -552,11 +552,11 @@ }, { "constant": false, - "id": 2071, + "id": 1801, "name": "isFriend", "nodeType": "VariableDeclaration", - "scope": 2304, - "src": "661:41:20", + "scope": 2035, + "src": "661:41:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -564,28 +564,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 2070, + "id": 1800, "keyType": { - "id": 2068, + "id": 1798, "name": "address", "nodeType": "ElementaryTypeName", - "src": "670:7:20", + "src": "670:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "661:25:20", + "src": "661:25:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2069, + "id": 1799, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "681:4:20", + "src": "681:4:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -597,11 +597,11 @@ }, { "constant": false, - "id": 2075, + "id": 1805, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2304, - "src": "770:43:20", + "scope": 2035, + "src": "770:43:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -609,28 +609,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 2074, + "id": 1804, "keyType": { - "id": 2072, + "id": 1802, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "779:7:20", + "src": "779:7:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "770:25:20", + "src": "770:25:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 2073, + "id": 1803, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "790:4:20", + "src": "790:4:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -642,11 +642,11 @@ }, { "constant": false, - "id": 2081, + "id": 1811, "name": "isConfirmed", "nodeType": "VariableDeclaration", - "scope": 2304, - "src": "905:65:20", + "scope": 2035, + "src": "905:65:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -654,46 +654,46 @@ "typeString": "mapping(bytes32 => mapping(address => bool))" }, "typeName": { - "id": 2080, + "id": 1810, "keyType": { - "id": 2076, + "id": 1806, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "914:7:20", + "src": "914:7:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "905:46:20", + "src": "905:46:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" }, "valueType": { - "id": 2079, + "id": 1809, "keyType": { - "id": 2077, + "id": 1807, "name": "address", "nodeType": "ElementaryTypeName", - "src": "934:7:20", + "src": "934:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "925:25:20", + "src": "925:25:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2078, + "id": 1808, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "945:4:20", + "src": "945:4:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -706,9 +706,9 @@ }, { "body": { - "id": 2091, + "id": 1821, "nodeType": "Block", - "src": "999:57:20", + "src": "999:57:12", "statements": [ { "expression": { @@ -718,34 +718,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2084, + "id": 1814, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2071, - "src": "1017:8:20", + "referencedDeclaration": 1801, + "src": "1017:8:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2087, + "id": 1817, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2085, + "id": 1815, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "1026:3:20", + "referencedDeclaration": 2396, + "src": "1026:3:12", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2086, + "id": 1816, "isConstant": false, "isLValue": false, "isPure": false, @@ -753,7 +753,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1026:10:20", + "src": "1026:10:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -764,7 +764,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1017:20:20", + "src": "1017:20:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -778,21 +778,21 @@ "typeString": "bool" } ], - "id": 2083, + "id": 1813, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1009:7:20", + "referencedDeclaration": 2399, + "src": "1009:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2088, + "id": 1818, "isConstant": false, "isLValue": false, "isPure": false, @@ -800,41 +800,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1009:29:20", + "src": "1009:29:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2089, + "id": 1819, "nodeType": "ExpressionStatement", - "src": "1009:29:20" + "src": "1009:29:12" }, { - "id": 2090, + "id": 1820, "nodeType": "PlaceholderStatement", - "src": "1048:1:20" + "src": "1048:1:12" } ] }, "documentation": null, - "id": 2092, + "id": 1822, "name": "onlyFriend", "nodeType": "ModifierDefinition", "parameters": { - "id": 2082, + "id": 1812, "nodeType": "ParameterList", "parameters": [], - "src": "996:2:20" + "src": "996:2:12" }, - "src": "977:79:20", + "src": "977:79:12", "visibility": "internal" }, { "body": { - "id": 2162, + "id": 1892, "nodeType": "Block", - "src": "1325:422:20", + "src": "1325:422:12", "statements": [ { "expression": { @@ -846,19 +846,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2104, + "id": 1834, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2101, + "id": 1831, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2097, - "src": "1343:10:20", + "referencedDeclaration": 1827, + "src": "1343:10:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -870,18 +870,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2102, + "id": 1832, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1357:8:20", + "referencedDeclaration": 1825, + "src": "1357:8:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2103, + "id": 1833, "isConstant": false, "isLValue": false, "isPure": false, @@ -889,13 +889,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1357:15:20", + "src": "1357:15:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1343:29:20", + "src": "1343:29:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -909,21 +909,21 @@ "typeString": "bool" } ], - "id": 2100, + "id": 1830, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1335:7:20", + "referencedDeclaration": 2399, + "src": "1335:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2105, + "id": 1835, "isConstant": false, "isLValue": false, "isPure": false, @@ -931,15 +931,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1335:38:20", + "src": "1335:38:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2106, + "id": 1836, "nodeType": "ExpressionStatement", - "src": "1335:38:20" + "src": "1335:38:12" }, { "expression": { @@ -951,19 +951,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 2110, + "id": 1840, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2108, + "id": 1838, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2097, - "src": "1391:10:20", + "referencedDeclaration": 1827, + "src": "1391:10:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -974,14 +974,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 2109, + "id": 1839, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1405:1:20", + "src": "1405:1:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -989,7 +989,7 @@ }, "value": "2" }, - "src": "1391:15:20", + "src": "1391:15:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1003,21 +1003,21 @@ "typeString": "bool" } ], - "id": 2107, + "id": 1837, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1383:7:20", + "referencedDeclaration": 2399, + "src": "1383:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2111, + "id": 1841, "isConstant": false, "isLValue": false, "isPure": false, @@ -1025,15 +1025,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1383:24:20", + "src": "1383:24:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2112, + "id": 1842, "nodeType": "ExpressionStatement", - "src": "1383:24:20" + "src": "1383:24:12" }, { "expression": { @@ -1041,18 +1041,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2113, + "id": 1843, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 876, - "src": "1417:10:20", + "referencedDeclaration": 620, + "src": "1417:10:12", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2114, + "id": 1844, "isConstant": false, "isLValue": false, "isPure": false, @@ -1060,34 +1060,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1417:12:20", + "src": "1417:12:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2115, + "id": 1845, "nodeType": "ExpressionStatement", - "src": "1417:12:20" + "src": "1417:12:12" }, { "body": { - "id": 2152, + "id": 1882, "nodeType": "Block", - "src": "1517:164:20", + "src": "1517:164:12", "statements": [ { "assignments": [ - 2128 + 1858 ], "declarations": [ { "constant": false, - "id": 2128, + "id": 1858, "name": "friend", "nodeType": "VariableDeclaration", - "scope": 2163, - "src": "1531:14:20", + "scope": 1893, + "src": "1531:14:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1095,10 +1095,10 @@ "typeString": "address" }, "typeName": { - "id": 2127, + "id": 1857, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1531:7:20", + "src": "1531:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1108,31 +1108,31 @@ "visibility": "internal" } ], - "id": 2132, + "id": 1862, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2129, + "id": 1859, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1548:8:20", + "referencedDeclaration": 1825, + "src": "1548:8:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2131, + "id": 1861, "indexExpression": { "argumentTypes": null, - "id": 2130, + "id": 1860, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2117, - "src": "1557:1:20", + "referencedDeclaration": 1847, + "src": "1557:1:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1143,14 +1143,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1548:11:20", + "src": "1548:11:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1531:28:20" + "src": "1531:28:12" }, { "expression": { @@ -1162,19 +1162,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2136, + "id": 1866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2134, + "id": 1864, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2128, - "src": "1581:6:20", + "referencedDeclaration": 1858, + "src": "1581:6:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1185,14 +1185,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2135, + "id": 1865, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1591:1:20", + "src": "1591:1:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1200,7 +1200,7 @@ }, "value": "0" }, - "src": "1581:11:20", + "src": "1581:11:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1214,21 +1214,21 @@ "typeString": "bool" } ], - "id": 2133, + "id": 1863, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1573:7:20", + "referencedDeclaration": 2399, + "src": "1573:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2137, + "id": 1867, "isConstant": false, "isLValue": false, "isPure": false, @@ -1236,15 +1236,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1573:20:20", + "src": "1573:20:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2138, + "id": 1868, "nodeType": "ExpressionStatement", - "src": "1573:20:20" + "src": "1573:20:12" }, { "expression": { @@ -1252,7 +1252,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2143, + "id": 1873, "isConstant": false, "isLValue": false, "isPure": false, @@ -1260,31 +1260,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1615:17:20", + "src": "1615:17:12", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2140, + "id": 1870, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2071, - "src": "1616:8:20", + "referencedDeclaration": 1801, + "src": "1616:8:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2142, + "id": 1872, "indexExpression": { "argumentTypes": null, - "id": 2141, + "id": 1871, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2128, - "src": "1625:6:20", + "referencedDeclaration": 1858, + "src": "1625:6:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1295,7 +1295,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1616:16:20", + "src": "1616:16:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1314,21 +1314,21 @@ "typeString": "bool" } ], - "id": 2139, + "id": 1869, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1607:7:20", + "referencedDeclaration": 2399, + "src": "1607:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2144, + "id": 1874, "isConstant": false, "isLValue": false, "isPure": false, @@ -1336,20 +1336,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1607:26:20", + "src": "1607:26:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2145, + "id": 1875, "nodeType": "ExpressionStatement", - "src": "1607:26:20" + "src": "1607:26:12" }, { "expression": { "argumentTypes": null, - "id": 2150, + "id": 1880, "isConstant": false, "isLValue": false, "isPure": false, @@ -1358,26 +1358,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2146, + "id": 1876, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2071, - "src": "1647:8:20", + "referencedDeclaration": 1801, + "src": "1647:8:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2148, + "id": 1878, "indexExpression": { "argumentTypes": null, - "id": 2147, + "id": 1877, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2128, - "src": "1656:6:20", + "referencedDeclaration": 1858, + "src": "1656:6:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1388,7 +1388,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1647:16:20", + "src": "1647:16:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1399,14 +1399,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2149, + "id": 1879, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1666:4:20", + "src": "1666:4:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1414,15 +1414,15 @@ }, "value": "true" }, - "src": "1647:23:20", + "src": "1647:23:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2151, + "id": 1881, "nodeType": "ExpressionStatement", - "src": "1647:23:20" + "src": "1647:23:12" } ] }, @@ -1432,19 +1432,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2123, + "id": 1853, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2120, + "id": 1850, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2117, - "src": "1491:1:20", + "referencedDeclaration": 1847, + "src": "1491:1:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1456,18 +1456,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2121, + "id": 1851, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1495:8:20", + "referencedDeclaration": 1825, + "src": "1495:8:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2122, + "id": 1852, "isConstant": false, "isLValue": false, "isPure": false, @@ -1475,31 +1475,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1495:15:20", + "src": "1495:15:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1491:19:20", + "src": "1491:19:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2153, + "id": 1883, "initializationExpression": { "assignments": [ - 2117 + 1847 ], "declarations": [ { "constant": false, - "id": 2117, + "id": 1847, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2163, - "src": "1476:9:20", + "scope": 1893, + "src": "1476:9:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1507,10 +1507,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2116, + "id": 1846, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1476:7:20", + "src": "1476:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1520,18 +1520,18 @@ "visibility": "internal" } ], - "id": 2119, + "id": 1849, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2118, + "id": 1848, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1488:1:20", + "src": "1488:1:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1540,12 +1540,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1476:13:20" + "src": "1476:13:12" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2125, + "id": 1855, "isConstant": false, "isLValue": false, "isPure": false, @@ -1553,15 +1553,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1512:3:20", + "src": "1512:3:12", "subExpression": { "argumentTypes": null, - "id": 2124, + "id": 1854, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2117, - "src": "1512:1:20", + "referencedDeclaration": 1847, + "src": "1512:1:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1572,29 +1572,29 @@ "typeString": "uint256" } }, - "id": 2126, + "id": 1856, "nodeType": "ExpressionStatement", - "src": "1512:3:20" + "src": "1512:3:12" }, "nodeType": "ForStatement", - "src": "1471:210:20" + "src": "1471:210:12" }, { "expression": { "argumentTypes": null, - "id": 2156, + "id": 1886, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2154, + "id": 1884, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2067, - "src": "1690:7:20", + "referencedDeclaration": 1797, + "src": "1690:7:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -1604,43 +1604,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2155, + "id": 1885, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1700:8:20", + "referencedDeclaration": 1825, + "src": "1700:8:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "src": "1690:18:20", + "src": "1690:18:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2157, + "id": 1887, "nodeType": "ExpressionStatement", - "src": "1690:18:20" + "src": "1690:18:12" }, { "expression": { "argumentTypes": null, - "id": 2160, + "id": 1890, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2158, + "id": 1888, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2064, - "src": "1718:9:20", + "referencedDeclaration": 1794, + "src": "1718:9:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1650,31 +1650,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2159, + "id": 1889, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2097, - "src": "1730:10:20", + "referencedDeclaration": 1827, + "src": "1730:10:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1718:22:20", + "src": "1718:22:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 2161, + "id": 1891, "nodeType": "ExpressionStatement", - "src": "1718:22:20" + "src": "1718:22:12" } ] }, "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": 2163, + "id": 1893, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1682,16 +1682,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2098, + "id": 1828, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2095, + "id": 1825, "name": "_friends", "nodeType": "VariableDeclaration", - "scope": 2163, - "src": "1268:18:20", + "scope": 1893, + "src": "1268:18:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1700,19 +1700,19 @@ }, "typeName": { "baseType": { - "id": 2093, + "id": 1823, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1268:7:20", + "src": "1268:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2094, + "id": 1824, "length": null, "nodeType": "ArrayTypeName", - "src": "1268:9:20", + "src": "1268:9:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -1723,11 +1723,11 @@ }, { "constant": false, - "id": 2097, + "id": 1827, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 2163, - "src": "1288:16:20", + "scope": 1893, + "src": "1288:16:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1735,10 +1735,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2096, + "id": 1826, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1288:5:20", + "src": "1288:5:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1748,26 +1748,26 @@ "visibility": "internal" } ], - "src": "1267:38:20" + "src": "1267:38:12" }, "payable": false, "returnParameters": { - "id": 2099, + "id": 1829, "nodeType": "ParameterList", "parameters": [], - "src": "1325:0:20" + "src": "1325:0:12" }, - "scope": 2304, - "src": "1253:494:20", + "scope": 2035, + "src": "1253:494:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2186, + "id": 1916, "nodeType": "Block", - "src": "1944:97:20", + "src": "1944:97:12", "statements": [ { "expression": { @@ -1775,7 +1775,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2174, + "id": 1904, "isConstant": false, "isLValue": false, "isPure": false, @@ -1783,31 +1783,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1962:21:20", + "src": "1962:21:12", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2171, + "id": 1901, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2075, - "src": "1963:10:20", + "referencedDeclaration": 1805, + "src": "1963:10:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2173, + "id": 1903, "indexExpression": { "argumentTypes": null, - "id": 2172, + "id": 1902, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2165, - "src": "1974:8:20", + "referencedDeclaration": 1895, + "src": "1974:8:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1818,7 +1818,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1963:20:20", + "src": "1963:20:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1837,21 +1837,21 @@ "typeString": "bool" } ], - "id": 2170, + "id": 1900, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1954:7:20", + "referencedDeclaration": 2399, + "src": "1954:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2175, + "id": 1905, "isConstant": false, "isLValue": false, "isPure": false, @@ -1859,20 +1859,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1954:30:20", + "src": "1954:30:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2176, + "id": 1906, "nodeType": "ExpressionStatement", - "src": "1954:30:20" + "src": "1954:30:12" }, { "expression": { "argumentTypes": null, - "id": 2184, + "id": 1914, "isConstant": false, "isLValue": false, "isPure": false, @@ -1883,26 +1883,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2177, + "id": 1907, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "1994:11:20", + "referencedDeclaration": 1811, + "src": "1994:11:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2181, + "id": 1911, "indexExpression": { "argumentTypes": null, - "id": 2178, + "id": 1908, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2165, - "src": "2006:8:20", + "referencedDeclaration": 1895, + "src": "2006:8:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1913,29 +1913,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1994:21:20", + "src": "1994:21:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2182, + "id": 1912, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2179, + "id": 1909, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "2016:3:20", + "referencedDeclaration": 2396, + "src": "2016:3:12", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2180, + "id": 1910, "isConstant": false, "isLValue": false, "isPure": false, @@ -1943,7 +1943,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2016:10:20", + "src": "2016:10:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1954,7 +1954,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1994:33:20", + "src": "1994:33:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1965,14 +1965,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2183, + "id": 1913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2030:4:20", + "src": "2030:4:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1980,57 +1980,57 @@ }, "value": "true" }, - "src": "1994:40:20", + "src": "1994:40:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2185, + "id": 1915, "nodeType": "ExpressionStatement", - "src": "1994:40:20" + "src": "1994:40:12" } ] }, "documentation": "@dev Allows a friend to confirm a Safe transaction.\n @param dataHash Safe transaction hash.", - "id": 2187, + "id": 1917, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2168, + "id": 1898, "modifierName": { "argumentTypes": null, - "id": 2167, + "id": 1897, "name": "onlyFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1929:10:20", + "referencedDeclaration": 1822, + "src": "1929:10:12", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1929:10:20" + "src": "1929:10:12" } ], "name": "confirmTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 2166, + "id": 1896, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2165, + "id": 1895, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2187, - "src": "1888:16:20", + "scope": 1917, + "src": "1888:16:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2038,10 +2038,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2164, + "id": 1894, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1888:7:20", + "src": "1888:7:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2051,26 +2051,26 @@ "visibility": "internal" } ], - "src": "1887:18:20" + "src": "1887:18:12" }, "payable": false, "returnParameters": { - "id": 2169, + "id": 1899, "nodeType": "ParameterList", "parameters": [], - "src": "1944:0:20" + "src": "1944:0:12" }, - "scope": 2304, - "src": "1860:181:20", + "scope": 2035, + "src": "1860:181:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2247, + "id": 1978, "nodeType": "Block", - "src": "2299:701:20", + "src": "2299:722:12", "statements": [ { "expression": { @@ -2080,34 +2080,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2193, + "id": 1923, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2071, - "src": "2381:8:20", + "referencedDeclaration": 1801, + "src": "2381:8:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2196, + "id": 1926, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2194, + "id": 1924, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "2390:3:20", + "referencedDeclaration": 2396, + "src": "2390:3:12", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2195, + "id": 1925, "isConstant": false, "isLValue": false, "isPure": false, @@ -2115,7 +2115,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2390:10:20", + "src": "2390:10:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2126,7 +2126,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2381:20:20", + "src": "2381:20:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2140,21 +2140,21 @@ "typeString": "bool" } ], - "id": 2192, + "id": 1922, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2373:7:20", + "referencedDeclaration": 2399, + "src": "2373:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2197, + "id": 1927, "isConstant": false, "isLValue": false, "isPure": false, @@ -2162,26 +2162,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2373:29:20", + "src": "2373:29:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2198, + "id": 1928, "nodeType": "ExpressionStatement", - "src": "2373:29:20" + "src": "2373:29:12" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 2200, + "id": 1930, "name": "functionIdentifier", "nodeType": "VariableDeclaration", - "scope": 2248, - "src": "2485:25:20", + "scope": 1979, + "src": "2485:25:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2189,10 +2189,10 @@ "typeString": "bytes4" }, "typeName": { - "id": 2199, + "id": 1929, "name": "bytes4", "nodeType": "ElementaryTypeName", - "src": "2485:6:20", + "src": "2485:6:12", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -2202,36 +2202,36 @@ "visibility": "internal" } ], - "id": 2201, + "id": 1931, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2485:25:20" + "src": "2485:25:12" }, { "externalReferences": [ { "functionIdentifier": { - "declaration": 2200, + "declaration": 1930, "isOffset": false, "isSlot": false, - "src": "2607:18:20", + "src": "2607:18:12", "valueSize": 1 } }, { "data": { - "declaration": 2189, + "declaration": 1919, "isOffset": false, "isSlot": false, - "src": "2639:4:20", + "src": "2639:4:12", "valueSize": 1 } } ], - "id": 2202, + "id": 1932, "nodeType": "InlineAssembly", "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n}", - "src": "2584:93:20" + "src": "2584:93:12" }, { "expression": { @@ -2243,19 +2243,19 @@ "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, - "id": 2206, + "id": 1936, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2204, + "id": 1934, "name": "functionIdentifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2200, - "src": "2678:18:20", + "referencedDeclaration": 1930, + "src": "2678:18:12", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -2265,18 +2265,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 2205, + "id": 1935, "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2062, - "src": "2700:33:20", + "referencedDeclaration": 1792, + "src": "2700:33:12", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, - "src": "2678:55:20", + "src": "2678:55:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2290,21 +2290,21 @@ "typeString": "bool" } ], - "id": 2203, + "id": 1933, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2670:7:20", + "referencedDeclaration": 2399, + "src": "2670:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2207, + "id": 1937, "isConstant": false, "isLValue": false, "isPure": false, @@ -2312,28 +2312,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2670:64:20", + "src": "2670:64:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2208, + "id": 1938, "nodeType": "ExpressionStatement", - "src": "2670:64:20" + "src": "2670:64:12" }, { "assignments": [ - 2210 + 1940 ], "declarations": [ { "constant": false, - "id": 2210, + "id": 1940, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2248, - "src": "2744:16:20", + "scope": 1979, + "src": "2744:16:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2341,10 +2341,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2209, + "id": 1939, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2744:7:20", + "src": "2744:7:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2354,18 +2354,18 @@ "visibility": "internal" } ], - "id": 2214, + "id": 1944, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2212, + "id": 1942, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2189, - "src": "2775:4:20", + "referencedDeclaration": 1919, + "src": "2775:4:12", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2379,18 +2379,18 @@ "typeString": "bytes memory" } ], - "id": 2211, + "id": 1941, "name": "getDataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2303, - "src": "2763:11:20", + "referencedDeclaration": 2034, + "src": "2763:11:12", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) view returns (bytes32)" } }, - "id": 2213, + "id": 1943, "isConstant": false, "isLValue": false, "isPure": false, @@ -2398,14 +2398,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2763:17:20", + "src": "2763:17:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2744:36:20" + "src": "2744:36:12" }, { "expression": { @@ -2413,7 +2413,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2219, + "id": 1949, "isConstant": false, "isLValue": false, "isPure": false, @@ -2421,31 +2421,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2798:21:20", + "src": "2798:21:12", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2216, + "id": 1946, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2075, - "src": "2799:10:20", + "referencedDeclaration": 1805, + "src": "2799:10:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2218, + "id": 1948, "indexExpression": { "argumentTypes": null, - "id": 2217, + "id": 1947, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2210, - "src": "2810:8:20", + "referencedDeclaration": 1940, + "src": "2810:8:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2456,7 +2456,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2799:20:20", + "src": "2799:20:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2475,21 +2475,21 @@ "typeString": "bool" } ], - "id": 2215, + "id": 1945, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2790:7:20", + "referencedDeclaration": 2399, + "src": "2790:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2220, + "id": 1950, "isConstant": false, "isLValue": false, "isPure": false, @@ -2497,15 +2497,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2790:30:20", + "src": "2790:30:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2221, + "id": 1951, "nodeType": "ExpressionStatement", - "src": "2790:30:20" + "src": "2790:30:12" }, { "expression": { @@ -2516,12 +2516,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2224, + "id": 1954, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2210, - "src": "2867:8:20", + "referencedDeclaration": 1940, + "src": "2867:8:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2535,18 +2535,18 @@ "typeString": "bytes32" } ], - "id": 2223, + "id": 1953, "name": "isConfirmedByRequiredFriends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2291, - "src": "2838:28:20", + "referencedDeclaration": 2022, + "src": "2838:28:12", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, - "id": 2225, + "id": 1955, "isConstant": false, "isLValue": false, "isPure": false, @@ -2554,7 +2554,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2838:38:20", + "src": "2838:38:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2568,21 +2568,21 @@ "typeString": "bool" } ], - "id": 2222, + "id": 1952, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2830:7:20", + "referencedDeclaration": 2399, + "src": "2830:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2226, + "id": 1956, "isConstant": false, "isLValue": false, "isPure": false, @@ -2590,20 +2590,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2830:47:20", + "src": "2830:47:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2227, + "id": 1957, "nodeType": "ExpressionStatement", - "src": "2830:47:20" + "src": "2830:47:12" }, { "expression": { "argumentTypes": null, - "id": 2232, + "id": 1962, "isConstant": false, "isLValue": false, "isPure": false, @@ -2612,26 +2612,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2228, + "id": 1958, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2075, - "src": "2887:10:20", + "referencedDeclaration": 1805, + "src": "2887:10:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2230, + "id": 1960, "indexExpression": { "argumentTypes": null, - "id": 2229, + "id": 1959, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2210, - "src": "2898:8:20", + "referencedDeclaration": 1940, + "src": "2898:8:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2642,7 +2642,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2887:20:20", + "src": "2887:20:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2653,14 +2653,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2231, + "id": 1961, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2910:4:20", + "src": "2910:4:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2668,15 +2668,15 @@ }, "value": "true" }, - "src": "2887:27:20", + "src": "2887:27:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2233, + "id": 1963, "nodeType": "ExpressionStatement", - "src": "2887:27:20" + "src": "2887:27:12" }, { "expression": { @@ -2687,176 +2687,215 @@ "arguments": [ { "argumentTypes": null, - "id": 2238, - "name": "manager", + "arguments": [ + { + "argumentTypes": null, + "id": 1968, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "2974:7:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" + } + ], + "id": 1967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2966:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2966:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 1970, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2984:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "id": 1971, + "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "2954:7:20", + "referencedDeclaration": 1919, + "src": "2987:4:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", - "typeString": "contract ModuleManager" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1972, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6, + "src": "2993:4:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeString": "type(contract Enum)" + } + }, + "id": 1973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 5, + "src": "2993:14:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 1974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2993:19:12", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1142", - "typeString": "contract ModuleManager" + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" } ], - "id": 2237, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2946:7:20", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 2239, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2946:16:20", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "hexValue": "30", - "id": 2240, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2964:1:20", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "argumentTypes": null, - "id": 2241, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2189, - "src": "2967:4:20", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2242, - "name": "Enum", + "id": 1965, + "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 30, - "src": "2973:4:20", + "referencedDeclaration": 588, + "src": "2932:7:12", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", - "typeString": "type(contract Enum)" + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" } }, - "id": 2243, + "id": 1966, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "Operation", + "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "2973:14:20", + "referencedDeclaration": 798, + "src": "2932:33:12", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", - "typeString": "type(enum Enum.Operation)" + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2244, + "id": 1975, "isConstant": false, "isLValue": false, - "isPure": true, + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2973:19:20", + "names": [], + "nodeType": "FunctionCall", + "src": "2932:81:12", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" + "typeIdentifier": "t_bool", + "typeString": "bool" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" + "typeIdentifier": "t_bool", + "typeString": "bool" } ], - "expression": { - "argumentTypes": null, - "id": 2234, - "name": "manager", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "2924:7:20", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", - "typeString": "contract ModuleManager" - } - }, - "id": 2236, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "executeModule", - "nodeType": "MemberAccess", - "referencedDeclaration": 1033, - "src": "2924:21:20", + "id": 1964, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "2924:7:12", "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)" + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" } }, - "id": 2245, + "id": 1976, "isConstant": false, "isLValue": false, "isPure": false, @@ -2864,20 +2903,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2924:69:20", + "src": "2924:90:12", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 2246, + "id": 1977, "nodeType": "ExpressionStatement", - "src": "2924:69:20" + "src": "2924:90:12" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param data Encoded owner replacement transaction.\n @return Returns if transaction can be executed.", - "id": 2248, + "id": 1979, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2885,16 +2924,16 @@ "name": "recoverAccess", "nodeType": "FunctionDefinition", "parameters": { - "id": 2190, + "id": 1920, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2189, + "id": 1919, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2248, - "src": "2268:10:20", + "scope": 1979, + "src": "2268:10:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2902,10 +2941,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2188, + "id": 1918, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2268:5:20", + "src": "2268:5:12", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2915,37 +2954,37 @@ "visibility": "internal" } ], - "src": "2267:12:20" + "src": "2267:12:12" }, "payable": false, "returnParameters": { - "id": 2191, + "id": 1921, "nodeType": "ParameterList", "parameters": [], - "src": "2299:0:20" + "src": "2299:0:12" }, - "scope": 2304, - "src": "2245:755:20", + "scope": 2035, + "src": "2245:776:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2290, + "id": 2021, "nodeType": "Block", - "src": "3272:294:20", + "src": "3293:294:12", "statements": [ { "assignments": [], "declarations": [ { "constant": false, - "id": 2256, + "id": 1987, "name": "confirmationCount", "nodeType": "VariableDeclaration", - "scope": 2291, - "src": "3282:25:20", + "scope": 2022, + "src": "3303:25:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2953,10 +2992,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2255, + "id": 1986, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3282:7:20", + "src": "3303:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2966,16 +3005,16 @@ "visibility": "internal" } ], - "id": 2257, + "id": 1988, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "3282:25:20" + "src": "3303:25:12" }, { "body": { - "id": 2286, + "id": 2017, "nodeType": "Block", - "src": "3362:176:20", + "src": "3383:176:12", "statements": [ { "condition": { @@ -2984,26 +3023,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2269, + "id": 2000, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "3380:11:20", + "referencedDeclaration": 1811, + "src": "3401:11:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2271, + "id": 2002, "indexExpression": { "argumentTypes": null, - "id": 2270, + "id": 2001, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2250, - "src": "3392:8:20", + "referencedDeclaration": 1981, + "src": "3413:8:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3014,37 +3053,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3380:21:20", + "src": "3401:21:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2275, + "id": 2006, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2272, + "id": 2003, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2067, - "src": "3402:7:20", + "referencedDeclaration": 1797, + "src": "3423:7:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2274, + "id": 2005, "indexExpression": { "argumentTypes": null, - "id": 2273, + "id": 2004, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2259, - "src": "3410:1:20", + "referencedDeclaration": 1990, + "src": "3431:1:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3055,7 +3094,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3402:10:20", + "src": "3423:10:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3066,20 +3105,20 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3380:33:20", + "src": "3401:33:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2279, + "id": 2010, "nodeType": "IfStatement", - "src": "3376:74:20", + "src": "3397:74:12", "trueBody": { "expression": { "argumentTypes": null, - "id": 2277, + "id": 2008, "isConstant": false, "isLValue": false, "isPure": false, @@ -3087,15 +3126,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3431:19:20", + "src": "3452:19:12", "subExpression": { "argumentTypes": null, - "id": 2276, + "id": 2007, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2256, - "src": "3431:17:20", + "referencedDeclaration": 1987, + "src": "3452:17:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3106,9 +3145,9 @@ "typeString": "uint256" } }, - "id": 2278, + "id": 2009, "nodeType": "ExpressionStatement", - "src": "3431:19:20" + "src": "3452:19:12" } }, { @@ -3118,19 +3157,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2282, + "id": 2013, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2280, + "id": 2011, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2256, - "src": "3468:17:20", + "referencedDeclaration": 1987, + "src": "3489:17:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3140,39 +3179,39 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 2281, + "id": 2012, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2064, - "src": "3489:9:20", + "referencedDeclaration": 1794, + "src": "3510:9:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3468:30:20", + "src": "3489:30:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2285, + "id": 2016, "nodeType": "IfStatement", - "src": "3464:63:20", + "src": "3485:63:12", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 2283, + "id": 2014, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3523:4:20", + "src": "3544:4:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3180,10 +3219,10 @@ }, "value": "true" }, - "functionReturnParameters": 2254, - "id": 2284, + "functionReturnParameters": 1985, + "id": 2015, "nodeType": "Return", - "src": "3516:11:20" + "src": "3537:11:12" } } ] @@ -3194,19 +3233,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2265, + "id": 1996, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2262, + "id": 1993, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2259, - "src": "3337:1:20", + "referencedDeclaration": 1990, + "src": "3358:1:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3218,18 +3257,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2263, + "id": 1994, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2067, - "src": "3341:7:20", + "referencedDeclaration": 1797, + "src": "3362:7:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2264, + "id": 1995, "isConstant": false, "isLValue": true, "isPure": false, @@ -3237,31 +3276,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3341:14:20", + "src": "3362:14:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3337:18:20", + "src": "3358:18:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2287, + "id": 2018, "initializationExpression": { "assignments": [ - 2259 + 1990 ], "declarations": [ { "constant": false, - "id": 2259, + "id": 1990, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2291, - "src": "3322:9:20", + "scope": 2022, + "src": "3343:9:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3269,10 +3308,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2258, + "id": 1989, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3322:7:20", + "src": "3343:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3282,18 +3321,18 @@ "visibility": "internal" } ], - "id": 2261, + "id": 1992, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2260, + "id": 1991, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3334:1:20", + "src": "3355:1:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3302,12 +3341,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3322:13:20" + "src": "3343:13:12" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2267, + "id": 1998, "isConstant": false, "isLValue": false, "isPure": false, @@ -3315,15 +3354,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3357:3:20", + "src": "3378:3:12", "subExpression": { "argumentTypes": null, - "id": 2266, + "id": 1997, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2259, - "src": "3357:1:20", + "referencedDeclaration": 1990, + "src": "3378:1:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3334,25 +3373,25 @@ "typeString": "uint256" } }, - "id": 2268, + "id": 1999, "nodeType": "ExpressionStatement", - "src": "3357:3:20" + "src": "3378:3:12" }, "nodeType": "ForStatement", - "src": "3317:221:20" + "src": "3338:221:12" }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2288, + "id": 2019, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3554:5:20", + "src": "3575:5:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3360,15 +3399,15 @@ }, "value": "false" }, - "functionReturnParameters": 2254, - "id": 2289, + "functionReturnParameters": 1985, + "id": 2020, "nodeType": "Return", - "src": "3547:12:20" + "src": "3568:12:12" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param dataHash Data hash.\n @return Confirmation status.", - "id": 2291, + "id": 2022, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3376,16 +3415,16 @@ "name": "isConfirmedByRequiredFriends", "nodeType": "FunctionDefinition", "parameters": { - "id": 2251, + "id": 1982, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2250, + "id": 1981, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2291, - "src": "3199:16:20", + "scope": 2022, + "src": "3220:16:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3393,10 +3432,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2249, + "id": 1980, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3199:7:20", + "src": "3220:7:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3406,20 +3445,20 @@ "visibility": "internal" } ], - "src": "3198:18:20" + "src": "3219:18:12" }, "payable": false, "returnParameters": { - "id": 2254, + "id": 1985, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2253, + "id": 1984, "name": "", "nodeType": "VariableDeclaration", - "scope": 2291, - "src": "3262:4:20", + "scope": 2022, + "src": "3283:4:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3427,10 +3466,10 @@ "typeString": "bool" }, "typeName": { - "id": 2252, + "id": 1983, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3262:4:20", + "src": "3283:4:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3440,19 +3479,19 @@ "visibility": "internal" } ], - "src": "3261:6:20" + "src": "3282:6:12" }, - "scope": 2304, - "src": "3161:405:20", + "scope": 2035, + "src": "3182:405:12", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2302, + "id": 2033, "nodeType": "Block", - "src": "3786:39:20", + "src": "3807:39:12", "statements": [ { "expression": { @@ -3460,12 +3499,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2299, + "id": 2030, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2293, - "src": "3813:4:20", + "referencedDeclaration": 2024, + "src": "3834:4:12", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3479,18 +3518,18 @@ "typeString": "bytes memory" } ], - "id": 2298, + "id": 2029, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2459, - "src": "3803:9:20", + "referencedDeclaration": 2390, + "src": "3824:9:12", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2300, + "id": 2031, "isConstant": false, "isLValue": false, "isPure": false, @@ -3498,21 +3537,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3803:15:20", + "src": "3824:15:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2297, - "id": 2301, + "functionReturnParameters": 2028, + "id": 2032, "nodeType": "Return", - "src": "3796:22:20" + "src": "3817:22:12" } ] }, "documentation": "@dev Returns hash of data encoding owner replacement.\n @param data Data payload.\n @return Data hash.", - "id": 2303, + "id": 2034, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3520,16 +3559,16 @@ "name": "getDataHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2294, + "id": 2025, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2293, + "id": 2024, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2303, - "src": "3716:10:20", + "scope": 2034, + "src": "3737:10:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3537,10 +3576,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2292, + "id": 2023, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3716:5:20", + "src": "3737:5:12", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3550,20 +3589,20 @@ "visibility": "internal" } ], - "src": "3715:12:20" + "src": "3736:12:12" }, "payable": false, "returnParameters": { - "id": 2297, + "id": 2028, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2296, + "id": 2027, "name": "", "nodeType": "VariableDeclaration", - "scope": 2303, - "src": "3773:7:20", + "scope": 2034, + "src": "3794:7:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3571,10 +3610,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2295, + "id": 2026, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3773:7:20", + "src": "3794:7:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3584,82 +3623,82 @@ "visibility": "internal" } ], - "src": "3772:9:20" + "src": "3793:9:12" }, - "scope": 2304, - "src": "3695:130:20", + "scope": 2035, + "src": "3716:130:12", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 2305, - "src": "306:3521:20" + "scope": 2036, + "src": "306:3542:12" } ], - "src": "0:3828:20" + "src": "0:3849:12" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", "exportedSymbols": { "SocialRecoveryModule": [ - 2304 + 2035 ] }, - "id": 2305, + "id": 2036, "nodeType": "SourceUnit", "nodes": [ { - "id": 2047, + "id": 1777, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:20" + "src": "0:23:12" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 2048, + "id": 1778, "nodeType": "ImportDirective", - "scope": 2305, - "sourceUnit": 31, - "src": "24:21:20", + "scope": 2036, + "sourceUnit": 7, + "src": "24:21:12", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2049, + "id": 1779, "nodeType": "ImportDirective", - "scope": 2305, - "sourceUnit": 878, - "src": "46:23:20", + "scope": 2036, + "sourceUnit": 622, + "src": "46:23:12", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 2050, + "id": 1780, "nodeType": "ImportDirective", - "scope": 2305, - "sourceUnit": 1143, - "src": "70:30:20", + "scope": 2036, + "sourceUnit": 972, + "src": "70:30:12", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2051, + "id": 1781, "nodeType": "ImportDirective", - "scope": 2305, - "sourceUnit": 1439, - "src": "101:29:20", + "scope": 2036, + "sourceUnit": 1344, + "src": "101:29:12", "symbolAliases": [], "unitAlias": "" }, @@ -3669,46 +3708,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2052, + "id": 1782, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "339:6:20", + "referencedDeclaration": 621, + "src": "339:6:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", + "typeIdentifier": "t_contract$_Module_$621", "typeString": "contract Module" } }, - "id": 2053, + "id": 1783, "nodeType": "InheritanceSpecifier", - "src": "339:6:20" + "src": "339:6:12" } ], "contractDependencies": [ - 779, - 877, - 1559 + 580, + 621, + 1359 ], "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": 2304, + "id": 2035, "linearizedBaseContracts": [ - 2304, - 877, - 779, - 1559 + 2035, + 621, + 580, + 1359 ], "name": "SocialRecoveryModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2056, + "id": 1786, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2304, - "src": "353:54:20", + "scope": 2035, + "src": "353:54:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3716,10 +3755,10 @@ "typeString": "string" }, "typeName": { - "id": 2054, + "id": 1784, "name": "string", "nodeType": "ElementaryTypeName", - "src": "353:6:20", + "src": "353:6:12", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3728,14 +3767,14 @@ "value": { "argumentTypes": null, "hexValue": "536f6369616c205265636f76657279204d6f64756c65", - "id": 2055, + "id": 1785, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "383:24:20", + "src": "383:24:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8f499aea563eae5544b16c9123d6c7c8537a7d9dd86296aa60c65de194207230", @@ -3747,11 +3786,11 @@ }, { "constant": true, - "id": 2059, + "id": 1789, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2304, - "src": "413:40:20", + "scope": 2035, + "src": "413:40:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3759,10 +3798,10 @@ "typeString": "string" }, "typeName": { - "id": 2057, + "id": 1787, "name": "string", "nodeType": "ElementaryTypeName", - "src": "413:6:20", + "src": "413:6:12", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3771,14 +3810,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2058, + "id": 1788, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "446:7:20", + "src": "446:7:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -3790,11 +3829,11 @@ }, { "constant": true, - "id": 2062, + "id": 1792, "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", "nodeType": "VariableDeclaration", - "scope": 2304, - "src": "459:72:20", + "scope": 2035, + "src": "459:72:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3802,10 +3841,10 @@ "typeString": "bytes4" }, "typeName": { - "id": 2060, + "id": 1790, "name": "bytes4", "nodeType": "ElementaryTypeName", - "src": "459:6:20", + "src": "459:6:12", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -3813,19 +3852,19 @@ }, "value": { "argumentTypes": null, - "hexValue": "54e99c6e", - "id": 2061, + "hexValue": "e318b52b", + "id": 1791, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "518:13:20", + "src": "518:13:12", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c9d777df93ed5e148240dbbfbc0215def5044b10739d563ea8310789d1317911", - "typeString": "literal_string (contains invalid UTF-8 sequence at position 4)" + "typeIdentifier": "t_stringliteral_df42753442dae44b262788763363a184bfb8d0df593d5073d67844ce4b3a2d8b", + "typeString": "literal_string (contains invalid UTF-8 sequence at position 2)" }, "value": null }, @@ -3833,11 +3872,11 @@ }, { "constant": false, - "id": 2064, + "id": 1794, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2304, - "src": "538:22:20", + "scope": 2035, + "src": "538:22:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3845,10 +3884,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2063, + "id": 1793, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "538:5:20", + "src": "538:5:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3859,11 +3898,11 @@ }, { "constant": false, - "id": 2067, + "id": 1797, "name": "friends", "nodeType": "VariableDeclaration", - "scope": 2304, - "src": "566:24:20", + "scope": 2035, + "src": "566:24:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3872,19 +3911,19 @@ }, "typeName": { "baseType": { - "id": 2065, + "id": 1795, "name": "address", "nodeType": "ElementaryTypeName", - "src": "566:7:20", + "src": "566:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2066, + "id": 1796, "length": null, "nodeType": "ArrayTypeName", - "src": "566:9:20", + "src": "566:9:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -3895,11 +3934,11 @@ }, { "constant": false, - "id": 2071, + "id": 1801, "name": "isFriend", "nodeType": "VariableDeclaration", - "scope": 2304, - "src": "661:41:20", + "scope": 2035, + "src": "661:41:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3907,28 +3946,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 2070, + "id": 1800, "keyType": { - "id": 2068, + "id": 1798, "name": "address", "nodeType": "ElementaryTypeName", - "src": "670:7:20", + "src": "670:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "661:25:20", + "src": "661:25:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2069, + "id": 1799, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "681:4:20", + "src": "681:4:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3940,11 +3979,11 @@ }, { "constant": false, - "id": 2075, + "id": 1805, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2304, - "src": "770:43:20", + "scope": 2035, + "src": "770:43:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3952,28 +3991,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 2074, + "id": 1804, "keyType": { - "id": 2072, + "id": 1802, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "779:7:20", + "src": "779:7:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "770:25:20", + "src": "770:25:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 2073, + "id": 1803, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "790:4:20", + "src": "790:4:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3985,11 +4024,11 @@ }, { "constant": false, - "id": 2081, + "id": 1811, "name": "isConfirmed", "nodeType": "VariableDeclaration", - "scope": 2304, - "src": "905:65:20", + "scope": 2035, + "src": "905:65:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3997,46 +4036,46 @@ "typeString": "mapping(bytes32 => mapping(address => bool))" }, "typeName": { - "id": 2080, + "id": 1810, "keyType": { - "id": 2076, + "id": 1806, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "914:7:20", + "src": "914:7:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "905:46:20", + "src": "905:46:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" }, "valueType": { - "id": 2079, + "id": 1809, "keyType": { - "id": 2077, + "id": 1807, "name": "address", "nodeType": "ElementaryTypeName", - "src": "934:7:20", + "src": "934:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "925:25:20", + "src": "925:25:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2078, + "id": 1808, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "945:4:20", + "src": "945:4:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4049,9 +4088,9 @@ }, { "body": { - "id": 2091, + "id": 1821, "nodeType": "Block", - "src": "999:57:20", + "src": "999:57:12", "statements": [ { "expression": { @@ -4061,34 +4100,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2084, + "id": 1814, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2071, - "src": "1017:8:20", + "referencedDeclaration": 1801, + "src": "1017:8:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2087, + "id": 1817, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2085, + "id": 1815, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "1026:3:20", + "referencedDeclaration": 2396, + "src": "1026:3:12", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2086, + "id": 1816, "isConstant": false, "isLValue": false, "isPure": false, @@ -4096,7 +4135,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1026:10:20", + "src": "1026:10:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4107,7 +4146,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1017:20:20", + "src": "1017:20:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4121,21 +4160,21 @@ "typeString": "bool" } ], - "id": 2083, + "id": 1813, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1009:7:20", + "referencedDeclaration": 2399, + "src": "1009:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2088, + "id": 1818, "isConstant": false, "isLValue": false, "isPure": false, @@ -4143,41 +4182,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1009:29:20", + "src": "1009:29:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2089, + "id": 1819, "nodeType": "ExpressionStatement", - "src": "1009:29:20" + "src": "1009:29:12" }, { - "id": 2090, + "id": 1820, "nodeType": "PlaceholderStatement", - "src": "1048:1:20" + "src": "1048:1:12" } ] }, "documentation": null, - "id": 2092, + "id": 1822, "name": "onlyFriend", "nodeType": "ModifierDefinition", "parameters": { - "id": 2082, + "id": 1812, "nodeType": "ParameterList", "parameters": [], - "src": "996:2:20" + "src": "996:2:12" }, - "src": "977:79:20", + "src": "977:79:12", "visibility": "internal" }, { "body": { - "id": 2162, + "id": 1892, "nodeType": "Block", - "src": "1325:422:20", + "src": "1325:422:12", "statements": [ { "expression": { @@ -4189,19 +4228,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2104, + "id": 1834, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2101, + "id": 1831, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2097, - "src": "1343:10:20", + "referencedDeclaration": 1827, + "src": "1343:10:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4213,18 +4252,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2102, + "id": 1832, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1357:8:20", + "referencedDeclaration": 1825, + "src": "1357:8:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2103, + "id": 1833, "isConstant": false, "isLValue": false, "isPure": false, @@ -4232,13 +4271,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1357:15:20", + "src": "1357:15:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1343:29:20", + "src": "1343:29:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4252,21 +4291,21 @@ "typeString": "bool" } ], - "id": 2100, + "id": 1830, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1335:7:20", + "referencedDeclaration": 2399, + "src": "1335:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2105, + "id": 1835, "isConstant": false, "isLValue": false, "isPure": false, @@ -4274,15 +4313,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1335:38:20", + "src": "1335:38:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2106, + "id": 1836, "nodeType": "ExpressionStatement", - "src": "1335:38:20" + "src": "1335:38:12" }, { "expression": { @@ -4294,19 +4333,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 2110, + "id": 1840, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2108, + "id": 1838, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2097, - "src": "1391:10:20", + "referencedDeclaration": 1827, + "src": "1391:10:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4317,14 +4356,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 2109, + "id": 1839, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1405:1:20", + "src": "1405:1:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -4332,7 +4371,7 @@ }, "value": "2" }, - "src": "1391:15:20", + "src": "1391:15:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4346,21 +4385,21 @@ "typeString": "bool" } ], - "id": 2107, + "id": 1837, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1383:7:20", + "referencedDeclaration": 2399, + "src": "1383:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2111, + "id": 1841, "isConstant": false, "isLValue": false, "isPure": false, @@ -4368,15 +4407,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1383:24:20", + "src": "1383:24:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2112, + "id": 1842, "nodeType": "ExpressionStatement", - "src": "1383:24:20" + "src": "1383:24:12" }, { "expression": { @@ -4384,18 +4423,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2113, + "id": 1843, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 876, - "src": "1417:10:20", + "referencedDeclaration": 620, + "src": "1417:10:12", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2114, + "id": 1844, "isConstant": false, "isLValue": false, "isPure": false, @@ -4403,34 +4442,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1417:12:20", + "src": "1417:12:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2115, + "id": 1845, "nodeType": "ExpressionStatement", - "src": "1417:12:20" + "src": "1417:12:12" }, { "body": { - "id": 2152, + "id": 1882, "nodeType": "Block", - "src": "1517:164:20", + "src": "1517:164:12", "statements": [ { "assignments": [ - 2128 + 1858 ], "declarations": [ { "constant": false, - "id": 2128, + "id": 1858, "name": "friend", "nodeType": "VariableDeclaration", - "scope": 2163, - "src": "1531:14:20", + "scope": 1893, + "src": "1531:14:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4438,10 +4477,10 @@ "typeString": "address" }, "typeName": { - "id": 2127, + "id": 1857, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1531:7:20", + "src": "1531:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4451,31 +4490,31 @@ "visibility": "internal" } ], - "id": 2132, + "id": 1862, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2129, + "id": 1859, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1548:8:20", + "referencedDeclaration": 1825, + "src": "1548:8:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2131, + "id": 1861, "indexExpression": { "argumentTypes": null, - "id": 2130, + "id": 1860, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2117, - "src": "1557:1:20", + "referencedDeclaration": 1847, + "src": "1557:1:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4486,14 +4525,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1548:11:20", + "src": "1548:11:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1531:28:20" + "src": "1531:28:12" }, { "expression": { @@ -4505,19 +4544,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2136, + "id": 1866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2134, + "id": 1864, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2128, - "src": "1581:6:20", + "referencedDeclaration": 1858, + "src": "1581:6:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4528,14 +4567,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2135, + "id": 1865, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1591:1:20", + "src": "1591:1:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4543,7 +4582,7 @@ }, "value": "0" }, - "src": "1581:11:20", + "src": "1581:11:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4557,21 +4596,21 @@ "typeString": "bool" } ], - "id": 2133, + "id": 1863, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1573:7:20", + "referencedDeclaration": 2399, + "src": "1573:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2137, + "id": 1867, "isConstant": false, "isLValue": false, "isPure": false, @@ -4579,15 +4618,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1573:20:20", + "src": "1573:20:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2138, + "id": 1868, "nodeType": "ExpressionStatement", - "src": "1573:20:20" + "src": "1573:20:12" }, { "expression": { @@ -4595,7 +4634,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2143, + "id": 1873, "isConstant": false, "isLValue": false, "isPure": false, @@ -4603,31 +4642,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1615:17:20", + "src": "1615:17:12", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2140, + "id": 1870, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2071, - "src": "1616:8:20", + "referencedDeclaration": 1801, + "src": "1616:8:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2142, + "id": 1872, "indexExpression": { "argumentTypes": null, - "id": 2141, + "id": 1871, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2128, - "src": "1625:6:20", + "referencedDeclaration": 1858, + "src": "1625:6:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4638,7 +4677,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1616:16:20", + "src": "1616:16:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4657,21 +4696,21 @@ "typeString": "bool" } ], - "id": 2139, + "id": 1869, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1607:7:20", + "referencedDeclaration": 2399, + "src": "1607:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2144, + "id": 1874, "isConstant": false, "isLValue": false, "isPure": false, @@ -4679,20 +4718,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1607:26:20", + "src": "1607:26:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2145, + "id": 1875, "nodeType": "ExpressionStatement", - "src": "1607:26:20" + "src": "1607:26:12" }, { "expression": { "argumentTypes": null, - "id": 2150, + "id": 1880, "isConstant": false, "isLValue": false, "isPure": false, @@ -4701,26 +4740,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2146, + "id": 1876, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2071, - "src": "1647:8:20", + "referencedDeclaration": 1801, + "src": "1647:8:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2148, + "id": 1878, "indexExpression": { "argumentTypes": null, - "id": 2147, + "id": 1877, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2128, - "src": "1656:6:20", + "referencedDeclaration": 1858, + "src": "1656:6:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4731,7 +4770,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1647:16:20", + "src": "1647:16:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4742,14 +4781,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2149, + "id": 1879, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1666:4:20", + "src": "1666:4:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4757,15 +4796,15 @@ }, "value": "true" }, - "src": "1647:23:20", + "src": "1647:23:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2151, + "id": 1881, "nodeType": "ExpressionStatement", - "src": "1647:23:20" + "src": "1647:23:12" } ] }, @@ -4775,19 +4814,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2123, + "id": 1853, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2120, + "id": 1850, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2117, - "src": "1491:1:20", + "referencedDeclaration": 1847, + "src": "1491:1:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4799,18 +4838,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2121, + "id": 1851, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1495:8:20", + "referencedDeclaration": 1825, + "src": "1495:8:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2122, + "id": 1852, "isConstant": false, "isLValue": false, "isPure": false, @@ -4818,31 +4857,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1495:15:20", + "src": "1495:15:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1491:19:20", + "src": "1491:19:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2153, + "id": 1883, "initializationExpression": { "assignments": [ - 2117 + 1847 ], "declarations": [ { "constant": false, - "id": 2117, + "id": 1847, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2163, - "src": "1476:9:20", + "scope": 1893, + "src": "1476:9:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4850,10 +4889,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2116, + "id": 1846, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1476:7:20", + "src": "1476:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4863,18 +4902,18 @@ "visibility": "internal" } ], - "id": 2119, + "id": 1849, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2118, + "id": 1848, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1488:1:20", + "src": "1488:1:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4883,12 +4922,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1476:13:20" + "src": "1476:13:12" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2125, + "id": 1855, "isConstant": false, "isLValue": false, "isPure": false, @@ -4896,15 +4935,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1512:3:20", + "src": "1512:3:12", "subExpression": { "argumentTypes": null, - "id": 2124, + "id": 1854, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2117, - "src": "1512:1:20", + "referencedDeclaration": 1847, + "src": "1512:1:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4915,29 +4954,29 @@ "typeString": "uint256" } }, - "id": 2126, + "id": 1856, "nodeType": "ExpressionStatement", - "src": "1512:3:20" + "src": "1512:3:12" }, "nodeType": "ForStatement", - "src": "1471:210:20" + "src": "1471:210:12" }, { "expression": { "argumentTypes": null, - "id": 2156, + "id": 1886, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2154, + "id": 1884, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2067, - "src": "1690:7:20", + "referencedDeclaration": 1797, + "src": "1690:7:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -4947,43 +4986,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2155, + "id": 1885, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1700:8:20", + "referencedDeclaration": 1825, + "src": "1700:8:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "src": "1690:18:20", + "src": "1690:18:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2157, + "id": 1887, "nodeType": "ExpressionStatement", - "src": "1690:18:20" + "src": "1690:18:12" }, { "expression": { "argumentTypes": null, - "id": 2160, + "id": 1890, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2158, + "id": 1888, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2064, - "src": "1718:9:20", + "referencedDeclaration": 1794, + "src": "1718:9:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4993,31 +5032,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2159, + "id": 1889, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2097, - "src": "1730:10:20", + "referencedDeclaration": 1827, + "src": "1730:10:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1718:22:20", + "src": "1718:22:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 2161, + "id": 1891, "nodeType": "ExpressionStatement", - "src": "1718:22:20" + "src": "1718:22:12" } ] }, "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": 2163, + "id": 1893, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5025,16 +5064,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2098, + "id": 1828, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2095, + "id": 1825, "name": "_friends", "nodeType": "VariableDeclaration", - "scope": 2163, - "src": "1268:18:20", + "scope": 1893, + "src": "1268:18:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5043,19 +5082,19 @@ }, "typeName": { "baseType": { - "id": 2093, + "id": 1823, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1268:7:20", + "src": "1268:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2094, + "id": 1824, "length": null, "nodeType": "ArrayTypeName", - "src": "1268:9:20", + "src": "1268:9:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -5066,11 +5105,11 @@ }, { "constant": false, - "id": 2097, + "id": 1827, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 2163, - "src": "1288:16:20", + "scope": 1893, + "src": "1288:16:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5078,10 +5117,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2096, + "id": 1826, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1288:5:20", + "src": "1288:5:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5091,26 +5130,26 @@ "visibility": "internal" } ], - "src": "1267:38:20" + "src": "1267:38:12" }, "payable": false, "returnParameters": { - "id": 2099, + "id": 1829, "nodeType": "ParameterList", "parameters": [], - "src": "1325:0:20" + "src": "1325:0:12" }, - "scope": 2304, - "src": "1253:494:20", + "scope": 2035, + "src": "1253:494:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2186, + "id": 1916, "nodeType": "Block", - "src": "1944:97:20", + "src": "1944:97:12", "statements": [ { "expression": { @@ -5118,7 +5157,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2174, + "id": 1904, "isConstant": false, "isLValue": false, "isPure": false, @@ -5126,31 +5165,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1962:21:20", + "src": "1962:21:12", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2171, + "id": 1901, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2075, - "src": "1963:10:20", + "referencedDeclaration": 1805, + "src": "1963:10:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2173, + "id": 1903, "indexExpression": { "argumentTypes": null, - "id": 2172, + "id": 1902, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2165, - "src": "1974:8:20", + "referencedDeclaration": 1895, + "src": "1974:8:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5161,7 +5200,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1963:20:20", + "src": "1963:20:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5180,21 +5219,21 @@ "typeString": "bool" } ], - "id": 2170, + "id": 1900, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1954:7:20", + "referencedDeclaration": 2399, + "src": "1954:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2175, + "id": 1905, "isConstant": false, "isLValue": false, "isPure": false, @@ -5202,20 +5241,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1954:30:20", + "src": "1954:30:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2176, + "id": 1906, "nodeType": "ExpressionStatement", - "src": "1954:30:20" + "src": "1954:30:12" }, { "expression": { "argumentTypes": null, - "id": 2184, + "id": 1914, "isConstant": false, "isLValue": false, "isPure": false, @@ -5226,26 +5265,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2177, + "id": 1907, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "1994:11:20", + "referencedDeclaration": 1811, + "src": "1994:11:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2181, + "id": 1911, "indexExpression": { "argumentTypes": null, - "id": 2178, + "id": 1908, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2165, - "src": "2006:8:20", + "referencedDeclaration": 1895, + "src": "2006:8:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5256,29 +5295,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1994:21:20", + "src": "1994:21:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2182, + "id": 1912, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2179, + "id": 1909, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "2016:3:20", + "referencedDeclaration": 2396, + "src": "2016:3:12", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2180, + "id": 1910, "isConstant": false, "isLValue": false, "isPure": false, @@ -5286,7 +5325,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2016:10:20", + "src": "2016:10:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5297,7 +5336,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1994:33:20", + "src": "1994:33:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5308,14 +5347,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2183, + "id": 1913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2030:4:20", + "src": "2030:4:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5323,57 +5362,57 @@ }, "value": "true" }, - "src": "1994:40:20", + "src": "1994:40:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2185, + "id": 1915, "nodeType": "ExpressionStatement", - "src": "1994:40:20" + "src": "1994:40:12" } ] }, "documentation": "@dev Allows a friend to confirm a Safe transaction.\n @param dataHash Safe transaction hash.", - "id": 2187, + "id": 1917, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2168, + "id": 1898, "modifierName": { "argumentTypes": null, - "id": 2167, + "id": 1897, "name": "onlyFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1929:10:20", + "referencedDeclaration": 1822, + "src": "1929:10:12", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1929:10:20" + "src": "1929:10:12" } ], "name": "confirmTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 2166, + "id": 1896, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2165, + "id": 1895, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2187, - "src": "1888:16:20", + "scope": 1917, + "src": "1888:16:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5381,10 +5420,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2164, + "id": 1894, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1888:7:20", + "src": "1888:7:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5394,26 +5433,26 @@ "visibility": "internal" } ], - "src": "1887:18:20" + "src": "1887:18:12" }, "payable": false, "returnParameters": { - "id": 2169, + "id": 1899, "nodeType": "ParameterList", "parameters": [], - "src": "1944:0:20" + "src": "1944:0:12" }, - "scope": 2304, - "src": "1860:181:20", + "scope": 2035, + "src": "1860:181:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2247, + "id": 1978, "nodeType": "Block", - "src": "2299:701:20", + "src": "2299:722:12", "statements": [ { "expression": { @@ -5423,34 +5462,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2193, + "id": 1923, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2071, - "src": "2381:8:20", + "referencedDeclaration": 1801, + "src": "2381:8:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2196, + "id": 1926, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2194, + "id": 1924, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "2390:3:20", + "referencedDeclaration": 2396, + "src": "2390:3:12", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2195, + "id": 1925, "isConstant": false, "isLValue": false, "isPure": false, @@ -5458,7 +5497,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2390:10:20", + "src": "2390:10:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5469,7 +5508,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2381:20:20", + "src": "2381:20:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5483,21 +5522,21 @@ "typeString": "bool" } ], - "id": 2192, + "id": 1922, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2373:7:20", + "referencedDeclaration": 2399, + "src": "2373:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2197, + "id": 1927, "isConstant": false, "isLValue": false, "isPure": false, @@ -5505,26 +5544,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2373:29:20", + "src": "2373:29:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2198, + "id": 1928, "nodeType": "ExpressionStatement", - "src": "2373:29:20" + "src": "2373:29:12" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 2200, + "id": 1930, "name": "functionIdentifier", "nodeType": "VariableDeclaration", - "scope": 2248, - "src": "2485:25:20", + "scope": 1979, + "src": "2485:25:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5532,10 +5571,10 @@ "typeString": "bytes4" }, "typeName": { - "id": 2199, + "id": 1929, "name": "bytes4", "nodeType": "ElementaryTypeName", - "src": "2485:6:20", + "src": "2485:6:12", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -5545,36 +5584,36 @@ "visibility": "internal" } ], - "id": 2201, + "id": 1931, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2485:25:20" + "src": "2485:25:12" }, { "externalReferences": [ { "functionIdentifier": { - "declaration": 2200, + "declaration": 1930, "isOffset": false, "isSlot": false, - "src": "2607:18:20", + "src": "2607:18:12", "valueSize": 1 } }, { "data": { - "declaration": 2189, + "declaration": 1919, "isOffset": false, "isSlot": false, - "src": "2639:4:20", + "src": "2639:4:12", "valueSize": 1 } } ], - "id": 2202, + "id": 1932, "nodeType": "InlineAssembly", "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n}", - "src": "2584:93:20" + "src": "2584:93:12" }, { "expression": { @@ -5586,19 +5625,19 @@ "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, - "id": 2206, + "id": 1936, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2204, + "id": 1934, "name": "functionIdentifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2200, - "src": "2678:18:20", + "referencedDeclaration": 1930, + "src": "2678:18:12", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -5608,18 +5647,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 2205, + "id": 1935, "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2062, - "src": "2700:33:20", + "referencedDeclaration": 1792, + "src": "2700:33:12", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, - "src": "2678:55:20", + "src": "2678:55:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5633,21 +5672,21 @@ "typeString": "bool" } ], - "id": 2203, + "id": 1933, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2670:7:20", + "referencedDeclaration": 2399, + "src": "2670:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2207, + "id": 1937, "isConstant": false, "isLValue": false, "isPure": false, @@ -5655,28 +5694,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2670:64:20", + "src": "2670:64:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2208, + "id": 1938, "nodeType": "ExpressionStatement", - "src": "2670:64:20" + "src": "2670:64:12" }, { "assignments": [ - 2210 + 1940 ], "declarations": [ { "constant": false, - "id": 2210, + "id": 1940, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2248, - "src": "2744:16:20", + "scope": 1979, + "src": "2744:16:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5684,10 +5723,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2209, + "id": 1939, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2744:7:20", + "src": "2744:7:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5697,18 +5736,18 @@ "visibility": "internal" } ], - "id": 2214, + "id": 1944, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2212, + "id": 1942, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2189, - "src": "2775:4:20", + "referencedDeclaration": 1919, + "src": "2775:4:12", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5722,18 +5761,18 @@ "typeString": "bytes memory" } ], - "id": 2211, + "id": 1941, "name": "getDataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2303, - "src": "2763:11:20", + "referencedDeclaration": 2034, + "src": "2763:11:12", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) view returns (bytes32)" } }, - "id": 2213, + "id": 1943, "isConstant": false, "isLValue": false, "isPure": false, @@ -5741,14 +5780,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2763:17:20", + "src": "2763:17:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2744:36:20" + "src": "2744:36:12" }, { "expression": { @@ -5756,7 +5795,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2219, + "id": 1949, "isConstant": false, "isLValue": false, "isPure": false, @@ -5764,31 +5803,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2798:21:20", + "src": "2798:21:12", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2216, + "id": 1946, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2075, - "src": "2799:10:20", + "referencedDeclaration": 1805, + "src": "2799:10:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2218, + "id": 1948, "indexExpression": { "argumentTypes": null, - "id": 2217, + "id": 1947, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2210, - "src": "2810:8:20", + "referencedDeclaration": 1940, + "src": "2810:8:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5799,7 +5838,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2799:20:20", + "src": "2799:20:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5818,21 +5857,21 @@ "typeString": "bool" } ], - "id": 2215, + "id": 1945, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2790:7:20", + "referencedDeclaration": 2399, + "src": "2790:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2220, + "id": 1950, "isConstant": false, "isLValue": false, "isPure": false, @@ -5840,15 +5879,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2790:30:20", + "src": "2790:30:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2221, + "id": 1951, "nodeType": "ExpressionStatement", - "src": "2790:30:20" + "src": "2790:30:12" }, { "expression": { @@ -5859,12 +5898,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2224, + "id": 1954, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2210, - "src": "2867:8:20", + "referencedDeclaration": 1940, + "src": "2867:8:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5878,18 +5917,18 @@ "typeString": "bytes32" } ], - "id": 2223, + "id": 1953, "name": "isConfirmedByRequiredFriends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2291, - "src": "2838:28:20", + "referencedDeclaration": 2022, + "src": "2838:28:12", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, - "id": 2225, + "id": 1955, "isConstant": false, "isLValue": false, "isPure": false, @@ -5897,7 +5936,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2838:38:20", + "src": "2838:38:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5911,21 +5950,21 @@ "typeString": "bool" } ], - "id": 2222, + "id": 1952, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2830:7:20", + "referencedDeclaration": 2399, + "src": "2830:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2226, + "id": 1956, "isConstant": false, "isLValue": false, "isPure": false, @@ -5933,20 +5972,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2830:47:20", + "src": "2830:47:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2227, + "id": 1957, "nodeType": "ExpressionStatement", - "src": "2830:47:20" + "src": "2830:47:12" }, { "expression": { "argumentTypes": null, - "id": 2232, + "id": 1962, "isConstant": false, "isLValue": false, "isPure": false, @@ -5955,26 +5994,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2228, + "id": 1958, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2075, - "src": "2887:10:20", + "referencedDeclaration": 1805, + "src": "2887:10:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2230, + "id": 1960, "indexExpression": { "argumentTypes": null, - "id": 2229, + "id": 1959, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2210, - "src": "2898:8:20", + "referencedDeclaration": 1940, + "src": "2898:8:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5985,7 +6024,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2887:20:20", + "src": "2887:20:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5996,14 +6035,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2231, + "id": 1961, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2910:4:20", + "src": "2910:4:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6011,15 +6050,15 @@ }, "value": "true" }, - "src": "2887:27:20", + "src": "2887:27:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2233, + "id": 1963, "nodeType": "ExpressionStatement", - "src": "2887:27:20" + "src": "2887:27:12" }, { "expression": { @@ -6030,176 +6069,215 @@ "arguments": [ { "argumentTypes": null, - "id": 2238, - "name": "manager", + "arguments": [ + { + "argumentTypes": null, + "id": 1968, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "2974:7:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" + } + ], + "id": 1967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2966:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2966:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 1970, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2984:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "id": 1971, + "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "2954:7:20", + "referencedDeclaration": 1919, + "src": "2987:4:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", - "typeString": "contract ModuleManager" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1972, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6, + "src": "2993:4:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeString": "type(contract Enum)" + } + }, + "id": 1973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 5, + "src": "2993:14:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 1974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2993:19:12", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1142", - "typeString": "contract ModuleManager" + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" } ], - "id": 2237, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2946:7:20", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 2239, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2946:16:20", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "hexValue": "30", - "id": 2240, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2964:1:20", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "argumentTypes": null, - "id": 2241, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2189, - "src": "2967:4:20", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2242, - "name": "Enum", + "id": 1965, + "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 30, - "src": "2973:4:20", + "referencedDeclaration": 588, + "src": "2932:7:12", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", - "typeString": "type(contract Enum)" + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" } }, - "id": 2243, + "id": 1966, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "Operation", + "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "2973:14:20", + "referencedDeclaration": 798, + "src": "2932:33:12", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", - "typeString": "type(enum Enum.Operation)" + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2244, + "id": 1975, "isConstant": false, "isLValue": false, - "isPure": true, + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2973:19:20", + "names": [], + "nodeType": "FunctionCall", + "src": "2932:81:12", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" + "typeIdentifier": "t_bool", + "typeString": "bool" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" + "typeIdentifier": "t_bool", + "typeString": "bool" } ], - "expression": { - "argumentTypes": null, - "id": 2234, - "name": "manager", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "2924:7:20", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", - "typeString": "contract ModuleManager" - } - }, - "id": 2236, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "executeModule", - "nodeType": "MemberAccess", - "referencedDeclaration": 1033, - "src": "2924:21:20", + "id": 1964, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "2924:7:12", "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)" + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" } }, - "id": 2245, + "id": 1976, "isConstant": false, "isLValue": false, "isPure": false, @@ -6207,20 +6285,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2924:69:20", + "src": "2924:90:12", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 2246, + "id": 1977, "nodeType": "ExpressionStatement", - "src": "2924:69:20" + "src": "2924:90:12" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param data Encoded owner replacement transaction.\n @return Returns if transaction can be executed.", - "id": 2248, + "id": 1979, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6228,16 +6306,16 @@ "name": "recoverAccess", "nodeType": "FunctionDefinition", "parameters": { - "id": 2190, + "id": 1920, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2189, + "id": 1919, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2248, - "src": "2268:10:20", + "scope": 1979, + "src": "2268:10:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6245,10 +6323,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2188, + "id": 1918, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2268:5:20", + "src": "2268:5:12", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6258,37 +6336,37 @@ "visibility": "internal" } ], - "src": "2267:12:20" + "src": "2267:12:12" }, "payable": false, "returnParameters": { - "id": 2191, + "id": 1921, "nodeType": "ParameterList", "parameters": [], - "src": "2299:0:20" + "src": "2299:0:12" }, - "scope": 2304, - "src": "2245:755:20", + "scope": 2035, + "src": "2245:776:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2290, + "id": 2021, "nodeType": "Block", - "src": "3272:294:20", + "src": "3293:294:12", "statements": [ { "assignments": [], "declarations": [ { "constant": false, - "id": 2256, + "id": 1987, "name": "confirmationCount", "nodeType": "VariableDeclaration", - "scope": 2291, - "src": "3282:25:20", + "scope": 2022, + "src": "3303:25:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6296,10 +6374,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2255, + "id": 1986, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3282:7:20", + "src": "3303:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6309,16 +6387,16 @@ "visibility": "internal" } ], - "id": 2257, + "id": 1988, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "3282:25:20" + "src": "3303:25:12" }, { "body": { - "id": 2286, + "id": 2017, "nodeType": "Block", - "src": "3362:176:20", + "src": "3383:176:12", "statements": [ { "condition": { @@ -6327,26 +6405,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2269, + "id": 2000, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "3380:11:20", + "referencedDeclaration": 1811, + "src": "3401:11:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2271, + "id": 2002, "indexExpression": { "argumentTypes": null, - "id": 2270, + "id": 2001, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2250, - "src": "3392:8:20", + "referencedDeclaration": 1981, + "src": "3413:8:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6357,37 +6435,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3380:21:20", + "src": "3401:21:12", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2275, + "id": 2006, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2272, + "id": 2003, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2067, - "src": "3402:7:20", + "referencedDeclaration": 1797, + "src": "3423:7:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2274, + "id": 2005, "indexExpression": { "argumentTypes": null, - "id": 2273, + "id": 2004, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2259, - "src": "3410:1:20", + "referencedDeclaration": 1990, + "src": "3431:1:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6398,7 +6476,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3402:10:20", + "src": "3423:10:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6409,20 +6487,20 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3380:33:20", + "src": "3401:33:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2279, + "id": 2010, "nodeType": "IfStatement", - "src": "3376:74:20", + "src": "3397:74:12", "trueBody": { "expression": { "argumentTypes": null, - "id": 2277, + "id": 2008, "isConstant": false, "isLValue": false, "isPure": false, @@ -6430,15 +6508,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3431:19:20", + "src": "3452:19:12", "subExpression": { "argumentTypes": null, - "id": 2276, + "id": 2007, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2256, - "src": "3431:17:20", + "referencedDeclaration": 1987, + "src": "3452:17:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6449,9 +6527,9 @@ "typeString": "uint256" } }, - "id": 2278, + "id": 2009, "nodeType": "ExpressionStatement", - "src": "3431:19:20" + "src": "3452:19:12" } }, { @@ -6461,19 +6539,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2282, + "id": 2013, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2280, + "id": 2011, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2256, - "src": "3468:17:20", + "referencedDeclaration": 1987, + "src": "3489:17:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6483,39 +6561,39 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 2281, + "id": 2012, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2064, - "src": "3489:9:20", + "referencedDeclaration": 1794, + "src": "3510:9:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3468:30:20", + "src": "3489:30:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2285, + "id": 2016, "nodeType": "IfStatement", - "src": "3464:63:20", + "src": "3485:63:12", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 2283, + "id": 2014, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3523:4:20", + "src": "3544:4:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6523,10 +6601,10 @@ }, "value": "true" }, - "functionReturnParameters": 2254, - "id": 2284, + "functionReturnParameters": 1985, + "id": 2015, "nodeType": "Return", - "src": "3516:11:20" + "src": "3537:11:12" } } ] @@ -6537,19 +6615,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2265, + "id": 1996, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2262, + "id": 1993, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2259, - "src": "3337:1:20", + "referencedDeclaration": 1990, + "src": "3358:1:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6561,18 +6639,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2263, + "id": 1994, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2067, - "src": "3341:7:20", + "referencedDeclaration": 1797, + "src": "3362:7:12", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2264, + "id": 1995, "isConstant": false, "isLValue": true, "isPure": false, @@ -6580,31 +6658,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3341:14:20", + "src": "3362:14:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3337:18:20", + "src": "3358:18:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2287, + "id": 2018, "initializationExpression": { "assignments": [ - 2259 + 1990 ], "declarations": [ { "constant": false, - "id": 2259, + "id": 1990, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2291, - "src": "3322:9:20", + "scope": 2022, + "src": "3343:9:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6612,10 +6690,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2258, + "id": 1989, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3322:7:20", + "src": "3343:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6625,18 +6703,18 @@ "visibility": "internal" } ], - "id": 2261, + "id": 1992, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2260, + "id": 1991, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3334:1:20", + "src": "3355:1:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6645,12 +6723,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3322:13:20" + "src": "3343:13:12" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2267, + "id": 1998, "isConstant": false, "isLValue": false, "isPure": false, @@ -6658,15 +6736,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3357:3:20", + "src": "3378:3:12", "subExpression": { "argumentTypes": null, - "id": 2266, + "id": 1997, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2259, - "src": "3357:1:20", + "referencedDeclaration": 1990, + "src": "3378:1:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6677,25 +6755,25 @@ "typeString": "uint256" } }, - "id": 2268, + "id": 1999, "nodeType": "ExpressionStatement", - "src": "3357:3:20" + "src": "3378:3:12" }, "nodeType": "ForStatement", - "src": "3317:221:20" + "src": "3338:221:12" }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2288, + "id": 2019, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3554:5:20", + "src": "3575:5:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6703,15 +6781,15 @@ }, "value": "false" }, - "functionReturnParameters": 2254, - "id": 2289, + "functionReturnParameters": 1985, + "id": 2020, "nodeType": "Return", - "src": "3547:12:20" + "src": "3568:12:12" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param dataHash Data hash.\n @return Confirmation status.", - "id": 2291, + "id": 2022, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6719,16 +6797,16 @@ "name": "isConfirmedByRequiredFriends", "nodeType": "FunctionDefinition", "parameters": { - "id": 2251, + "id": 1982, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2250, + "id": 1981, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2291, - "src": "3199:16:20", + "scope": 2022, + "src": "3220:16:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6736,10 +6814,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2249, + "id": 1980, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3199:7:20", + "src": "3220:7:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6749,20 +6827,20 @@ "visibility": "internal" } ], - "src": "3198:18:20" + "src": "3219:18:12" }, "payable": false, "returnParameters": { - "id": 2254, + "id": 1985, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2253, + "id": 1984, "name": "", "nodeType": "VariableDeclaration", - "scope": 2291, - "src": "3262:4:20", + "scope": 2022, + "src": "3283:4:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6770,10 +6848,10 @@ "typeString": "bool" }, "typeName": { - "id": 2252, + "id": 1983, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3262:4:20", + "src": "3283:4:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6783,19 +6861,19 @@ "visibility": "internal" } ], - "src": "3261:6:20" + "src": "3282:6:12" }, - "scope": 2304, - "src": "3161:405:20", + "scope": 2035, + "src": "3182:405:12", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2302, + "id": 2033, "nodeType": "Block", - "src": "3786:39:20", + "src": "3807:39:12", "statements": [ { "expression": { @@ -6803,12 +6881,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2299, + "id": 2030, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2293, - "src": "3813:4:20", + "referencedDeclaration": 2024, + "src": "3834:4:12", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6822,18 +6900,18 @@ "typeString": "bytes memory" } ], - "id": 2298, + "id": 2029, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2459, - "src": "3803:9:20", + "referencedDeclaration": 2390, + "src": "3824:9:12", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2300, + "id": 2031, "isConstant": false, "isLValue": false, "isPure": false, @@ -6841,21 +6919,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3803:15:20", + "src": "3824:15:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2297, - "id": 2301, + "functionReturnParameters": 2028, + "id": 2032, "nodeType": "Return", - "src": "3796:22:20" + "src": "3817:22:12" } ] }, "documentation": "@dev Returns hash of data encoding owner replacement.\n @param data Data payload.\n @return Data hash.", - "id": 2303, + "id": 2034, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6863,16 +6941,16 @@ "name": "getDataHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2294, + "id": 2025, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2293, + "id": 2024, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2303, - "src": "3716:10:20", + "scope": 2034, + "src": "3737:10:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6880,10 +6958,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2292, + "id": 2023, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3716:5:20", + "src": "3737:5:12", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6893,20 +6971,20 @@ "visibility": "internal" } ], - "src": "3715:12:20" + "src": "3736:12:12" }, "payable": false, "returnParameters": { - "id": 2297, + "id": 2028, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2296, + "id": 2027, "name": "", "nodeType": "VariableDeclaration", - "scope": 2303, - "src": "3773:7:20", + "scope": 2034, + "src": "3794:7:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6914,10 +6992,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2295, + "id": 2026, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3773:7:20", + "src": "3794:7:12", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6927,20 +7005,20 @@ "visibility": "internal" } ], - "src": "3772:9:20" + "src": "3793:9:12" }, - "scope": 2304, - "src": "3695:130:20", + "scope": 2035, + "src": "3716:130:12", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 2305, - "src": "306:3521:20" + "scope": 2036, + "src": "306:3542:12" } ], - "src": "0:3828:20" + "src": "0:3849:12" }, "compiler": { "name": "solc", @@ -6950,8 +7028,8 @@ "4": { "events": {}, "links": {}, - "address": "0x364cfc50a8c4eab27bebbb54aac0f51fb74015d3", - "transactionHash": "0xd31966624227345ccb60fc9f51e315d610071b6418712c5f528a7a64f7c0d103" + "address": "0x1d851ebb3a205deb27104b7bef2a5633fba06154", + "transactionHash": "0xf2590f3fc263b11656e7dbcce8d8f02605b6856cade967e1720cc0c5dd2608d5" }, "1525950336085": { "events": {}, @@ -6964,8 +7042,14 @@ "links": {}, "address": "0x12fb2fe4f6d4c08b14c694e163b9bee65697e708", "transactionHash": "0xa514f0c5c6fcab99a16bba503b6ed893935cedfafe2e5c8c825dfc117e1e266d" + }, + "1526478212260": { + "events": {}, + "links": {}, + "address": "0x1a92687d3982d12a985c4c35447673ff1fd312d1", + "transactionHash": "0x44896356866fb32a30fe5b74e2e5b2ce3383ffef7f3190f5f10a98b5fa4406de" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-14T07:39:37.975Z" + "updatedAt": "2018-05-16T13:45:24.527Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/StateChannelModule.json b/safe-contracts/build/contracts/StateChannelModule.json new file mode 100644 index 00000000..da3df354 --- /dev/null +++ b/safe-contracts/build/contracts/StateChannelModule.json @@ -0,0 +1,5596 @@ +{ + "contractName": "StateChannelModule", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "manager", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + } + ], + "name": "changeMasterCopy", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "NAME", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "name": "isExecuted", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "setup", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + }, + { + "name": "nonce", + "type": "uint256" + }, + { + "name": "v", + "type": "uint8[]" + }, + { + "name": "r", + "type": "bytes32[]" + }, + { + "name": "s", + "type": "bytes32[]" + } + ], + "name": "execTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + }, + { + "name": "nonce", + "type": "uint256" + } + ], + "name": "getTransactionHash", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610e5a806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319604647146100935780632b50004114610206578063481c6a75146102cc5780637de7edef14610323578063a3f4df7e14610366578063ba0bba40146103f6578063e52cb36a1461040d578063ffa1ad7414610456575b600080fd5b34801561009f57600080fd5b50610204600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e6565b005b34801561021257600080fd5b506102ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610705565b60405180826000191660001916815260200191505060405180910390f35b3480156102d857600080fd5b506102e1610921565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032f57600080fd5b50610364600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610947565b005b34801561037257600080fd5b5061037b610a0c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bb5780820151818401526020810190506103a0565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610a45565b005b34801561041957600080fd5b5061043c6004803603810190808035600019169060200190929190505050610a4f565b604051808215151515815260200191505060405180910390f35b34801561046257600080fd5b5061046b610a6f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104f58989898989610705565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561052c57600080fd5b61053881858585610aa8565b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78a8a8a8a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561062557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561066557808201518184015260208101905061064a565b50505050905090810190601f1680156106925780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b810190808051906020019092919050505015156106fa57600080fd5b505050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156108a65780518252602082019150602081019050602083039250610881565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156108d457fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109a357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109c957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610a4d610da4565b565b60026020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610b3857600080fd5b505af1158015610b4c573d6000803e3d6000fd5b505050506040513d6020811015610b6257600080fd5b81019080805190602001909291905050509050600091505b8060ff16821015610d9a576001888884815181101515610b9657fe5b906020019060200201518885815181101515610bae57fe5b906020019060200201518886815181101515610bc657fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610c41573d6000803e3d6000fd5b505050602060405103519250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610d0a57600080fd5b505af1158015610d1e573d6000803e3d6000fd5b505050506040513d6020811015610d3457600080fd5b81019080805190602001909291905050501515610d5057600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16111515610d8a57600080fd5b8293508180600101925050610b7a565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610deb57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820a4183092cbe869320dacc60413aa4faaa13aa1779d1603c8db847137fdfc7df10029", + "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319604647146100935780632b50004114610206578063481c6a75146102cc5780637de7edef14610323578063a3f4df7e14610366578063ba0bba40146103f6578063e52cb36a1461040d578063ffa1ad7414610456575b600080fd5b34801561009f57600080fd5b50610204600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e6565b005b34801561021257600080fd5b506102ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610705565b60405180826000191660001916815260200191505060405180910390f35b3480156102d857600080fd5b506102e1610921565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032f57600080fd5b50610364600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610947565b005b34801561037257600080fd5b5061037b610a0c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bb5780820151818401526020810190506103a0565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610a45565b005b34801561041957600080fd5b5061043c6004803603810190808035600019169060200190929190505050610a4f565b604051808215151515815260200191505060405180910390f35b34801561046257600080fd5b5061046b610a6f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104f58989898989610705565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561052c57600080fd5b61053881858585610aa8565b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78a8a8a8a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561062557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561066557808201518184015260208101905061064a565b50505050905090810190601f1680156106925780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b810190808051906020019092919050505015156106fa57600080fd5b505050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156108a65780518252602082019150602081019050602083039250610881565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156108d457fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109a357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109c957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610a4d610da4565b565b60026020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610b3857600080fd5b505af1158015610b4c573d6000803e3d6000fd5b505050506040513d6020811015610b6257600080fd5b81019080805190602001909291905050509050600091505b8060ff16821015610d9a576001888884815181101515610b9657fe5b906020019060200201518885815181101515610bae57fe5b906020019060200201518886815181101515610bc657fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610c41573d6000803e3d6000fd5b505050602060405103519250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610d0a57600080fd5b505af1158015610d1e573d6000803e3d6000fd5b505050506040513d6020811015610d3457600080fd5b81019080805190602001909291905050501515610d5057600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16111515610d8a57600080fd5b8293508180600101925050610b7a565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610deb57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820a4183092cbe869320dacc60413aa4faaa13aa1779d1603c8db847137fdfc7df10029", + "sourceMap": "269:2840:13:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;269:2840:13;;;;;;;", + "deployedSourceMap": "269:2840:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:602;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1265:602:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2796:311;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2796:311:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;314:52:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;314:52:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;314:52:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;601:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;601:65:13;;;;;;510:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;510:43:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;372:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;372:40:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;372:40:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:602;1512:23;1538:53;1557:2;1561:5;1568:4;1574:9;1585:5;1538:18;:53::i;:::-;1512:79;;1610:10;:27;1621:15;1610:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1609:28;1601:37;;;;;;;;1648:35;1658:15;1675:1;1678;1681;1648:9;:35::i;:::-;1776:4;1746:10;:27;1757:15;1746:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1798:7;;;;;;;;;;;:33;;;1832:2;1836:5;1843:4;1849:9;1798: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;1798:61:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1798:61:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1798:61:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1798:61:13;;;;;;;;;;;;;;;;1790:70;;;;;;;;1265:602;;;;;;;;;:::o;2796:311::-;2999:7;3044:4;3039:10;;3056:1;3051:7;;3060:4;3066:2;3070:5;3077:4;3083:9;3094:5;3029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;3029:71:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3022:78;;2796:311;;;;;;;:::o;262:28:5:-;;;;;;;;;;;;;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;314:52:13:-;;;;;;;;;;;;;;;;;;;;:::o;601:65::-;647:12;:10;:12::i;:::-;601:65::o;510:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;372:40::-;;;;;;;;;;;;;;;;;;;;:::o;1873:645::-;2050:17;2090:20;2120:9;2139:15;2078:1;2050:30;;2170:7;;;;;;;;;;;2157:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2157:36:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2157:36:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2157:36:13;;;;;;;;;;;;;;;;2139:54;;2254:1;2250:5;;2245:267;2261:9;2257:13;;:1;:13;2245:267;;;2306:44;2316:15;2333:1;2335;2333:4;;;;;;;;;;;;;;;;;;2339:1;2341;2339:4;;;;;;;;;;;;;;;;;;2345:1;2347;2345:4;;;;;;;;;;;;;;;;;;2306:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:44:13;;;;;;;;2291:59;;2385:7;;;;;;;;;;;2372:29;;;2402:12;2372:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2372:43:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2372:43:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2372:43:13;;;;;;;;;;;;;;;;2364:52;;;;;;;;2453:9;2438:24;;:12;:24;;;2430:33;;;;;;;;2489:12;2477:24;;2272:3;;;;;;;2245:267;;;1873:645;;;;;;;;:::o;392:268:5:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o", + "source": "pragma solidity 0.4.23;\nimport \"../Module.sol\";\nimport \"../OwnerManager.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 {\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 => bool) 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 v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n checkHash(transactionHash, v, r, s);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(manager.execTransactionFromModule(to, value, data, operation));\n }\n\n function checkHash(bytes32 transactionHash, uint8[] v, bytes32[] r, bytes32[] s)\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 = ecrecover(transactionHash, v[i], r[i], s[i]);\n require(OwnerManager(manager).isOwner(currentOwner));\n require(currentOwner > lastOwner);\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(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": [ + 2234 + ] + }, + "id": 2235, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2037, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:13" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "file": "../Module.sol", + "id": 2038, + "nodeType": "ImportDirective", + "scope": 2235, + "sourceUnit": 622, + "src": "24:23:13", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", + "file": "../OwnerManager.sol", + "id": 2039, + "nodeType": "ImportDirective", + "scope": 2235, + "sourceUnit": 1344, + "src": "48:29:13", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2040, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 621, + "src": "300:6:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "id": 2041, + "nodeType": "InheritanceSpecifier", + "src": "300:6:13" + } + ], + "contractDependencies": [ + 580, + 621, + 1359 + ], + "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": 2234, + "linearizedBaseContracts": [ + 2234, + 621, + 580, + 1359 + ], + "name": "StateChannelModule", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 2044, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 2234, + "src": "314:52:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 2042, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "314:6:13", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "5374617465204368616e6e656c204d6f64756c65", + "id": 2043, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "344:22:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e66fa361bdba11103aaf2321b03707a79b393abf1f410f3f609398777fd3a713", + "typeString": "literal_string \"State Channel Module\"" + }, + "value": "State Channel Module" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 2047, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 2234, + "src": "372:40:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 2045, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "372:6:13", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 2046, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "405:7:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 2051, + "name": "isExecuted", + "nodeType": "VariableDeclaration", + "scope": 2234, + "src": "510:43:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "typeName": { + "id": 2050, + "keyType": { + "id": 2048, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "519:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "510:25:13", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "valueType": { + "id": 2049, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "530:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 2057, + "nodeType": "Block", + "src": "637:29:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2054, + "name": "setManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 620, + "src": "647:10:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "647:12:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2056, + "nodeType": "ExpressionStatement", + "src": "647:12:13" + } + ] + }, + "documentation": "@dev Setup function sets manager", + "id": 2058, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2052, + "nodeType": "ParameterList", + "parameters": [], + "src": "615:2:13" + }, + "payable": false, + "returnParameters": { + "id": 2053, + "nodeType": "ParameterList", + "parameters": [], + "src": "637:0:13" + }, + "scope": 2234, + "src": "601:65:13", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2120, + "nodeType": "Block", + "src": "1502:365:13", + "statements": [ + { + "assignments": [ + 2081 + ], + "declarations": [ + { + "constant": false, + "id": 2081, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 2121, + "src": "1512:23:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2080, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1512:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2089, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2083, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2060, + "src": "1557:2:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2084, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2062, + "src": "1561:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2085, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2064, + "src": "1568:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 2086, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2066, + "src": "1574:9:13", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 2087, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2068, + "src": "1585:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2082, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2233, + "src": "1538:18:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" + } + }, + "id": 2088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1538:53:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1512:79:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1609:28:13", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2091, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2051, + "src": "1610:10:13", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 2093, + "indexExpression": { + "argumentTypes": null, + "id": 2092, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "1621:15:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1610:27:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2090, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "1601:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1601:37:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2096, + "nodeType": "ExpressionStatement", + "src": "1601:37:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2098, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "1658:15:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2099, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "1675:1:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + } + }, + { + "argumentTypes": null, + "id": 2100, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2074, + "src": "1678:1:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + { + "argumentTypes": null, + "id": 2101, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2077, + "src": "1681:1:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + ], + "id": 2097, + "name": "checkHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2202, + "src": "1648:9:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" + } + }, + "id": 2102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1648:35:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2103, + "nodeType": "ExpressionStatement", + "src": "1648:35:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 2108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2104, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2051, + "src": "1746:10:13", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 2106, + "indexExpression": { + "argumentTypes": null, + "id": 2105, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "1757:15:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1746:27:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1776:4:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1746:34:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2109, + "nodeType": "ExpressionStatement", + "src": "1746:34:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2113, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2060, + "src": "1832:2:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2114, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2062, + "src": "1836:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2115, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2064, + "src": "1843:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 2116, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2066, + "src": "1849:9:13", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 2111, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "1798:7:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" + } + }, + "id": 2112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "execTransactionFromModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 798, + "src": "1798:33:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" + } + }, + "id": 2117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1798:61:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2110, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "1790:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1790:70:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2119, + "nodeType": "ExpressionStatement", + "src": "1790:70:13" + } + ] + }, + "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 v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", + "id": 2121, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "execTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2078, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2060, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2121, + "src": "1299:10:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2059, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1299:7:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2062, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 2121, + "src": "1320:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2061, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1320:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2064, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2121, + "src": "1344:10:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2063, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1344:5:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2066, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 2121, + "src": "1365:24:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 2065, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5, + "src": "1365:14:13", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2068, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 2121, + "src": "1400:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2067, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1400:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2071, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 2121, + "src": "1423:9:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[]" + }, + "typeName": { + "baseType": { + "id": 2069, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1423:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 2070, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1423:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", + "typeString": "uint8[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2074, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 2121, + "src": "1443:11:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2072, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1443:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2073, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1443:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2077, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 2121, + "src": "1465:11:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2075, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1465:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2076, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1465:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1289:193:13" + }, + "payable": false, + "returnParameters": { + "id": 2079, + "nodeType": "ParameterList", + "parameters": [], + "src": "1502:0:13" + }, + "scope": 2234, + "src": "1265:602:13", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2201, + "nodeType": "Block", + "src": "1988:530:13", + "statements": [ + { + "assignments": [ + 2136 + ], + "declarations": [ + { + "constant": false, + "id": 2136, + "name": "lastOwner", + "nodeType": "VariableDeclaration", + "scope": 2202, + "src": "2050:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2135, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2050:7:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2140, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2138, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2078:1:13", + "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": 2137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2070:7:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2070:10:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2050:30:13" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 2142, + "name": "currentOwner", + "nodeType": "VariableDeclaration", + "scope": 2202, + "src": "2090:20:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2141, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2090:7:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2143, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2090:20:13" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 2145, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2202, + "src": "2120:9:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2144, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2120:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2146, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2120:9:13" + }, + { + "assignments": [ + 2148 + ], + "declarations": [ + { + "constant": false, + "id": 2148, + "name": "threshold", + "nodeType": "VariableDeclaration", + "scope": 2202, + "src": "2139:15:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2147, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2139:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2154, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2150, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "2170:7:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" + } + ], + "id": 2149, + "name": "OwnerManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "2157:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeString": "type(contract OwnerManager)" + } + }, + "id": 2151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2157:21:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeString": "contract OwnerManager" + } + }, + "id": 2152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getThreshold", + "nodeType": "MemberAccess", + "referencedDeclaration": 1279, + "src": "2157:34:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", + "typeString": "function () view external returns (uint8)" + } + }, + "id": 2153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2157:36:13", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2139:54:13" + }, + { + "body": { + "id": 2199, + "nodeType": "Block", + "src": "2277:235:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2165, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2142, + "src": "2291:12:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2167, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2123, + "src": "2316:15:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2168, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2126, + "src": "2333:1:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + } + }, + "id": 2170, + "indexExpression": { + "argumentTypes": null, + "id": 2169, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2145, + "src": "2335:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2333:4:13", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2171, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2129, + "src": "2339:1:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2173, + "indexExpression": { + "argumentTypes": null, + "id": 2172, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2145, + "src": "2341:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2339:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2174, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2132, + "src": "2345:1:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2176, + "indexExpression": { + "argumentTypes": null, + "id": 2175, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2145, + "src": "2347:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2345:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2166, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2388, + "src": "2306:9:13", + "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": 2177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2306:44:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2291:59:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2179, + "nodeType": "ExpressionStatement", + "src": "2291:59:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2185, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2142, + "src": "2402:12:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2182, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "2385:7:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" + } + ], + "id": 2181, + "name": "OwnerManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "2372:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeString": "type(contract OwnerManager)" + } + }, + "id": 2183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2372:21:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeString": "contract OwnerManager" + } + }, + "id": 2184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 1293, + "src": "2372:29:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 2186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2372:43:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2180, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "2364:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2364:52:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2188, + "nodeType": "ExpressionStatement", + "src": "2364:52:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2190, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2142, + "src": "2438:12:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 2191, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2136, + "src": "2453:9:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2438:24:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2189, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "2430:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2430:33:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2194, + "nodeType": "ExpressionStatement", + "src": "2430:33:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 2197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2195, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2136, + "src": "2477:9:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2196, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2142, + "src": "2489:12:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2477:24:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2198, + "nodeType": "ExpressionStatement", + "src": "2477:24:13" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2159, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2145, + "src": "2257:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 2160, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2148, + "src": "2261:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2257:13:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2200, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 2157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2155, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2145, + "src": "2250:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2254:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2250:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2158, + "nodeType": "ExpressionStatement", + "src": "2250:5:13" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2272:3:13", + "subExpression": { + "argumentTypes": null, + "id": 2162, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2145, + "src": "2272:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2164, + "nodeType": "ExpressionStatement", + "src": "2272:3:13" + }, + "nodeType": "ForStatement", + "src": "2245:267:13" + } + ] + }, + "documentation": null, + "id": 2202, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "checkHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2123, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 2202, + "src": "1892:23:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2122, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1892:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2126, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 2202, + "src": "1917:9:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[]" + }, + "typeName": { + "baseType": { + "id": 2124, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1917:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 2125, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1917:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", + "typeString": "uint8[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2129, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 2202, + "src": "1928:11:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2127, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1928:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2128, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1928:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2132, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 2202, + "src": "1941:11:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2130, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1941:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2131, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1941:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1891:62:13" + }, + "payable": false, + "returnParameters": { + "id": 2134, + "nodeType": "ParameterList", + "parameters": [], + "src": "1988:0:13" + }, + "scope": 2234, + "src": "1873:645:13", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2232, + "nodeType": "Block", + "src": "3012:95:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 2219, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3044:4:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 2218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3039:4:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 2220, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3039:10:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2222, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3056:1:13", + "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": 2221, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3051:4:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 2223, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3051:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 2224, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2435, + "src": "3060:4:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_StateChannelModule_$2234", + "typeString": "contract StateChannelModule" + } + }, + { + "argumentTypes": null, + "id": 2225, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2204, + "src": "3066:2:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2226, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2206, + "src": "3070:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2227, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2208, + "src": "3077:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 2228, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2210, + "src": "3083:9:13", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 2229, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2212, + "src": "3094:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_StateChannelModule_$2234", + "typeString": "contract StateChannelModule" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2217, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2390, + "src": "3029:9:13", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 2230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3029:71:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2216, + "id": 2231, + "nodeType": "Return", + "src": "3022:78:13" + } + ] + }, + "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": 2233, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getTransactionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2213, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2204, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2233, + "src": "2833:10:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2203, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2833:7:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2206, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 2233, + "src": "2854:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2205, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2854:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2208, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2233, + "src": "2878:10:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2207, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2878:5:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2210, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 2233, + "src": "2899:24:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 2209, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5, + "src": "2899:14:13", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2212, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 2233, + "src": "2934:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2211, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2934:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2823:130:13" + }, + "payable": false, + "returnParameters": { + "id": 2216, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2215, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2233, + "src": "2999:7:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2214, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2999:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2998:9:13" + }, + "scope": 2234, + "src": "2796:311:13", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2235, + "src": "269:2840:13" + } + ], + "src": "0:3110:13" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/StateChannelModule.sol", + "exportedSymbols": { + "StateChannelModule": [ + 2234 + ] + }, + "id": 2235, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2037, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:13" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "file": "../Module.sol", + "id": 2038, + "nodeType": "ImportDirective", + "scope": 2235, + "sourceUnit": 622, + "src": "24:23:13", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", + "file": "../OwnerManager.sol", + "id": 2039, + "nodeType": "ImportDirective", + "scope": 2235, + "sourceUnit": 1344, + "src": "48:29:13", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2040, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 621, + "src": "300:6:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$621", + "typeString": "contract Module" + } + }, + "id": 2041, + "nodeType": "InheritanceSpecifier", + "src": "300:6:13" + } + ], + "contractDependencies": [ + 580, + 621, + 1359 + ], + "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": 2234, + "linearizedBaseContracts": [ + 2234, + 621, + 580, + 1359 + ], + "name": "StateChannelModule", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 2044, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 2234, + "src": "314:52:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 2042, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "314:6:13", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "5374617465204368616e6e656c204d6f64756c65", + "id": 2043, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "344:22:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e66fa361bdba11103aaf2321b03707a79b393abf1f410f3f609398777fd3a713", + "typeString": "literal_string \"State Channel Module\"" + }, + "value": "State Channel Module" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 2047, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 2234, + "src": "372:40:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 2045, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "372:6:13", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 2046, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "405:7:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 2051, + "name": "isExecuted", + "nodeType": "VariableDeclaration", + "scope": 2234, + "src": "510:43:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "typeName": { + "id": 2050, + "keyType": { + "id": 2048, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "519:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "510:25:13", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "valueType": { + "id": 2049, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "530:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 2057, + "nodeType": "Block", + "src": "637:29:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2054, + "name": "setManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 620, + "src": "647:10:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "647:12:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2056, + "nodeType": "ExpressionStatement", + "src": "647:12:13" + } + ] + }, + "documentation": "@dev Setup function sets manager", + "id": 2058, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2052, + "nodeType": "ParameterList", + "parameters": [], + "src": "615:2:13" + }, + "payable": false, + "returnParameters": { + "id": 2053, + "nodeType": "ParameterList", + "parameters": [], + "src": "637:0:13" + }, + "scope": 2234, + "src": "601:65:13", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2120, + "nodeType": "Block", + "src": "1502:365:13", + "statements": [ + { + "assignments": [ + 2081 + ], + "declarations": [ + { + "constant": false, + "id": 2081, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 2121, + "src": "1512:23:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2080, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1512:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2089, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2083, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2060, + "src": "1557:2:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2084, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2062, + "src": "1561:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2085, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2064, + "src": "1568:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 2086, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2066, + "src": "1574:9:13", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 2087, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2068, + "src": "1585:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2082, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2233, + "src": "1538:18:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" + } + }, + "id": 2088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1538:53:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1512:79:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1609:28:13", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2091, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2051, + "src": "1610:10:13", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 2093, + "indexExpression": { + "argumentTypes": null, + "id": 2092, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "1621:15:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1610:27:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2090, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "1601:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1601:37:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2096, + "nodeType": "ExpressionStatement", + "src": "1601:37:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2098, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "1658:15:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2099, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "1675:1:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + } + }, + { + "argumentTypes": null, + "id": 2100, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2074, + "src": "1678:1:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + { + "argumentTypes": null, + "id": 2101, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2077, + "src": "1681:1:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + ], + "id": 2097, + "name": "checkHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2202, + "src": "1648:9:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" + } + }, + "id": 2102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1648:35:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2103, + "nodeType": "ExpressionStatement", + "src": "1648:35:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 2108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2104, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2051, + "src": "1746:10:13", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 2106, + "indexExpression": { + "argumentTypes": null, + "id": 2105, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "1757:15:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1746:27:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1776:4:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1746:34:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2109, + "nodeType": "ExpressionStatement", + "src": "1746:34:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2113, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2060, + "src": "1832:2:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2114, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2062, + "src": "1836:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2115, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2064, + "src": "1843:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 2116, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2066, + "src": "1849:9:13", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 2111, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "1798:7:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" + } + }, + "id": 2112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "execTransactionFromModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 798, + "src": "1798:33:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" + } + }, + "id": 2117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1798:61:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2110, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "1790:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1790:70:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2119, + "nodeType": "ExpressionStatement", + "src": "1790:70:13" + } + ] + }, + "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 v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", + "id": 2121, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "execTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2078, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2060, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2121, + "src": "1299:10:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2059, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1299:7:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2062, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 2121, + "src": "1320:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2061, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1320:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2064, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2121, + "src": "1344:10:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2063, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1344:5:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2066, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 2121, + "src": "1365:24:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 2065, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5, + "src": "1365:14:13", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2068, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 2121, + "src": "1400:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2067, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1400:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2071, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 2121, + "src": "1423:9:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[]" + }, + "typeName": { + "baseType": { + "id": 2069, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1423:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 2070, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1423:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", + "typeString": "uint8[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2074, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 2121, + "src": "1443:11:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2072, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1443:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2073, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1443:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2077, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 2121, + "src": "1465:11:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2075, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1465:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2076, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1465:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1289:193:13" + }, + "payable": false, + "returnParameters": { + "id": 2079, + "nodeType": "ParameterList", + "parameters": [], + "src": "1502:0:13" + }, + "scope": 2234, + "src": "1265:602:13", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2201, + "nodeType": "Block", + "src": "1988:530:13", + "statements": [ + { + "assignments": [ + 2136 + ], + "declarations": [ + { + "constant": false, + "id": 2136, + "name": "lastOwner", + "nodeType": "VariableDeclaration", + "scope": 2202, + "src": "2050:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2135, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2050:7:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2140, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2138, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2078:1:13", + "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": 2137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2070:7:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2070:10:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2050:30:13" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 2142, + "name": "currentOwner", + "nodeType": "VariableDeclaration", + "scope": 2202, + "src": "2090:20:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2141, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2090:7:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2143, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2090:20:13" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 2145, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2202, + "src": "2120:9:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2144, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2120:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2146, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2120:9:13" + }, + { + "assignments": [ + 2148 + ], + "declarations": [ + { + "constant": false, + "id": 2148, + "name": "threshold", + "nodeType": "VariableDeclaration", + "scope": 2202, + "src": "2139:15:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2147, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2139:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2154, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2150, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "2170:7:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" + } + ], + "id": 2149, + "name": "OwnerManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "2157:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeString": "type(contract OwnerManager)" + } + }, + "id": 2151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2157:21:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeString": "contract OwnerManager" + } + }, + "id": 2152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getThreshold", + "nodeType": "MemberAccess", + "referencedDeclaration": 1279, + "src": "2157:34:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", + "typeString": "function () view external returns (uint8)" + } + }, + "id": 2153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2157:36:13", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2139:54:13" + }, + { + "body": { + "id": 2199, + "nodeType": "Block", + "src": "2277:235:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2165, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2142, + "src": "2291:12:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2167, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2123, + "src": "2316:15:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2168, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2126, + "src": "2333:1:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + } + }, + "id": 2170, + "indexExpression": { + "argumentTypes": null, + "id": 2169, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2145, + "src": "2335:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2333:4:13", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2171, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2129, + "src": "2339:1:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2173, + "indexExpression": { + "argumentTypes": null, + "id": 2172, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2145, + "src": "2341:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2339:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2174, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2132, + "src": "2345:1:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2176, + "indexExpression": { + "argumentTypes": null, + "id": 2175, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2145, + "src": "2347:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2345:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2166, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2388, + "src": "2306:9:13", + "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": 2177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2306:44:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2291:59:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2179, + "nodeType": "ExpressionStatement", + "src": "2291:59:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2185, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2142, + "src": "2402:12:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2182, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "2385:7:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" + } + ], + "id": 2181, + "name": "OwnerManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "2372:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeString": "type(contract OwnerManager)" + } + }, + "id": 2183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2372:21:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeString": "contract OwnerManager" + } + }, + "id": 2184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 1293, + "src": "2372:29:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 2186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2372:43:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2180, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "2364:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2364:52:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2188, + "nodeType": "ExpressionStatement", + "src": "2364:52:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2190, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2142, + "src": "2438:12:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 2191, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2136, + "src": "2453:9:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2438:24:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2189, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "2430:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2430:33:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2194, + "nodeType": "ExpressionStatement", + "src": "2430:33:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 2197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2195, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2136, + "src": "2477:9:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2196, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2142, + "src": "2489:12:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2477:24:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2198, + "nodeType": "ExpressionStatement", + "src": "2477:24:13" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2159, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2145, + "src": "2257:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 2160, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2148, + "src": "2261:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2257:13:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2200, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 2157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2155, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2145, + "src": "2250:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2254:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2250:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2158, + "nodeType": "ExpressionStatement", + "src": "2250:5:13" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2272:3:13", + "subExpression": { + "argumentTypes": null, + "id": 2162, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2145, + "src": "2272:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2164, + "nodeType": "ExpressionStatement", + "src": "2272:3:13" + }, + "nodeType": "ForStatement", + "src": "2245:267:13" + } + ] + }, + "documentation": null, + "id": 2202, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "checkHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2123, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 2202, + "src": "1892:23:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2122, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1892:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2126, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 2202, + "src": "1917:9:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[]" + }, + "typeName": { + "baseType": { + "id": 2124, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1917:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 2125, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1917:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", + "typeString": "uint8[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2129, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 2202, + "src": "1928:11:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2127, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1928:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2128, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1928:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2132, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 2202, + "src": "1941:11:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2130, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1941:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2131, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1941:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1891:62:13" + }, + "payable": false, + "returnParameters": { + "id": 2134, + "nodeType": "ParameterList", + "parameters": [], + "src": "1988:0:13" + }, + "scope": 2234, + "src": "1873:645:13", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2232, + "nodeType": "Block", + "src": "3012:95:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 2219, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3044:4:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 2218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3039:4:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 2220, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3039:10:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2222, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3056:1:13", + "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": 2221, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3051:4:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 2223, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3051:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 2224, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2435, + "src": "3060:4:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_StateChannelModule_$2234", + "typeString": "contract StateChannelModule" + } + }, + { + "argumentTypes": null, + "id": 2225, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2204, + "src": "3066:2:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2226, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2206, + "src": "3070:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2227, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2208, + "src": "3077:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 2228, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2210, + "src": "3083:9:13", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 2229, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2212, + "src": "3094:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_StateChannelModule_$2234", + "typeString": "contract StateChannelModule" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2217, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2390, + "src": "3029:9:13", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 2230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3029:71:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2216, + "id": 2231, + "nodeType": "Return", + "src": "3022:78:13" + } + ] + }, + "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": 2233, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getTransactionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2213, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2204, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2233, + "src": "2833:10:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2203, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2833:7:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2206, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 2233, + "src": "2854:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2205, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2854:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2208, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2233, + "src": "2878:10:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2207, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2878:5:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2210, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 2233, + "src": "2899:24:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 2209, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5, + "src": "2899:14:13", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2212, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 2233, + "src": "2934:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2211, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2934:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2823:130:13" + }, + "payable": false, + "returnParameters": { + "id": 2216, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2215, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2233, + "src": "2999:7:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2214, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2999:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2998:9:13" + }, + "scope": 2234, + "src": "2796:311:13", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2235, + "src": "269:2840:13" + } + ], + "src": "0:3110:13" + }, + "compiler": { + "name": "solc", + "version": "0.4.23+commit.124ca40d.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0xe8ebcab56a44488742278fe3e5ed241b6b786032", + "transactionHash": "0x8285395632164bd2429394e47473065a620bcea7c066595b3b4e2eb1c8457d17" + }, + "1526478212260": { + "events": {}, + "links": {}, + "address": "0xb9597dbd8ed0c4c481d1677b3200b8c4d342750c", + "transactionHash": "0x7f1b3b4ba4694670b29675af571cb4a96b1c2d78d09d210e27482419aa6fff79" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-16T13:45:24.513Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/WhitelistModule.json b/safe-contracts/build/contracts/WhitelistModule.json index 749a1ca1..e82217b3 100644 --- a/safe-contracts/build/contracts/WhitelistModule.json +++ b/safe-contracts/build/contracts/WhitelistModule.json @@ -146,73 +146,73 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610c6e806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610733565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b9610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610779565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083e565b005b34801561028d57600080fd5b5061029661094d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610986565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a49565b005b3480156103c657600080fd5b506103cf610b7f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b8101908080519060200190929190505050151561054f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b021640a85858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561066157fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106a1578082015181840152602081019050610686565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b8101908080519060200190929190505050509392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107d557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156107fb57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561089a57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108f257600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b600080610991610bb8565b600091505b8251821015610a445782828151811015156109ad57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156109df57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610996565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610aa557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610acb57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610b2457600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610bff57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820f4f2d74a4d0083ddcd8d51c3cd990d6eafe4fc579299c91a924bd116a364c0d80029", - "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610733565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b9610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610779565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083e565b005b34801561028d57600080fd5b5061029661094d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610986565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a49565b005b3480156103c657600080fd5b506103cf610b7f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b8101908080519060200190929190505050151561054f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b021640a85858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561066157fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106a1578082015181840152602081019050610686565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b8101908080519060200190929190505050509392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107d557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156107fb57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561089a57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108f257600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b600080610991610bb8565b600091505b8251821015610a445782828151811015156109ad57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156109df57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610996565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610aa557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610acb57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610b2457600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610bff57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820f4f2d74a4d0083ddcd8d51c3cd990d6eafe4fc579299c91a924bd116a364c0d80029", - "sourceMap": "289:1947:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;289:1947:21;;;;;;;", - "deployedSourceMap": "289:1947:21:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:370;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1864:370:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;498:46:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:8;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1438:172:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1438:172: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:270;;8:9:-1;5:2;;;30:1;27;20:12;5:2;667:270:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1086:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1086:198: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:370;1963:4;2093:7;;;;;;;;;;;2080:29;;;2110:10;2080:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2080:41:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2080:41:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2080:41:21;;;;;;;;;;;;;;;;2072:50;;;;;;;;2140:13;:17;2154:2;2140:17;;;;;;;;;;;;;;;;;;;;;;;;;2132:26;;;;;;;;2168:7;;;;;;;;;;;:21;;;2190:2;2194:5;2201:4;2207:19;2168:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2168:59:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2168:59:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2168:59:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2168:59:21;;;;;;;;;;;;;;;;;1864:370;;;;;:::o;498:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;262:28:8:-;;;;;;;;;;;;;:::o;626:208:6:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1438:172:21:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1540:13:21;:22;1554:7;1540:22;;;;;;;;;;;;;;;;;;;;;;;;;1532:31;;;;;;;;1598:5;1573:13;:22;1587:7;1573:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1438:172;:::o;331:48::-;;;;;;;;;;;;;;;;;;;;:::o;667:270::-;758:9;813:15;731:12;:10;:12::i;:::-;770:1;758:13;;753:178;777:8;:15;773:1;:19;753:178;;;831:8;840:1;831:11;;;;;;;;;;;;;;;;;;813:29;;875:1;864:7;:12;;;;856:21;;;;;;;;916:4;891:13;:22;905:7;891:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;794:3;;;;;;;753:178;;;667:270;;;:::o;1086:198::-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1194:1:21;1183:7;:12;;;;1175:21;;;;;;;;1215:13;:22;1229:7;1215:22;;;;;;;;;;;;;;;;;;;;;;;;;1214:23;1206:32;;;;;;;;1273:4;1248:13;:22;1262:7;1248:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1086:198;:::o;385:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:8:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o", - "source": "pragma solidity 0.4.23;\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);\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);\n require(!isWhitelisted[account]);\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]);\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));\n require(isWhitelisted[to]);\n manager.executeModule(to, value, data, Enum.Operation.Call);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610c78806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061073d565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b961075d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610783565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610848565b005b34801561028d57600080fd5b50610296610957565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610990565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a53565b005b3480156103c657600080fd5b506103cf610b89565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b8101908080519060200190929190505050151561054f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561066157fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106a1578082015181840152602081019050610686565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b8101908080519060200190929190505050151561073657600080fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107df57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561080557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a457600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108fc57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b60008061099b610bc2565b600091505b8251821015610a4e5782828151811015156109b757fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156109e957600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506109a0565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610aaf57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ad557600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610b2e57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c0957600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a723058202f15d7927e2ed3723a36804ee24b65ed4b34edcd2b65d7a7a11d8729219f6a9e0029", + "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061073d565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b961075d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610783565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610848565b005b34801561028d57600080fd5b50610296610957565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610990565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a53565b005b3480156103c657600080fd5b506103cf610b89565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b8101908080519060200190929190505050151561054f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561066157fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106a1578082015181840152602081019050610686565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b8101908080519060200190929190505050151561073657600080fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107df57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561080557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a457600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108fc57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b60008061099b610bc2565b600091505b8251821015610a4e5782828151811015156109b757fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156109e957600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506109a0565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610aaf57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ad557600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610b2e57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c0957600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a723058202f15d7927e2ed3723a36804ee24b65ed4b34edcd2b65d7a7a11d8729219f6a9e0029", + "sourceMap": "289:1968:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;289:1968:14;;;;;;;", + "deployedSourceMap": "289:1968:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1864:391:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;498:46:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1438:172:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1438:172:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;331:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;667:270;;8:9:-1;5:2;;;30:1;27;20:12;5:2;667:270:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1086:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1086:198:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;385:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;385:40:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:391;1963:4;2093:7;;;;;;;;;;;2080:29;;;2110:10;2080:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2080:41:14;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2080:41:14;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2080:41:14;;;;;;;;;;;;;;;;2072:50;;;;;;;;2140:13;:17;2154:2;2140:17;;;;;;;;;;;;;;;;;;;;;;;;;2132:26;;;;;;;;2176:7;;;;;;;;;;;:33;;;2210:2;2214:5;2221:4;2227:19;2176: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;2176:71:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2176:71:14;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2176:71:14;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2176:71:14;;;;;;;;;;;;;;;;2168:80;;;;;;;;1864:391;;;;;:::o;498:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;262:28:5:-;;;;;;;;;;;;;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1438:172:14:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1540:13:14;:22;1554:7;1540:22;;;;;;;;;;;;;;;;;;;;;;;;;1532:31;;;;;;;;1598:5;1573:13;:22;1587:7;1573:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1438:172;:::o;331:48::-;;;;;;;;;;;;;;;;;;;;:::o;667:270::-;758:9;813:15;731:12;:10;:12::i;:::-;770:1;758:13;;753:178;777:8;:15;773:1;:19;753:178;;;831:8;840:1;831:11;;;;;;;;;;;;;;;;;;813:29;;875:1;864:7;:12;;;;856:21;;;;;;;;916:4;891:13;:22;905:7;891:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;794:3;;;;;;;753:178;;;667:270;;;:::o;1086:198::-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1194:1:14;1183:7;:12;;;;1175:21;;;;;;;;1215:13;:22;1229:7;1215:22;;;;;;;;;;;;;;;;;;;;;;;;;1214:23;1206:32;;;;;;;;1273:4;1248:13;:22;1262:7;1248:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1086:198;:::o;385:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:5:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o", + "source": "pragma solidity 0.4.23;\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);\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);\n require(!isWhitelisted[account]);\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]);\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));\n require(isWhitelisted[to]);\n require(manager.execTransactionFromModule(to, value, data, Enum.Operation.Call));\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": [ - 2450 + 2381 ] }, - "id": 2451, + "id": 2382, "nodeType": "SourceUnit", "nodes": [ { - "id": 2306, + "id": 2236, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:21" + "src": "0:23:14" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 2307, + "id": 2237, "nodeType": "ImportDirective", - "scope": 2451, - "sourceUnit": 31, - "src": "24:21:21", + "scope": 2382, + "sourceUnit": 7, + "src": "24:21:14", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2308, + "id": 2238, "nodeType": "ImportDirective", - "scope": 2451, - "sourceUnit": 878, - "src": "46:23:21", + "scope": 2382, + "sourceUnit": 622, + "src": "46:23:14", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 2309, + "id": 2239, "nodeType": "ImportDirective", - "scope": 2451, - "sourceUnit": 1143, - "src": "70:30:21", + "scope": 2382, + "sourceUnit": 972, + "src": "70:30:14", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2310, + "id": 2240, "nodeType": "ImportDirective", - "scope": 2451, - "sourceUnit": 1439, - "src": "101:29:21", + "scope": 2382, + "sourceUnit": 1344, + "src": "101:29:14", "symbolAliases": [], "unitAlias": "" }, @@ -222,46 +222,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2311, + "id": 2241, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "317:6:21", + "referencedDeclaration": 621, + "src": "317:6:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", + "typeIdentifier": "t_contract$_Module_$621", "typeString": "contract Module" } }, - "id": 2312, + "id": 2242, "nodeType": "InheritanceSpecifier", - "src": "317:6:21" + "src": "317:6:14" } ], "contractDependencies": [ - 779, - 877, - 1559 + 580, + 621, + 1359 ], "contractKind": "contract", "documentation": "@title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2450, + "id": 2381, "linearizedBaseContracts": [ - 2450, - 877, - 779, - 1559 + 2381, + 621, + 580, + 1359 ], "name": "WhitelistModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2315, + "id": 2245, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2450, - "src": "331:48:21", + "scope": 2381, + "src": "331:48:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -269,10 +269,10 @@ "typeString": "string" }, "typeName": { - "id": 2313, + "id": 2243, "name": "string", "nodeType": "ElementaryTypeName", - "src": "331:6:21", + "src": "331:6:14", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -281,14 +281,14 @@ "value": { "argumentTypes": null, "hexValue": "57686974656c697374204d6f64756c65", - "id": 2314, + "id": 2244, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "361:18:21", + "src": "361:18:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_84d69d03a7c747e8eefe7cc2b9e87b566cfc57cc90e4ed88f03f9c9780b7d4e6", @@ -300,11 +300,11 @@ }, { "constant": true, - "id": 2318, + "id": 2248, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2450, - "src": "385:40:21", + "scope": 2381, + "src": "385:40:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -312,10 +312,10 @@ "typeString": "string" }, "typeName": { - "id": 2316, + "id": 2246, "name": "string", "nodeType": "ElementaryTypeName", - "src": "385:6:21", + "src": "385:6:14", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -324,14 +324,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2317, + "id": 2247, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "418:7:21", + "src": "418:7:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -343,11 +343,11 @@ }, { "constant": false, - "id": 2322, + "id": 2252, "name": "isWhitelisted", "nodeType": "VariableDeclaration", - "scope": 2450, - "src": "498:46:21", + "scope": 2381, + "src": "498:46:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -355,28 +355,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 2321, + "id": 2251, "keyType": { - "id": 2319, + "id": 2249, "name": "address", "nodeType": "ElementaryTypeName", - "src": "507:7:21", + "src": "507:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "498:25:21", + "src": "498:25:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2320, + "id": 2250, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "518:4:21", + "src": "518:4:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -388,9 +388,9 @@ }, { "body": { - "id": 2362, + "id": 2292, "nodeType": "Block", - "src": "721:216:21", + "src": "721:216:14", "statements": [ { "expression": { @@ -398,18 +398,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2328, + "id": 2258, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 876, - "src": "731:10:21", + "referencedDeclaration": 620, + "src": "731:10:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2329, + "id": 2259, "isConstant": false, "isLValue": false, "isPure": false, @@ -417,34 +417,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "731:12:21", + "src": "731:12:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2330, + "id": 2260, "nodeType": "ExpressionStatement", - "src": "731:12:21" + "src": "731:12:14" }, { "body": { - "id": 2360, + "id": 2290, "nodeType": "Block", - "src": "799:132:21", + "src": "799:132:14", "statements": [ { "assignments": [ - 2343 + 2273 ], "declarations": [ { "constant": false, - "id": 2343, + "id": 2273, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2363, - "src": "813:15:21", + "scope": 2293, + "src": "813:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -452,10 +452,10 @@ "typeString": "address" }, "typeName": { - "id": 2342, + "id": 2272, "name": "address", "nodeType": "ElementaryTypeName", - "src": "813:7:21", + "src": "813:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -465,31 +465,31 @@ "visibility": "internal" } ], - "id": 2347, + "id": 2277, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2344, + "id": 2274, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2325, - "src": "831:8:21", + "referencedDeclaration": 2255, + "src": "831:8:14", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2346, + "id": 2276, "indexExpression": { "argumentTypes": null, - "id": 2345, + "id": 2275, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2332, - "src": "840:1:21", + "referencedDeclaration": 2262, + "src": "840:1:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -500,14 +500,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "831:11:21", + "src": "831:11:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "813:29:21" + "src": "813:29:14" }, { "expression": { @@ -519,19 +519,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2351, + "id": 2281, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2349, + "id": 2279, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2343, - "src": "864:7:21", + "referencedDeclaration": 2273, + "src": "864:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -542,14 +542,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2350, + "id": 2280, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "875:1:21", + "src": "875:1:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -557,7 +557,7 @@ }, "value": "0" }, - "src": "864:12:21", + "src": "864:12:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -571,21 +571,21 @@ "typeString": "bool" } ], - "id": 2348, + "id": 2278, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "856:7:21", + "referencedDeclaration": 2399, + "src": "856:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2352, + "id": 2282, "isConstant": false, "isLValue": false, "isPure": false, @@ -593,20 +593,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "856:21:21", + "src": "856:21:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2353, + "id": 2283, "nodeType": "ExpressionStatement", - "src": "856:21:21" + "src": "856:21:14" }, { "expression": { "argumentTypes": null, - "id": 2358, + "id": 2288, "isConstant": false, "isLValue": false, "isPure": false, @@ -615,26 +615,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2354, + "id": 2284, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "891:13:21", + "referencedDeclaration": 2252, + "src": "891:13:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2356, + "id": 2286, "indexExpression": { "argumentTypes": null, - "id": 2355, + "id": 2285, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2343, - "src": "905:7:21", + "referencedDeclaration": 2273, + "src": "905:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -645,7 +645,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "891:22:21", + "src": "891:22:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -656,14 +656,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2357, + "id": 2287, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "916:4:21", + "src": "916:4:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -671,15 +671,15 @@ }, "value": "true" }, - "src": "891:29:21", + "src": "891:29:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2359, + "id": 2289, "nodeType": "ExpressionStatement", - "src": "891:29:21" + "src": "891:29:14" } ] }, @@ -689,19 +689,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2338, + "id": 2268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2335, + "id": 2265, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2332, - "src": "773:1:21", + "referencedDeclaration": 2262, + "src": "773:1:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -713,18 +713,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2336, + "id": 2266, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2325, - "src": "777:8:21", + "referencedDeclaration": 2255, + "src": "777:8:14", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2337, + "id": 2267, "isConstant": false, "isLValue": false, "isPure": false, @@ -732,31 +732,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "777:15:21", + "src": "777:15:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "773:19:21", + "src": "773:19:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2361, + "id": 2291, "initializationExpression": { "assignments": [ - 2332 + 2262 ], "declarations": [ { "constant": false, - "id": 2332, + "id": 2262, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2363, - "src": "758:9:21", + "scope": 2293, + "src": "758:9:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -764,10 +764,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2331, + "id": 2261, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "758:7:21", + "src": "758:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -777,18 +777,18 @@ "visibility": "internal" } ], - "id": 2334, + "id": 2264, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2333, + "id": 2263, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "770:1:21", + "src": "770:1:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -797,12 +797,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "758:13:21" + "src": "758:13:14" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2340, + "id": 2270, "isConstant": false, "isLValue": false, "isPure": false, @@ -810,15 +810,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "794:3:21", + "src": "794:3:14", "subExpression": { "argumentTypes": null, - "id": 2339, + "id": 2269, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2332, - "src": "794:1:21", + "referencedDeclaration": 2262, + "src": "794:1:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -829,17 +829,17 @@ "typeString": "uint256" } }, - "id": 2341, + "id": 2271, "nodeType": "ExpressionStatement", - "src": "794:3:21" + "src": "794:3:14" }, "nodeType": "ForStatement", - "src": "753:178:21" + "src": "753:178:14" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param accounts List of whitelisted accounts.", - "id": 2363, + "id": 2293, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -847,16 +847,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2326, + "id": 2256, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2325, + "id": 2255, "name": "accounts", "nodeType": "VariableDeclaration", - "scope": 2363, - "src": "682:18:21", + "scope": 2293, + "src": "682:18:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -865,19 +865,19 @@ }, "typeName": { "baseType": { - "id": 2323, + "id": 2253, "name": "address", "nodeType": "ElementaryTypeName", - "src": "682:7:21", + "src": "682:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2324, + "id": 2254, "length": null, "nodeType": "ArrayTypeName", - "src": "682:9:21", + "src": "682:9:14", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -887,26 +887,26 @@ "visibility": "internal" } ], - "src": "681:20:21" + "src": "681:20:14" }, "payable": false, "returnParameters": { - "id": 2327, + "id": 2257, "nodeType": "ParameterList", "parameters": [], - "src": "721:0:21" + "src": "721:0:14" }, - "scope": 2450, - "src": "667:270:21", + "scope": 2381, + "src": "667:270:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2389, + "id": 2319, "nodeType": "Block", - "src": "1165:119:21", + "src": "1165:119:14", "statements": [ { "expression": { @@ -918,19 +918,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2373, + "id": 2303, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2371, + "id": 2301, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2365, - "src": "1183:7:21", + "referencedDeclaration": 2295, + "src": "1183:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -941,14 +941,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2372, + "id": 2302, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1194:1:21", + "src": "1194:1:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -956,7 +956,7 @@ }, "value": "0" }, - "src": "1183:12:21", + "src": "1183:12:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -970,21 +970,21 @@ "typeString": "bool" } ], - "id": 2370, + "id": 2300, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1175:7:21", + "referencedDeclaration": 2399, + "src": "1175:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2374, + "id": 2304, "isConstant": false, "isLValue": false, "isPure": false, @@ -992,15 +992,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1175:21:21", + "src": "1175:21:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2375, + "id": 2305, "nodeType": "ExpressionStatement", - "src": "1175:21:21" + "src": "1175:21:14" }, { "expression": { @@ -1008,7 +1008,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2380, + "id": 2310, "isConstant": false, "isLValue": false, "isPure": false, @@ -1016,31 +1016,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1214:23:21", + "src": "1214:23:14", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2377, + "id": 2307, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "1215:13:21", + "referencedDeclaration": 2252, + "src": "1215:13:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2379, + "id": 2309, "indexExpression": { "argumentTypes": null, - "id": 2378, + "id": 2308, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2365, - "src": "1229:7:21", + "referencedDeclaration": 2295, + "src": "1229:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1051,7 +1051,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1215:22:21", + "src": "1215:22:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1070,21 +1070,21 @@ "typeString": "bool" } ], - "id": 2376, + "id": 2306, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1206:7:21", + "referencedDeclaration": 2399, + "src": "1206:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2381, + "id": 2311, "isConstant": false, "isLValue": false, "isPure": false, @@ -1092,20 +1092,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1206:32:21", + "src": "1206:32:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2382, + "id": 2312, "nodeType": "ExpressionStatement", - "src": "1206:32:21" + "src": "1206:32:14" }, { "expression": { "argumentTypes": null, - "id": 2387, + "id": 2317, "isConstant": false, "isLValue": false, "isPure": false, @@ -1114,26 +1114,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2383, + "id": 2313, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "1248:13:21", + "referencedDeclaration": 2252, + "src": "1248:13:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2385, + "id": 2315, "indexExpression": { "argumentTypes": null, - "id": 2384, + "id": 2314, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2365, - "src": "1262:7:21", + "referencedDeclaration": 2295, + "src": "1262:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1144,7 +1144,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1248:22:21", + "src": "1248:22:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1155,14 +1155,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2386, + "id": 2316, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1273:4:21", + "src": "1273:4:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1170,57 +1170,57 @@ }, "value": "true" }, - "src": "1248:29:21", + "src": "1248:29:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2388, + "id": 2318, "nodeType": "ExpressionStatement", - "src": "1248:29:21" + "src": "1248:29:14" } ] }, "documentation": "@dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2390, + "id": 2320, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2368, + "id": 2298, "modifierName": { "argumentTypes": null, - "id": 2367, + "id": 2297, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 857, - "src": "1150:10:21", + "referencedDeclaration": 601, + "src": "1150:10:14", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1150:10:21" + "src": "1150:10:14" } ], "name": "addToWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2366, + "id": 2296, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2365, + "id": 2295, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2390, - "src": "1110:15:21", + "scope": 2320, + "src": "1110:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1228,10 +1228,10 @@ "typeString": "address" }, "typeName": { - "id": 2364, + "id": 2294, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1110:7:21", + "src": "1110:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1241,26 +1241,26 @@ "visibility": "internal" } ], - "src": "1109:17:21" + "src": "1109:17:14" }, "payable": false, "returnParameters": { - "id": 2369, + "id": 2299, "nodeType": "ParameterList", "parameters": [], - "src": "1165:0:21" + "src": "1165:0:14" }, - "scope": 2450, - "src": "1086:198:21", + "scope": 2381, + "src": "1086:198:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2409, + "id": 2339, "nodeType": "Block", - "src": "1522:88:21", + "src": "1522:88:14", "statements": [ { "expression": { @@ -1270,26 +1270,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2398, + "id": 2328, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "1540:13:21", + "referencedDeclaration": 2252, + "src": "1540:13:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2400, + "id": 2330, "indexExpression": { "argumentTypes": null, - "id": 2399, + "id": 2329, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2392, - "src": "1554:7:21", + "referencedDeclaration": 2322, + "src": "1554:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1300,7 +1300,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1540:22:21", + "src": "1540:22:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1314,21 +1314,21 @@ "typeString": "bool" } ], - "id": 2397, + "id": 2327, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1532:7:21", + "referencedDeclaration": 2399, + "src": "1532:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2401, + "id": 2331, "isConstant": false, "isLValue": false, "isPure": false, @@ -1336,20 +1336,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1532:31:21", + "src": "1532:31:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2402, + "id": 2332, "nodeType": "ExpressionStatement", - "src": "1532:31:21" + "src": "1532:31:14" }, { "expression": { "argumentTypes": null, - "id": 2407, + "id": 2337, "isConstant": false, "isLValue": false, "isPure": false, @@ -1358,26 +1358,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2403, + "id": 2333, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "1573:13:21", + "referencedDeclaration": 2252, + "src": "1573:13:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2405, + "id": 2335, "indexExpression": { "argumentTypes": null, - "id": 2404, + "id": 2334, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2392, - "src": "1587:7:21", + "referencedDeclaration": 2322, + "src": "1587:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1388,7 +1388,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1573:22:21", + "src": "1573:22:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1399,14 +1399,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2406, + "id": 2336, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1598:5:21", + "src": "1598:5:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1414,57 +1414,57 @@ }, "value": "false" }, - "src": "1573:30:21", + "src": "1573:30:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2408, + "id": 2338, "nodeType": "ExpressionStatement", - "src": "1573:30:21" + "src": "1573:30:14" } ] }, "documentation": "@dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2410, + "id": 2340, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2395, + "id": 2325, "modifierName": { "argumentTypes": null, - "id": 2394, + "id": 2324, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 857, - "src": "1507:10:21", + "referencedDeclaration": 601, + "src": "1507:10:14", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1507:10:21" + "src": "1507:10:14" } ], "name": "removeFromWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2393, + "id": 2323, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2392, + "id": 2322, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2410, - "src": "1467:15:21", + "scope": 2340, + "src": "1467:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1472,10 +1472,10 @@ "typeString": "address" }, "typeName": { - "id": 2391, + "id": 2321, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1467:7:21", + "src": "1467:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1485,26 +1485,26 @@ "visibility": "internal" } ], - "src": "1466:17:21" + "src": "1466:17:14" }, "payable": false, "returnParameters": { - "id": 2396, + "id": 2326, "nodeType": "ParameterList", "parameters": [], - "src": "1522:0:21" + "src": "1522:0:14" }, - "scope": 2450, - "src": "1438:172:21", + "scope": 2381, + "src": "1438:172:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2448, + "id": 2379, "nodeType": "Block", - "src": "1973:261:21", + "src": "1973:282:14", "statements": [ { "expression": { @@ -1517,18 +1517,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2426, + "id": 2356, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "2110:3:21", + "referencedDeclaration": 2396, + "src": "2110:3:14", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2427, + "id": 2357, "isConstant": false, "isLValue": false, "isPure": false, @@ -1536,7 +1536,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2110:10:21", + "src": "2110:10:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1555,14 +1555,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2423, + "id": 2353, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "2093:7:21", + "referencedDeclaration": 588, + "src": "2093:7:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } } @@ -1570,22 +1570,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } ], - "id": 2422, + "id": 2352, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1438, - "src": "2080:12:21", + "referencedDeclaration": 1343, + "src": "2080:12:14", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1438_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2424, + "id": 2354, "isConstant": false, "isLValue": false, "isPure": false, @@ -1593,27 +1593,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:21:21", + "src": "2080:21:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1438", + "typeIdentifier": "t_contract$_OwnerManager_$1343", "typeString": "contract OwnerManager" } }, - "id": 2425, + "id": 2355, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1428, - "src": "2080:29:21", + "referencedDeclaration": 1293, + "src": "2080:29:14", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2428, + "id": 2358, "isConstant": false, "isLValue": false, "isPure": false, @@ -1621,7 +1621,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:41:21", + "src": "2080:41:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1635,21 +1635,21 @@ "typeString": "bool" } ], - "id": 2421, + "id": 2351, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2072:7:21", + "referencedDeclaration": 2399, + "src": "2072:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2429, + "id": 2359, "isConstant": false, "isLValue": false, "isPure": false, @@ -1657,15 +1657,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2072:50:21", + "src": "2072:50:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2430, + "id": 2360, "nodeType": "ExpressionStatement", - "src": "2072:50:21" + "src": "2072:50:14" }, { "expression": { @@ -1675,26 +1675,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2432, + "id": 2362, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "2140:13:21", + "referencedDeclaration": 2252, + "src": "2140:13:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2434, + "id": 2364, "indexExpression": { "argumentTypes": null, - "id": 2433, + "id": 2363, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2412, - "src": "2154:2:21", + "referencedDeclaration": 2342, + "src": "2154:2:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1705,7 +1705,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2140:17:21", + "src": "2140:17:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1719,21 +1719,21 @@ "typeString": "bool" } ], - "id": 2431, + "id": 2361, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2132:7:21", + "referencedDeclaration": 2399, + "src": "2132:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2435, + "id": 2365, "isConstant": false, "isLValue": false, "isPure": false, @@ -1741,15 +1741,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2132:26:21", + "src": "2132:26:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2436, + "id": 2366, "nodeType": "ExpressionStatement", - "src": "2132:26:21" + "src": "2132:26:14" }, { "expression": { @@ -1757,136 +1757,175 @@ "arguments": [ { "argumentTypes": null, - "id": 2440, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2412, - "src": "2190:2:21", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 2441, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2414, - "src": "2194:5:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 2442, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2416, - "src": "2201:4:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { + "arguments": [ + { "argumentTypes": null, - "id": 2443, - "name": "Enum", + "id": 2370, + "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 30, - "src": "2207:4:21", + "referencedDeclaration": 2342, + "src": "2210:2:14", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", - "typeString": "type(contract Enum)" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 2444, + { + "argumentTypes": null, + "id": 2371, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2344, + "src": "2214:5:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2372, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2346, + "src": "2221:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2373, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6, + "src": "2227:4:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeString": "type(contract Enum)" + } + }, + "id": 2374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 5, + "src": "2227:14:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 2375, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2227:19:14", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 2368, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "2176:7:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" + } + }, + "id": 2369, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "Operation", + "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "2207:14:21", + "referencedDeclaration": 798, + "src": "2176:33:14", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", - "typeString": "type(enum Enum.Operation)" + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2445, + "id": 2376, "isConstant": false, "isLValue": false, - "isPure": true, + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2207:19:21", + "names": [], + "nodeType": "FunctionCall", + "src": "2176:71:14", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" + "typeIdentifier": "t_bool", + "typeString": "bool" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" + "typeIdentifier": "t_bool", + "typeString": "bool" } ], - "expression": { - "argumentTypes": null, - "id": 2437, - "name": "manager", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "2168:7:21", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", - "typeString": "contract ModuleManager" - } - }, - "id": 2439, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "executeModule", - "nodeType": "MemberAccess", - "referencedDeclaration": 1033, - "src": "2168:21:21", + "id": 2367, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "2168:7:14", "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)" + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" } }, - "id": 2446, + "id": 2377, "isConstant": false, "isLValue": false, "isPure": false, @@ -1894,20 +1933,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2168:59:21", + "src": "2168:80:14", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 2447, + "id": 2378, "nodeType": "ExpressionStatement", - "src": "2168:59:21" + "src": "2168:80:14" } ] }, "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": 2449, + "id": 2380, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1915,16 +1954,16 @@ "name": "executeWhitelisted", "nodeType": "FunctionDefinition", "parameters": { - "id": 2417, + "id": 2347, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2412, + "id": 2342, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2449, - "src": "1892:10:21", + "scope": 2380, + "src": "1892:10:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1932,10 +1971,10 @@ "typeString": "address" }, "typeName": { - "id": 2411, + "id": 2341, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1892:7:21", + "src": "1892:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1946,11 +1985,11 @@ }, { "constant": false, - "id": 2414, + "id": 2344, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2449, - "src": "1904:13:21", + "scope": 2380, + "src": "1904:13:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1958,10 +1997,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2413, + "id": 2343, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1904:7:21", + "src": "1904:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1972,11 +2011,11 @@ }, { "constant": false, - "id": 2416, + "id": 2346, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2449, - "src": "1919:10:21", + "scope": 2380, + "src": "1919:10:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1984,10 +2023,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2415, + "id": 2345, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1919:5:21", + "src": "1919:5:14", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1997,20 +2036,20 @@ "visibility": "internal" } ], - "src": "1891:39:21" + "src": "1891:39:14" }, "payable": false, "returnParameters": { - "id": 2420, + "id": 2350, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2419, + "id": 2349, "name": "", "nodeType": "VariableDeclaration", - "scope": 2449, - "src": "1963:4:21", + "scope": 2380, + "src": "1963:4:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2018,10 +2057,10 @@ "typeString": "bool" }, "typeName": { - "id": 2418, + "id": 2348, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1963:4:21", + "src": "1963:4:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2031,82 +2070,82 @@ "visibility": "internal" } ], - "src": "1962:6:21" + "src": "1962:6:14" }, - "scope": 2450, - "src": "1864:370:21", + "scope": 2381, + "src": "1864:391:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 2451, - "src": "289:1947:21" + "scope": 2382, + "src": "289:1968:14" } ], - "src": "0:2237:21" + "src": "0:2258:14" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", "exportedSymbols": { "WhitelistModule": [ - 2450 + 2381 ] }, - "id": 2451, + "id": 2382, "nodeType": "SourceUnit", "nodes": [ { - "id": 2306, + "id": 2236, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:21" + "src": "0:23:14" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 2307, + "id": 2237, "nodeType": "ImportDirective", - "scope": 2451, - "sourceUnit": 31, - "src": "24:21:21", + "scope": 2382, + "sourceUnit": 7, + "src": "24:21:14", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2308, + "id": 2238, "nodeType": "ImportDirective", - "scope": 2451, - "sourceUnit": 878, - "src": "46:23:21", + "scope": 2382, + "sourceUnit": 622, + "src": "46:23:14", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 2309, + "id": 2239, "nodeType": "ImportDirective", - "scope": 2451, - "sourceUnit": 1143, - "src": "70:30:21", + "scope": 2382, + "sourceUnit": 972, + "src": "70:30:14", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2310, + "id": 2240, "nodeType": "ImportDirective", - "scope": 2451, - "sourceUnit": 1439, - "src": "101:29:21", + "scope": 2382, + "sourceUnit": 1344, + "src": "101:29:14", "symbolAliases": [], "unitAlias": "" }, @@ -2116,46 +2155,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2311, + "id": 2241, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "317:6:21", + "referencedDeclaration": 621, + "src": "317:6:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", + "typeIdentifier": "t_contract$_Module_$621", "typeString": "contract Module" } }, - "id": 2312, + "id": 2242, "nodeType": "InheritanceSpecifier", - "src": "317:6:21" + "src": "317:6:14" } ], "contractDependencies": [ - 779, - 877, - 1559 + 580, + 621, + 1359 ], "contractKind": "contract", "documentation": "@title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2450, + "id": 2381, "linearizedBaseContracts": [ - 2450, - 877, - 779, - 1559 + 2381, + 621, + 580, + 1359 ], "name": "WhitelistModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2315, + "id": 2245, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2450, - "src": "331:48:21", + "scope": 2381, + "src": "331:48:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2163,10 +2202,10 @@ "typeString": "string" }, "typeName": { - "id": 2313, + "id": 2243, "name": "string", "nodeType": "ElementaryTypeName", - "src": "331:6:21", + "src": "331:6:14", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2175,14 +2214,14 @@ "value": { "argumentTypes": null, "hexValue": "57686974656c697374204d6f64756c65", - "id": 2314, + "id": 2244, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "361:18:21", + "src": "361:18:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_84d69d03a7c747e8eefe7cc2b9e87b566cfc57cc90e4ed88f03f9c9780b7d4e6", @@ -2194,11 +2233,11 @@ }, { "constant": true, - "id": 2318, + "id": 2248, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2450, - "src": "385:40:21", + "scope": 2381, + "src": "385:40:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2206,10 +2245,10 @@ "typeString": "string" }, "typeName": { - "id": 2316, + "id": 2246, "name": "string", "nodeType": "ElementaryTypeName", - "src": "385:6:21", + "src": "385:6:14", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2218,14 +2257,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2317, + "id": 2247, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "418:7:21", + "src": "418:7:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -2237,11 +2276,11 @@ }, { "constant": false, - "id": 2322, + "id": 2252, "name": "isWhitelisted", "nodeType": "VariableDeclaration", - "scope": 2450, - "src": "498:46:21", + "scope": 2381, + "src": "498:46:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2249,28 +2288,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 2321, + "id": 2251, "keyType": { - "id": 2319, + "id": 2249, "name": "address", "nodeType": "ElementaryTypeName", - "src": "507:7:21", + "src": "507:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "498:25:21", + "src": "498:25:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2320, + "id": 2250, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "518:4:21", + "src": "518:4:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2282,9 +2321,9 @@ }, { "body": { - "id": 2362, + "id": 2292, "nodeType": "Block", - "src": "721:216:21", + "src": "721:216:14", "statements": [ { "expression": { @@ -2292,18 +2331,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2328, + "id": 2258, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 876, - "src": "731:10:21", + "referencedDeclaration": 620, + "src": "731:10:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2329, + "id": 2259, "isConstant": false, "isLValue": false, "isPure": false, @@ -2311,34 +2350,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "731:12:21", + "src": "731:12:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2330, + "id": 2260, "nodeType": "ExpressionStatement", - "src": "731:12:21" + "src": "731:12:14" }, { "body": { - "id": 2360, + "id": 2290, "nodeType": "Block", - "src": "799:132:21", + "src": "799:132:14", "statements": [ { "assignments": [ - 2343 + 2273 ], "declarations": [ { "constant": false, - "id": 2343, + "id": 2273, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2363, - "src": "813:15:21", + "scope": 2293, + "src": "813:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2346,10 +2385,10 @@ "typeString": "address" }, "typeName": { - "id": 2342, + "id": 2272, "name": "address", "nodeType": "ElementaryTypeName", - "src": "813:7:21", + "src": "813:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2359,31 +2398,31 @@ "visibility": "internal" } ], - "id": 2347, + "id": 2277, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2344, + "id": 2274, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2325, - "src": "831:8:21", + "referencedDeclaration": 2255, + "src": "831:8:14", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2346, + "id": 2276, "indexExpression": { "argumentTypes": null, - "id": 2345, + "id": 2275, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2332, - "src": "840:1:21", + "referencedDeclaration": 2262, + "src": "840:1:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2394,14 +2433,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "831:11:21", + "src": "831:11:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "813:29:21" + "src": "813:29:14" }, { "expression": { @@ -2413,19 +2452,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2351, + "id": 2281, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2349, + "id": 2279, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2343, - "src": "864:7:21", + "referencedDeclaration": 2273, + "src": "864:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2436,14 +2475,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2350, + "id": 2280, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "875:1:21", + "src": "875:1:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2451,7 +2490,7 @@ }, "value": "0" }, - "src": "864:12:21", + "src": "864:12:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2465,21 +2504,21 @@ "typeString": "bool" } ], - "id": 2348, + "id": 2278, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "856:7:21", + "referencedDeclaration": 2399, + "src": "856:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2352, + "id": 2282, "isConstant": false, "isLValue": false, "isPure": false, @@ -2487,20 +2526,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "856:21:21", + "src": "856:21:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2353, + "id": 2283, "nodeType": "ExpressionStatement", - "src": "856:21:21" + "src": "856:21:14" }, { "expression": { "argumentTypes": null, - "id": 2358, + "id": 2288, "isConstant": false, "isLValue": false, "isPure": false, @@ -2509,26 +2548,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2354, + "id": 2284, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "891:13:21", + "referencedDeclaration": 2252, + "src": "891:13:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2356, + "id": 2286, "indexExpression": { "argumentTypes": null, - "id": 2355, + "id": 2285, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2343, - "src": "905:7:21", + "referencedDeclaration": 2273, + "src": "905:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2539,7 +2578,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "891:22:21", + "src": "891:22:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2550,14 +2589,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2357, + "id": 2287, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "916:4:21", + "src": "916:4:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2565,15 +2604,15 @@ }, "value": "true" }, - "src": "891:29:21", + "src": "891:29:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2359, + "id": 2289, "nodeType": "ExpressionStatement", - "src": "891:29:21" + "src": "891:29:14" } ] }, @@ -2583,19 +2622,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2338, + "id": 2268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2335, + "id": 2265, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2332, - "src": "773:1:21", + "referencedDeclaration": 2262, + "src": "773:1:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2607,18 +2646,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2336, + "id": 2266, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2325, - "src": "777:8:21", + "referencedDeclaration": 2255, + "src": "777:8:14", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2337, + "id": 2267, "isConstant": false, "isLValue": false, "isPure": false, @@ -2626,31 +2665,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "777:15:21", + "src": "777:15:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "773:19:21", + "src": "773:19:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2361, + "id": 2291, "initializationExpression": { "assignments": [ - 2332 + 2262 ], "declarations": [ { "constant": false, - "id": 2332, + "id": 2262, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2363, - "src": "758:9:21", + "scope": 2293, + "src": "758:9:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2658,10 +2697,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2331, + "id": 2261, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "758:7:21", + "src": "758:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2671,18 +2710,18 @@ "visibility": "internal" } ], - "id": 2334, + "id": 2264, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2333, + "id": 2263, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "770:1:21", + "src": "770:1:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2691,12 +2730,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "758:13:21" + "src": "758:13:14" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2340, + "id": 2270, "isConstant": false, "isLValue": false, "isPure": false, @@ -2704,15 +2743,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "794:3:21", + "src": "794:3:14", "subExpression": { "argumentTypes": null, - "id": 2339, + "id": 2269, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2332, - "src": "794:1:21", + "referencedDeclaration": 2262, + "src": "794:1:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2723,17 +2762,17 @@ "typeString": "uint256" } }, - "id": 2341, + "id": 2271, "nodeType": "ExpressionStatement", - "src": "794:3:21" + "src": "794:3:14" }, "nodeType": "ForStatement", - "src": "753:178:21" + "src": "753:178:14" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param accounts List of whitelisted accounts.", - "id": 2363, + "id": 2293, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2741,16 +2780,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2326, + "id": 2256, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2325, + "id": 2255, "name": "accounts", "nodeType": "VariableDeclaration", - "scope": 2363, - "src": "682:18:21", + "scope": 2293, + "src": "682:18:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2759,19 +2798,19 @@ }, "typeName": { "baseType": { - "id": 2323, + "id": 2253, "name": "address", "nodeType": "ElementaryTypeName", - "src": "682:7:21", + "src": "682:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2324, + "id": 2254, "length": null, "nodeType": "ArrayTypeName", - "src": "682:9:21", + "src": "682:9:14", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -2781,26 +2820,26 @@ "visibility": "internal" } ], - "src": "681:20:21" + "src": "681:20:14" }, "payable": false, "returnParameters": { - "id": 2327, + "id": 2257, "nodeType": "ParameterList", "parameters": [], - "src": "721:0:21" + "src": "721:0:14" }, - "scope": 2450, - "src": "667:270:21", + "scope": 2381, + "src": "667:270:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2389, + "id": 2319, "nodeType": "Block", - "src": "1165:119:21", + "src": "1165:119:14", "statements": [ { "expression": { @@ -2812,19 +2851,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2373, + "id": 2303, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2371, + "id": 2301, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2365, - "src": "1183:7:21", + "referencedDeclaration": 2295, + "src": "1183:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2835,14 +2874,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2372, + "id": 2302, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1194:1:21", + "src": "1194:1:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2850,7 +2889,7 @@ }, "value": "0" }, - "src": "1183:12:21", + "src": "1183:12:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2864,21 +2903,21 @@ "typeString": "bool" } ], - "id": 2370, + "id": 2300, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1175:7:21", + "referencedDeclaration": 2399, + "src": "1175:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2374, + "id": 2304, "isConstant": false, "isLValue": false, "isPure": false, @@ -2886,15 +2925,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1175:21:21", + "src": "1175:21:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2375, + "id": 2305, "nodeType": "ExpressionStatement", - "src": "1175:21:21" + "src": "1175:21:14" }, { "expression": { @@ -2902,7 +2941,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2380, + "id": 2310, "isConstant": false, "isLValue": false, "isPure": false, @@ -2910,31 +2949,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1214:23:21", + "src": "1214:23:14", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2377, + "id": 2307, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "1215:13:21", + "referencedDeclaration": 2252, + "src": "1215:13:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2379, + "id": 2309, "indexExpression": { "argumentTypes": null, - "id": 2378, + "id": 2308, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2365, - "src": "1229:7:21", + "referencedDeclaration": 2295, + "src": "1229:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2945,7 +2984,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1215:22:21", + "src": "1215:22:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2964,21 +3003,21 @@ "typeString": "bool" } ], - "id": 2376, + "id": 2306, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1206:7:21", + "referencedDeclaration": 2399, + "src": "1206:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2381, + "id": 2311, "isConstant": false, "isLValue": false, "isPure": false, @@ -2986,20 +3025,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1206:32:21", + "src": "1206:32:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2382, + "id": 2312, "nodeType": "ExpressionStatement", - "src": "1206:32:21" + "src": "1206:32:14" }, { "expression": { "argumentTypes": null, - "id": 2387, + "id": 2317, "isConstant": false, "isLValue": false, "isPure": false, @@ -3008,26 +3047,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2383, + "id": 2313, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "1248:13:21", + "referencedDeclaration": 2252, + "src": "1248:13:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2385, + "id": 2315, "indexExpression": { "argumentTypes": null, - "id": 2384, + "id": 2314, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2365, - "src": "1262:7:21", + "referencedDeclaration": 2295, + "src": "1262:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3038,7 +3077,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1248:22:21", + "src": "1248:22:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3049,14 +3088,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2386, + "id": 2316, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1273:4:21", + "src": "1273:4:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3064,57 +3103,57 @@ }, "value": "true" }, - "src": "1248:29:21", + "src": "1248:29:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2388, + "id": 2318, "nodeType": "ExpressionStatement", - "src": "1248:29:21" + "src": "1248:29:14" } ] }, "documentation": "@dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2390, + "id": 2320, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2368, + "id": 2298, "modifierName": { "argumentTypes": null, - "id": 2367, + "id": 2297, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 857, - "src": "1150:10:21", + "referencedDeclaration": 601, + "src": "1150:10:14", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1150:10:21" + "src": "1150:10:14" } ], "name": "addToWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2366, + "id": 2296, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2365, + "id": 2295, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2390, - "src": "1110:15:21", + "scope": 2320, + "src": "1110:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3122,10 +3161,10 @@ "typeString": "address" }, "typeName": { - "id": 2364, + "id": 2294, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1110:7:21", + "src": "1110:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3135,26 +3174,26 @@ "visibility": "internal" } ], - "src": "1109:17:21" + "src": "1109:17:14" }, "payable": false, "returnParameters": { - "id": 2369, + "id": 2299, "nodeType": "ParameterList", "parameters": [], - "src": "1165:0:21" + "src": "1165:0:14" }, - "scope": 2450, - "src": "1086:198:21", + "scope": 2381, + "src": "1086:198:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2409, + "id": 2339, "nodeType": "Block", - "src": "1522:88:21", + "src": "1522:88:14", "statements": [ { "expression": { @@ -3164,26 +3203,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2398, + "id": 2328, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "1540:13:21", + "referencedDeclaration": 2252, + "src": "1540:13:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2400, + "id": 2330, "indexExpression": { "argumentTypes": null, - "id": 2399, + "id": 2329, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2392, - "src": "1554:7:21", + "referencedDeclaration": 2322, + "src": "1554:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3194,7 +3233,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1540:22:21", + "src": "1540:22:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3208,21 +3247,21 @@ "typeString": "bool" } ], - "id": 2397, + "id": 2327, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "1532:7:21", + "referencedDeclaration": 2399, + "src": "1532:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2401, + "id": 2331, "isConstant": false, "isLValue": false, "isPure": false, @@ -3230,20 +3269,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1532:31:21", + "src": "1532:31:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2402, + "id": 2332, "nodeType": "ExpressionStatement", - "src": "1532:31:21" + "src": "1532:31:14" }, { "expression": { "argumentTypes": null, - "id": 2407, + "id": 2337, "isConstant": false, "isLValue": false, "isPure": false, @@ -3252,26 +3291,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2403, + "id": 2333, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "1573:13:21", + "referencedDeclaration": 2252, + "src": "1573:13:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2405, + "id": 2335, "indexExpression": { "argumentTypes": null, - "id": 2404, + "id": 2334, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2392, - "src": "1587:7:21", + "referencedDeclaration": 2322, + "src": "1587:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3282,7 +3321,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1573:22:21", + "src": "1573:22:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3293,14 +3332,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2406, + "id": 2336, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1598:5:21", + "src": "1598:5:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3308,57 +3347,57 @@ }, "value": "false" }, - "src": "1573:30:21", + "src": "1573:30:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2408, + "id": 2338, "nodeType": "ExpressionStatement", - "src": "1573:30:21" + "src": "1573:30:14" } ] }, "documentation": "@dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2410, + "id": 2340, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2395, + "id": 2325, "modifierName": { "argumentTypes": null, - "id": 2394, + "id": 2324, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 857, - "src": "1507:10:21", + "referencedDeclaration": 601, + "src": "1507:10:14", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1507:10:21" + "src": "1507:10:14" } ], "name": "removeFromWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2393, + "id": 2323, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2392, + "id": 2322, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2410, - "src": "1467:15:21", + "scope": 2340, + "src": "1467:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3366,10 +3405,10 @@ "typeString": "address" }, "typeName": { - "id": 2391, + "id": 2321, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1467:7:21", + "src": "1467:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3379,26 +3418,26 @@ "visibility": "internal" } ], - "src": "1466:17:21" + "src": "1466:17:14" }, "payable": false, "returnParameters": { - "id": 2396, + "id": 2326, "nodeType": "ParameterList", "parameters": [], - "src": "1522:0:21" + "src": "1522:0:14" }, - "scope": 2450, - "src": "1438:172:21", + "scope": 2381, + "src": "1438:172:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2448, + "id": 2379, "nodeType": "Block", - "src": "1973:261:21", + "src": "1973:282:14", "statements": [ { "expression": { @@ -3411,18 +3450,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2426, + "id": 2356, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "2110:3:21", + "referencedDeclaration": 2396, + "src": "2110:3:14", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2427, + "id": 2357, "isConstant": false, "isLValue": false, "isPure": false, @@ -3430,7 +3469,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2110:10:21", + "src": "2110:10:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3449,14 +3488,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2423, + "id": 2353, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "2093:7:21", + "referencedDeclaration": 588, + "src": "2093:7:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } } @@ -3464,22 +3503,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeIdentifier": "t_contract$_ModuleManager_$971", "typeString": "contract ModuleManager" } ], - "id": 2422, + "id": 2352, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1438, - "src": "2080:12:21", + "referencedDeclaration": 1343, + "src": "2080:12:14", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1438_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2424, + "id": 2354, "isConstant": false, "isLValue": false, "isPure": false, @@ -3487,27 +3526,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:21:21", + "src": "2080:21:14", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1438", + "typeIdentifier": "t_contract$_OwnerManager_$1343", "typeString": "contract OwnerManager" } }, - "id": 2425, + "id": 2355, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1428, - "src": "2080:29:21", + "referencedDeclaration": 1293, + "src": "2080:29:14", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2428, + "id": 2358, "isConstant": false, "isLValue": false, "isPure": false, @@ -3515,7 +3554,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:41:21", + "src": "2080:41:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3529,21 +3568,21 @@ "typeString": "bool" } ], - "id": 2421, + "id": 2351, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2072:7:21", + "referencedDeclaration": 2399, + "src": "2072:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2429, + "id": 2359, "isConstant": false, "isLValue": false, "isPure": false, @@ -3551,15 +3590,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2072:50:21", + "src": "2072:50:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2430, + "id": 2360, "nodeType": "ExpressionStatement", - "src": "2072:50:21" + "src": "2072:50:14" }, { "expression": { @@ -3569,26 +3608,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2432, + "id": 2362, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "2140:13:21", + "referencedDeclaration": 2252, + "src": "2140:13:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2434, + "id": 2364, "indexExpression": { "argumentTypes": null, - "id": 2433, + "id": 2363, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2412, - "src": "2154:2:21", + "referencedDeclaration": 2342, + "src": "2154:2:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3599,7 +3638,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2140:17:21", + "src": "2140:17:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3613,21 +3652,21 @@ "typeString": "bool" } ], - "id": 2431, + "id": 2361, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2399, + 2400 ], - "referencedDeclaration": 2468, - "src": "2132:7:21", + "referencedDeclaration": 2399, + "src": "2132:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2435, + "id": 2365, "isConstant": false, "isLValue": false, "isPure": false, @@ -3635,15 +3674,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2132:26:21", + "src": "2132:26:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2436, + "id": 2366, "nodeType": "ExpressionStatement", - "src": "2132:26:21" + "src": "2132:26:14" }, { "expression": { @@ -3651,136 +3690,175 @@ "arguments": [ { "argumentTypes": null, - "id": 2440, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2412, - "src": "2190:2:21", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 2441, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2414, - "src": "2194:5:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 2442, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2416, - "src": "2201:4:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { + "arguments": [ + { "argumentTypes": null, - "id": 2443, - "name": "Enum", + "id": 2370, + "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 30, - "src": "2207:4:21", + "referencedDeclaration": 2342, + "src": "2210:2:14", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", - "typeString": "type(contract Enum)" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 2444, + { + "argumentTypes": null, + "id": 2371, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2344, + "src": "2214:5:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2372, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2346, + "src": "2221:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2373, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6, + "src": "2227:4:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeString": "type(contract Enum)" + } + }, + "id": 2374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 5, + "src": "2227:14:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 2375, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2227:19:14", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$5", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 2368, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "2176:7:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeString": "contract ModuleManager" + } + }, + "id": 2369, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "Operation", + "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 29, - "src": "2207:14:21", + "referencedDeclaration": 798, + "src": "2176:33:14", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", - "typeString": "type(enum Enum.Operation)" + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2445, + "id": 2376, "isConstant": false, "isLValue": false, - "isPure": true, + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2207:19:21", + "names": [], + "nodeType": "FunctionCall", + "src": "2176:71:14", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" + "typeIdentifier": "t_bool", + "typeString": "bool" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" + "typeIdentifier": "t_bool", + "typeString": "bool" } ], - "expression": { - "argumentTypes": null, - "id": 2437, - "name": "manager", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "2168:7:21", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1142", - "typeString": "contract ModuleManager" - } - }, - "id": 2439, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "executeModule", - "nodeType": "MemberAccess", - "referencedDeclaration": 1033, - "src": "2168:21:21", + "id": 2367, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2399, + 2400 + ], + "referencedDeclaration": 2399, + "src": "2168:7:14", "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)" + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" } }, - "id": 2446, + "id": 2377, "isConstant": false, "isLValue": false, "isPure": false, @@ -3788,20 +3866,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2168:59:21", + "src": "2168:80:14", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 2447, + "id": 2378, "nodeType": "ExpressionStatement", - "src": "2168:59:21" + "src": "2168:80:14" } ] }, "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": 2449, + "id": 2380, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3809,16 +3887,16 @@ "name": "executeWhitelisted", "nodeType": "FunctionDefinition", "parameters": { - "id": 2417, + "id": 2347, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2412, + "id": 2342, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2449, - "src": "1892:10:21", + "scope": 2380, + "src": "1892:10:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3826,10 +3904,10 @@ "typeString": "address" }, "typeName": { - "id": 2411, + "id": 2341, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1892:7:21", + "src": "1892:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3840,11 +3918,11 @@ }, { "constant": false, - "id": 2414, + "id": 2344, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2449, - "src": "1904:13:21", + "scope": 2380, + "src": "1904:13:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3852,10 +3930,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2413, + "id": 2343, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1904:7:21", + "src": "1904:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3866,11 +3944,11 @@ }, { "constant": false, - "id": 2416, + "id": 2346, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2449, - "src": "1919:10:21", + "scope": 2380, + "src": "1919:10:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3878,10 +3956,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2415, + "id": 2345, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1919:5:21", + "src": "1919:5:14", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3891,20 +3969,20 @@ "visibility": "internal" } ], - "src": "1891:39:21" + "src": "1891:39:14" }, "payable": false, "returnParameters": { - "id": 2420, + "id": 2350, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2419, + "id": 2349, "name": "", "nodeType": "VariableDeclaration", - "scope": 2449, - "src": "1963:4:21", + "scope": 2380, + "src": "1963:4:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3912,10 +3990,10 @@ "typeString": "bool" }, "typeName": { - "id": 2418, + "id": 2348, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1963:4:21", + "src": "1963:4:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3925,20 +4003,20 @@ "visibility": "internal" } ], - "src": "1962:6:21" + "src": "1962:6:14" }, - "scope": 2450, - "src": "1864:370:21", + "scope": 2381, + "src": "1864:391:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 2451, - "src": "289:1947:21" + "scope": 2382, + "src": "289:1968:14" } ], - "src": "0:2237:21" + "src": "0:2258:14" }, "compiler": { "name": "solc", @@ -3948,8 +4026,8 @@ "4": { "events": {}, "links": {}, - "address": "0x24d0b7e09df660a37cdcf7745a66099ba6f2e304", - "transactionHash": "0xe045ab6835acf1d5eb2146cea094d790127f84db7cd961f44b8e25883567cd75" + "address": "0x4e2dfbbb0f2b3225fdcdec7e05dcd92c92832fbd", + "transactionHash": "0x1b787034883e27a45b7b9a90b77670ef807701894a32904f573a60b666b3bd94" }, "1525950336085": { "events": {}, @@ -3962,8 +4040,14 @@ "links": {}, "address": "0x536f677993e3eada3e17f2f42888ee777441fc3e", "transactionHash": "0xc7f84311daf6a72740fe5822cd6007cec3ce1ff6aeaf454559f3e5f36c81cfd8" + }, + "1526478212260": { + "events": {}, + "links": {}, + "address": "0x5fde4f39a944859214e24311ad809166d35b2595", + "transactionHash": "0xe8e4d24799a8b74210c07b7faa44968bece2c73df692920f7af75181654e10f2" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-14T07:39:37.968Z" + "updatedAt": "2018-05-16T13:45:24.529Z" } \ No newline at end of file diff --git a/src/components/Stepper/Controls/index.jsx b/src/components/Stepper/Controls/index.jsx index c868fbc2..ebcbd2cf 100644 --- a/src/components/Stepper/Controls/index.jsx +++ b/src/components/Stepper/Controls/index.jsx @@ -1,34 +1,6 @@ // @flow import * as React from 'react' import Button from '~/components/layout/Button' -import Link from '~/components/layout/Link' - -type NextButtonProps = { - text: string, - disabled: boolean, -} - -const NextButton = ({ text, disabled }: NextButtonProps) => ( - -) - -type GoProps = { - title: string, - to: string, -} - -const GoButton = ({ title, to }: GoProps) => ( - - - -) type ControlProps = { next: string, @@ -48,34 +20,37 @@ const ControlButtons = ({ > Back - + ) type Props = { finishedTx: boolean, + finishedButton: React$Node, onPrevious: () => void, firstPage: boolean, lastPage: boolean, submitting: boolean, - goTitle: string, - goPath: string, } const Controls = ({ - finishedTx, onPrevious, firstPage, lastPage, submitting, goTitle, goPath, + finishedTx, finishedButton, onPrevious, firstPage, lastPage, submitting, }: Props) => ( - - { finishedTx - ? - : - } - + finishedTx + ? {finishedButton} + : ) export default Controls diff --git a/src/components/Stepper/index.jsx b/src/components/Stepper/index.jsx index cb5a3899..5f90792a 100644 --- a/src/components/Stepper/index.jsx +++ b/src/components/Stepper/index.jsx @@ -4,6 +4,7 @@ import { withStyles } from 'material-ui/styles' import * as React from 'react' import type { FormApi } from 'react-final-form' import GnoForm from '~/components/forms/GnoForm' +import Button from '~/components/layout/Button' import Col from '~/components/layout/Col' import Row from '~/components/layout/Row' import Controls from './Controls' @@ -12,12 +13,12 @@ export { default as Step } from './Step' type Props = { classes: Object, - goTitle: string, - goPath: string, steps: string[], finishedTransaction: boolean, + finishedButton: React$Node, initialValues?: Object, children: React$Node, + onReset?: () => void, onSubmit: (values: Object, form: FormApi, callback: ?(errors: ?Object) => void) => ?Object | Promise | void, } @@ -33,6 +34,13 @@ type PageProps = { class GnoStepper extends React.PureComponent { static Page = ({ children }: PageProps) => children + static FinishButton = ({ + component, to, title, ...props + }) => ( + + ) constructor(props: Props) { super(props) @@ -42,6 +50,17 @@ class GnoStepper extends React.PureComponent { } } + onReset = () => { + const resetCallback = this.props.onReset + if (resetCallback) { + resetCallback() + } + this.setState(() => ({ + page: 0, + values: this.props.initialValues || {}, + })) + } + getActivePageFrom = (pages: React$Node) => { const activePageProps = React.Children.toArray(pages)[this.state.page].props const { children, ...props } = activePageProps @@ -80,11 +99,12 @@ class GnoStepper extends React.PureComponent { render() { const { - steps, children, finishedTransaction, goTitle, goPath, classes, + steps, children, finishedTransaction, finishedButton, classes, } = this.props const { page, values } = this.state const activePage = this.getActivePageFrom(children) const isLastPage = page === steps.length - 1 + const finished = React.cloneElement(React.Children.only(finishedButton), { onClick: this.onReset }) return ( @@ -108,11 +128,10 @@ class GnoStepper extends React.PureComponent { diff --git a/src/routes/open/components/Layout.jsx b/src/routes/open/components/Layout.jsx index 25a67233..44f8620b 100644 --- a/src/routes/open/components/Layout.jsx +++ b/src/routes/open/components/Layout.jsx @@ -6,6 +6,7 @@ import Confirmation from '~/routes/open/components/FormConfirmation' import Review from '~/routes/open/components/ReviewInformation' import SafeFields, { safeFieldsValidation } from '~/routes/open/components/SafeForm' import { SAFELIST_ADDRESS } from '~/routes/routes' +import Link from '~/components/layout/Link' const getSteps = () => [ 'Fill Safe Form', 'Review Information', 'Deploy it', @@ -29,16 +30,16 @@ const Layout = ({ }: Props) => { const steps = getSteps() const initialValues = initialValuesFrom(userAccount) + const finishedButton = return ( { provider ? ( diff --git a/src/routes/safe/component/Safe.test.js b/src/routes/safe/component/Safe.test.js index 7666312c..db340248 100644 --- a/src/routes/safe/component/Safe.test.js +++ b/src/routes/safe/component/Safe.test.js @@ -15,6 +15,7 @@ import WithdrawnComponent, { SEE_TXS_BUTTON_TEXT } from '~/routes/safe/component import { getBalanceInEtherOf } from '~/wallets/getWeb3' import { sleep } from '~/utils/timer' import { getDailyLimitFrom } from '~/routes/safe/component/Withdrawn/withdrawn' +import { type DailyLimitProps } from '~/routes/safe/store/model/dailyLimit' describe('React DOM TESTS > Withdrawn funds from safe', () => { let SafeDom diff --git a/src/routes/safe/component/Safe/DailyLimit.jsx b/src/routes/safe/component/Safe/DailyLimit.jsx index 9e381664..9be98714 100644 --- a/src/routes/safe/component/Safe/DailyLimit.jsx +++ b/src/routes/safe/component/Safe/DailyLimit.jsx @@ -5,6 +5,7 @@ import Avatar from 'material-ui/Avatar' import NotificationsPaused from 'material-ui-icons/NotificationsPaused' import Button from '~/components/layout/Button' import ListItemText from '~/components/List/ListItemText' +import { type DailyLimit } from '~/routes/safe/store/model/dailyLimit' type Props = { dailyLimit: DailyLimit, diff --git a/src/routes/safe/component/Withdrawn/WithdrawnForm/WithdrawnForm.stories.js b/src/routes/safe/component/Withdrawn/WithdrawnForm/WithdrawnForm.stories.js index 28b63b1a..88ae93de 100644 --- a/src/routes/safe/component/Withdrawn/WithdrawnForm/WithdrawnForm.stories.js +++ b/src/routes/safe/component/Withdrawn/WithdrawnForm/WithdrawnForm.stories.js @@ -1,9 +1,9 @@ // @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 { makeDailyLimit, type DailyLimit } from '~/routes/safe/store/model/dailyLimit' -import Component from './index' +import WithdrawnForm from './index' const FrameDecorator = story => ( @@ -14,10 +14,8 @@ const FrameDecorator = story => ( storiesOf('Components', module) .addDecorator(FrameDecorator) - .add('WitdrawnForm', () => { - const dailyLimit: DailyLimit = makeDailyLimit({ value: 10, spentToday: 6 }) - - return ( - - ) - }) + .add('WitdrawnForm', () => ( + + { WithdrawnForm } + + )) diff --git a/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx b/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx index a3767d09..86998726 100644 --- a/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx +++ b/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx @@ -34,7 +34,7 @@ export const inLimit = (limit: number, spentToday: number) => (value: string) => return `Should not exceed ${max} ETH (amount to reach daily limit)` } -export default ({ limit, spentToday }: Props) => () => ( +const WithdrawnForm = ({ limit, spentToday }: Props) => () => ( Withdrawn Funds @@ -65,3 +65,4 @@ export default ({ limit, spentToday }: Props) => () => ( ) +export default WithdrawnForm diff --git a/src/routes/safe/component/Withdrawn/index.jsx b/src/routes/safe/component/Withdrawn/index.jsx index 04a39363..c6ddba18 100644 --- a/src/routes/safe/component/Withdrawn/index.jsx +++ b/src/routes/safe/component/Withdrawn/index.jsx @@ -2,8 +2,8 @@ import * as React from 'react' import { connect } from 'react-redux' import Stepper from '~/components/Stepper' -import { SAFELIST_ADDRESS } from '~/routes/routes' import { sleep } from '~/utils/timer' +import { type DailyLimit } from '~/routes/safe/store/model/dailyLimit' import actions, { type Actions } from './actions' import selector, { type SelectorProps } from './selector' import withdrawn from './withdrawn' @@ -23,7 +23,7 @@ type State = { done: boolean, } -export const SEE_TXS_BUTTON_TEXT = 'DONE' +export const SEE_TXS_BUTTON_TEXT = 'RESET' class Withdrawn extends React.Component { state = { @@ -44,19 +44,24 @@ class Withdrawn extends React.Component { } } + onReset = () => { + this.setState({ done: false }) + } + render() { - const { dailyLimit, safeAddress } = this.props + const { dailyLimit } = this.props const { done } = this.state const steps = getSteps() + const finishedButton = return ( { WithdrawnForm } diff --git a/src/routes/safe/component/Withdrawn/withdrawn.js b/src/routes/safe/component/Withdrawn/withdrawn.js index 1c06658e..ad958b48 100644 --- a/src/routes/safe/component/Withdrawn/withdrawn.js +++ b/src/routes/safe/component/Withdrawn/withdrawn.js @@ -1,7 +1,7 @@ // @flow import { getWeb3 } from '~/wallets/getWeb3' import { getGnosisSafeContract, getCreateDailyLimitExtensionContract } from '~/wallets/safeContracts' -import { type DailyLimitProps } from '~/routes/safe/store/model/safe' +import { type DailyLimitProps } from '~/routes/safe/store/model/dailyLimit' export const LIMIT_POSITION = 0 export const SPENT_TODAY_POS = 1 @@ -23,7 +23,7 @@ const getDailyLimitModuleFrom = async (safeAddress) => { return dailyLimitModule } -export const getDailyLimitFrom = async (safeAddress, tokenAddress): DailyLimitProps => { +export const getDailyLimitFrom = async (safeAddress: string, tokenAddress: number): Promise => { const web3 = getWeb3() const dailyLimitModule = await getDailyLimitModuleFrom(safeAddress) diff --git a/src/routes/safe/container/index.jsx b/src/routes/safe/container/index.jsx index 095d3402..62edd438 100644 --- a/src/routes/safe/container/index.jsx +++ b/src/routes/safe/container/index.jsx @@ -18,7 +18,10 @@ class SafeView extends React.PureComponent { fetchBalance(safeAddress) }, 1500) - this.props.fetchDailyLimit(this.props.safe.get('address')) + const { fetchDailyLimit, safe } = this.props + if (safe) { + fetchDailyLimit(safe.get('address')) + } } componentWillUnmount() { diff --git a/src/routes/safe/store/actions/fetchDailyLimit.js b/src/routes/safe/store/actions/fetchDailyLimit.js index 5e3c8936..87cb86b8 100644 --- a/src/routes/safe/store/actions/fetchDailyLimit.js +++ b/src/routes/safe/store/actions/fetchDailyLimit.js @@ -2,6 +2,7 @@ import type { Dispatch as ReduxDispatch } from 'redux' import { type GlobalState } from '~/store/index' import { getDailyLimitFrom } from '~/routes/safe/component/Withdrawn/withdrawn' +import { type DailyLimitProps } from '~/routes/safe/store/model/dailyLimit' import updateDailyLimit from './updateDailyLimit' export default (safeAddress: string) => async (dispatch: ReduxDispatch) => { diff --git a/src/routes/safe/store/actions/updateDailyLimit.js b/src/routes/safe/store/actions/updateDailyLimit.js index 876f10e0..7e6ff7aa 100644 --- a/src/routes/safe/store/actions/updateDailyLimit.js +++ b/src/routes/safe/store/actions/updateDailyLimit.js @@ -1,5 +1,6 @@ // @flow import { createAction } from 'redux-actions' +import { type DailyLimitProps } from '~/routes/safe/store/model/dailyLimit' export const UPDATE_DAILY_LIMIT = 'UPDATE_DAILY_LIMIT' diff --git a/src/routes/safe/store/test/balance.reducer.js b/src/routes/safe/store/test/balance.reducer.js index 76ef1569..96b775a7 100644 --- a/src/routes/safe/store/test/balance.reducer.js +++ b/src/routes/safe/store/test/balance.reducer.js @@ -25,7 +25,7 @@ const balanceReducerTests = () => { expect(balances.get(address)).toBe('0') }) - it('reducer should return 1.3456 ETH as funds to safe with 1 ETH', async () => { + it('reducer should return 1.3456 ETH as funds to safe with 1.3456 ETH', async () => { // GIVEN const address = await aDeployedSafe(store) diff --git a/src/routes/safe/store/test/builder/safe.builder.js b/src/routes/safe/store/test/builder/safe.builder.js index c077b375..95f27fb8 100644 --- a/src/routes/safe/store/test/builder/safe.builder.js +++ b/src/routes/safe/store/test/builder/safe.builder.js @@ -44,21 +44,21 @@ class SafeBuilder { const aSafe = () => new SafeBuilder() export class SafeFactory { - static oneOwnerSafe = aSafe() + static oneOwnerSafe = (ownerAddress: string = '0x03db1a8b26d08df23337e9276a36b474510f0023') => aSafe() .withAddress('0x03db1a8b26d08df23337e9276a36b474510f0025') .withName('Adol ICO Safe') .withConfirmations(1) .withDailyLimit(10) - .withOwner(['Adol Metamask'], ['0x03db1a8b26d08df23337e9276a36b474510f0023']) + .withOwner(['Adol Metamask'], [ownerAddress]) .get() - static twoOwnersSafe = aSafe() + static twoOwnersSafe = (firstOwner: string = '0x03db1a8b26d08df23337e9276a36b474510f0023', secondOwner: string = '0x03db1a8b26d08df23337e9276a36b474510f0024') => aSafe() .withAddress('0x03db1a8b26d08df23337e9276a36b474510f0026') .withName('Adol & Tobias Safe') .withConfirmations(2) .withOwner( ['Adol Metamask', 'Tobias Metamask'], - ['0x03db1a8b26d08df23337e9276a36b474510f0023', '0x03db1a8b26d08df23337e9276a36b474510f0024'], + [firstOwner, secondOwner], ) .withDailyLimit(10, 1.34) .get() diff --git a/src/routes/safe/store/test/safe.reducer.js b/src/routes/safe/store/test/safe.reducer.js index dea0bfbd..e27e5cd5 100644 --- a/src/routes/safe/store/test/safe.reducer.js +++ b/src/routes/safe/store/test/safe.reducer.js @@ -54,7 +54,7 @@ const providerReducerTests = () => { const safes = store.getState()[SAFE_REDUCER_ID] // THEN - expect(safes.get(address)).toEqual(SafeFactory.oneOwnerSafe) + expect(safes.get(address)).toEqual(SafeFactory.oneOwnerSafe()) }) it('reducer loads information from localStorage', async () => { diff --git a/src/routes/safe/store/test/safe.selector.js b/src/routes/safe/store/test/safe.selector.js index ab1762c9..1626665b 100644 --- a/src/routes/safe/store/test/safe.selector.js +++ b/src/routes/safe/store/test/safe.selector.js @@ -28,8 +28,8 @@ const safeSelectorTests = () => { it('should return a list of size 2 when 2 safes are created', () => { // GIVEN let map: Map = Map() - map = map.set('fooAddress', SafeFactory.oneOwnerSafe) - map = map.set('barAddress', SafeFactory.twoOwnersSafe) + map = map.set('fooAddress', SafeFactory.oneOwnerSafe()) + map = map.set('barAddress', SafeFactory.twoOwnersSafe()) const match: Match = buildMathPropsFrom('fooAddress') const undefMatch: Match = buildMathPropsFrom('inventedAddress') @@ -45,7 +45,7 @@ const safeSelectorTests = () => { const undefinedSafe = safeSelector(reduxStore, { match: undefMatch }) // THEN - expect(oneOwnerSafe).toEqual(SafeFactory.oneOwnerSafe) + expect(oneOwnerSafe).toEqual(SafeFactory.oneOwnerSafe()) expect(undefinedSafe).toBe(undefined) }) }) diff --git a/src/routes/safeList/components/Layout.stories.js b/src/routes/safeList/components/Layout.stories.js index 2887270f..5afa4af4 100644 --- a/src/routes/safeList/components/Layout.stories.js +++ b/src/routes/safeList/components/Layout.stories.js @@ -22,7 +22,7 @@ storiesOf('Routes /safes', module) )) .add('Safe List whith 2 safes', () => { - const safes = List([SafeFactory.oneOwnerSafe, SafeFactory.twoOwnersSafe]) + const safes = List([SafeFactory.oneOwnerSafe(), SafeFactory.twoOwnersSafe()]) return ( ) diff --git a/src/routes/safeList/container/selector.js b/src/routes/safeList/container/selector.js index 8580e329..e71e7cb7 100644 --- a/src/routes/safeList/container/selector.js +++ b/src/routes/safeList/container/selector.js @@ -1,9 +1,9 @@ // @flow import { createStructuredSelector } from 'reselect' -import { safesListSelector } from '~/routes/safeList/store/selectors' +import { safesByOwnerSelector } from '~/routes/safeList/store/selectors' import { providerNameSelector } from '~/wallets/store/selectors/index' export default createStructuredSelector({ - safes: safesListSelector, + safes: safesByOwnerSelector, provider: providerNameSelector, }) diff --git a/src/routes/safeList/store/selectors/index.js b/src/routes/safeList/store/selectors/index.js index de7769b5..93989643 100644 --- a/src/routes/safeList/store/selectors/index.js +++ b/src/routes/safeList/store/selectors/index.js @@ -1,7 +1,26 @@ // @flow import { List, Map } from 'immutable' +import { createSelector, type Selector } from 'reselect' import { type GlobalState } from '~/store/index' import { type Safe } from '~/routes/safe/store/model/safe' +import { userAccountSelector } from '~/wallets/store/selectors/index' +import { type Owner } from '~/routes/safe/store/model/owner' export const safesMapSelector = (state: GlobalState): Map => state.safes -export const safesListSelector = (state: GlobalState): List => state.safes.toList() +const safesListSelector: Selector> = createSelector( + safesMapSelector, + (safes: Map): List => safes.toList(), +) + +export const safesByOwnerSelector: Selector> = createSelector( + userAccountSelector, + safesListSelector, + (userAddress: string, safes: List): List => + safes.filter((safe: Safe) => + safe.owners.filter((owner: Owner) => { + const ownerLower = owner.get('address').toLowerCase() + const userLower = userAddress.toLowerCase() + + return ownerLower === userLower + }).count() > 0), +) diff --git a/src/routes/safeList/store/test/safes.selector.js b/src/routes/safeList/store/test/safes.selector.js index 808547df..f268154c 100644 --- a/src/routes/safeList/store/test/safes.selector.js +++ b/src/routes/safeList/store/test/safes.selector.js @@ -2,41 +2,110 @@ import { List, Map } from 'immutable' import { SAFE_REDUCER_ID } from '~/routes/safe/store/reducer/safe' import { type Safe } from '~/routes/safe/store/model/safe' +import { getProviderInfo } from '~/wallets/getWeb3' import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' -import { safesListSelector } from '../selectors' +import { PROVIDER_REDUCER_ID } from '~/wallets/store/reducer/provider' +import { makeProvider, type Provider } from '~/wallets/store/model/provider' +import { safesByOwnerSelector } from '../selectors' const safesListSelectorTests = () => { - describe('Safes Selector[safesSelector]', () => { + let walletRecord: Provider + beforeEach(async () => { + const provider = await getProviderInfo() + walletRecord = makeProvider(provider) + }) + + describe('Safes Selector[safesByOwnerSelector]', () => { it('should return empty list when no safes', () => { // GIVEN const reduxStore = { + [PROVIDER_REDUCER_ID]: walletRecord, [SAFE_REDUCER_ID]: Map(), - providers: undefined, balances: undefined, } const emptyList = List([]) // WHEN - const safes = safesListSelector(reduxStore) + const safes = safesByOwnerSelector(reduxStore, {}) // THEN expect(safes).toEqual(emptyList) }) - it('should return a list of size 2 when 2 safes are created', () => { + it('should return a list of size 0 when 0 of 2 safes contains the user as owner', () => { // GIVEN let map: Map = Map() - map = map.set('fooAddress', SafeFactory.oneOwnerSafe) - map = map.set('barAddress', SafeFactory.twoOwnersSafe) + map = map.set('fooAddress', SafeFactory.oneOwnerSafe('foo')) + map = map.set('barAddress', SafeFactory.twoOwnersSafe('foo', 'bar')) const reduxStore = { + [PROVIDER_REDUCER_ID]: walletRecord, [SAFE_REDUCER_ID]: map, - providers: undefined, balances: undefined, } // WHEN - const safes = safesListSelector(reduxStore) + const safes = safesByOwnerSelector(reduxStore, {}) + + // THEN + expect(safes.count()).toEqual(0) + }) + + it('should return a list of size 1 when 1 of 2 safes contains the user as owner', () => { + // GIVEN + let map: Map = Map() + map = map.set('fooAddress', SafeFactory.oneOwnerSafe(walletRecord.account)) + map = map.set('barAddress', SafeFactory.twoOwnersSafe('foo', 'bar')) + + const reduxStore = { + [PROVIDER_REDUCER_ID]: walletRecord, + [SAFE_REDUCER_ID]: map, + balances: undefined, + } + + // WHEN + const safes = safesByOwnerSelector(reduxStore, {}) + + // THEN + expect(safes.count()).toEqual(1) + }) + + it('should return a list of size 2 when 2 of 2 safes contains the user as owner', () => { + // GIVEN + let map: Map = Map() + const userAccount = walletRecord.account + map = map.set('fooAddress', SafeFactory.oneOwnerSafe(userAccount)) + map = map.set('barAddress', SafeFactory.twoOwnersSafe('foo', userAccount)) + + const reduxStore = { + [SAFE_REDUCER_ID]: map, + [PROVIDER_REDUCER_ID]: walletRecord, + balances: undefined, + } + + // WHEN + const safes = safesByOwnerSelector(reduxStore, {}) + + // THEN + expect(safes.count()).toEqual(2) + expect(safes.get(0)).not.toEqual(safes.get(1)) + }) + + it('should return safes under owners case-insensitive', () => { + // GIVEN + let map: Map = Map() + const userAccountUpper = walletRecord.account.toUpperCase() + map = map.set('fooAddress', SafeFactory.oneOwnerSafe(userAccountUpper)) + map = map.set('barAddress', SafeFactory.twoOwnersSafe('foo', userAccountUpper)) + + const reduxStore = { + [SAFE_REDUCER_ID]: map, + [PROVIDER_REDUCER_ID]: walletRecord, + balances: undefined, + } + + // WHEN + const safes = safesByOwnerSelector(reduxStore, {}) // THEN expect(safes.count()).toEqual(2) diff --git a/src/wallets/safeContracts.js b/src/wallets/safeContracts.js index 243e2276..65a516c3 100644 --- a/src/wallets/safeContracts.js +++ b/src/wallets/safeContracts.js @@ -5,14 +5,31 @@ import { ensureOnce } from '~/utils/singleton' import { getWeb3 } from '~/wallets/getWeb3' import GnosisSafeSol from '#/GnosisSafeTeamEdition.json' import ProxyFactorySol from '#/ProxyFactory.json' -import CreateAndAddModule from '#/CreateAndAddModule.json' +import CreateAndAddModules from '#/CreateAndAddModules.json' import DailyLimitModule from '#/DailyLimitModule.json' let proxyFactoryMaster -let createAndAddExtensionMaster +let createAndAddModuleMaster let safeMaster let dailyLimitMaster +const createModuleDataWrapper = () => { + const web3 = getWeb3() + // eslint-disable-next-line + return web3.eth.contract([{"constant":false,"inputs":[{"name":"data","type":"bytes"}],"name":"setup","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]) +} + +const getModuleDataWrapper = ensureOnce(createModuleDataWrapper) + +function createAndAddModulesData(dataArray) { + const ModuleDataWrapper = getModuleDataWrapper() + + 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') +} + + const createGnosisSafeContract = (web3: any) => { const gnosisSafe = contract(GnosisSafeSol) gnosisSafe.setProvider(web3.currentProvider) @@ -28,7 +45,7 @@ const createProxyFactoryContract = (web3: any) => { } const createAddExtensionContract = (web3: any) => { - const createAndAddModule = contract(CreateAndAddModule) + const createAndAddModule = contract(CreateAndAddModules) createAndAddModule.setProvider(web3.currentProvider) return createAndAddModule @@ -62,9 +79,9 @@ const createMasterCopies = async () => { // Create AddExtension Master Copy const CreateAndAddExtension = getCreateAddExtensionContract(web3) try { - createAndAddExtensionMaster = await CreateAndAddExtension.deployed() + createAndAddModuleMaster = await CreateAndAddExtension.deployed() } catch (err) { - createAndAddExtensionMaster = await CreateAndAddExtension.new({ from: userAccount, gas: '5000000' }) + createAndAddModuleMaster = await CreateAndAddExtension.new({ from: userAccount, gas: '5000000' }) } // Initialize safe master copy @@ -95,11 +112,13 @@ const getSafeDataBasedOn = async (accounts, numConfirmations, dailyLimitInEth) = const proxyFactoryData = await proxyFactoryMaster.contract.createProxy .getData(dailyLimitMaster.address, moduleData) - const createAndAddExtensionData = createAndAddExtensionMaster.contract.createAndAddModule - .getData(proxyFactoryMaster.address, proxyFactoryData) + const modulesCreationData = createAndAddModulesData([proxyFactoryData]) + + const createAndAddModuleData = createAndAddModuleMaster.contract.createAndAddModules + .getData(proxyFactoryMaster.address, modulesCreationData) return safeMaster.contract.setup - .getData(accounts, numConfirmations, createAndAddExtensionMaster.address, createAndAddExtensionData) + .getData(accounts, numConfirmations, createAndAddModuleMaster.address, createAndAddModuleData) } export const deploySafeContract = async (