{ "contractName": "Proxy", "abi": [ { "inputs": [ { "name": "_masterCopy", "type": "address" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "payable": true, "stateMutability": "payable", "type": "fallback" }, { "constant": true, "inputs": [], "name": "implementation", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "proxyType", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "pure", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b506040516020806102a38339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff16141515156100e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806101386000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820fb8f7addc79801292900c520af66dd86a1f9d0b643abe5d3ef1ac03eeb2d04080029", "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820fb8f7addc79801292900c520af66dd86a1f9d0b643abe5d3ef1ac03eeb2d04080029", "sourceMap": "190:1342:13:-;;;508:168;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:168:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;593:1;578:11;:16;;;;570:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;658:11;645:10;;:24;;;;;;;;;;;;;;;;;;508:168;190:1342;;;;;;", "deployedSourceMap": "190:1342:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;955:42;951:1;945:8;941:57;1030:14;1027:1;1024;1011:34;1125:1;1122;1106:14;1103:1;1091:10;1086:3;1073:54;1161:16;1158:1;1155;1140:38;1206:1;1197:7;1194:14;1191:2;;;1221:16;1218:1;1211:27;1191:2;1263:16;1260:1;1253:27;1426:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1426:104:13;;;;;;;;;;;;;;;;;;;;;;;1302:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:118:13;;;;;;;;;;;;;;;;;;;;;;;;;;;1426:104;1492:7;1522:1;1515:8;;1426:104;:::o;1302:118::-;1373:7;1403:10;;;;;;;;;;;1396:17;;1302:118;:::o", "source": "pragma solidity 0.4.24;\n\n\n/// @title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n/// @author Stefan George - \ncontract Proxy {\n\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.\n address masterCopy;\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n constructor(address _masterCopy)\n public\n {\n require(_masterCopy != 0, \"Invalid master copy address provided\");\n masterCopy = _masterCopy;\n }\n\n /// @dev Fallback function forwards all transactions and returns all received return data.\n function ()\n external\n payable\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas, masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0) { revert(0, returndatasize()) }\n return(0, returndatasize())\n }\n }\n\n function implementation()\n public\n view\n returns (address)\n {\n return masterCopy;\n }\n\n function proxyType()\n public\n pure\n returns (uint256)\n {\n return 2;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "exportedSymbols": { "Proxy": [ 2988 ] }, "id": 2989, "nodeType": "SourceUnit", "nodes": [ { "id": 2947, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", "src": "0:23:13" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", "fullyImplemented": true, "id": 2988, "linearizedBaseContracts": [ 2988 ], "name": "Proxy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "id": 2949, "name": "masterCopy", "nodeType": "VariableDeclaration", "scope": 2988, "src": "363:18:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2948, "name": "address", "nodeType": "ElementaryTypeName", "src": "363:7:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "body": { "id": 2965, "nodeType": "Block", "src": "560:116:13", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 2957, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 2955, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2951, "src": "578:11:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 2956, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "593:1:13", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "578:16:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c6964206d617374657220636f707920616464726573732070726f7669646564", "id": 2958, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "596:38:13", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", "typeString": "literal_string \"Invalid master copy address provided\"" }, "value": "Invalid master copy address provided" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", "typeString": "literal_string \"Invalid master copy address provided\"" } ], "id": 2954, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4039, 4040 ], "referencedDeclaration": 4040, "src": "570:7:13", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 2959, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "570:65:13", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2960, "nodeType": "ExpressionStatement", "src": "570:65:13" }, { "expression": { "argumentTypes": null, "id": 2963, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 2961, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2949, "src": "645:10:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 2962, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2951, "src": "658:11:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "645:24:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 2964, "nodeType": "ExpressionStatement", "src": "645:24:13" } ] }, "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.", "id": 2966, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { "id": 2952, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2951, "name": "_masterCopy", "nodeType": "VariableDeclaration", "scope": 2966, "src": "520:19:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2950, "name": "address", "nodeType": "ElementaryTypeName", "src": "520:7:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "519:21:13" }, "payable": false, "returnParameters": { "id": 2953, "nodeType": "ParameterList", "parameters": [], "src": "560:0:13" }, "scope": 2988, "src": "508:168:13", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 2970, "nodeType": "Block", "src": "826:470:13", "statements": [ { "externalReferences": [], "id": 2969, "nodeType": "InlineAssembly", "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas(), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0)\n {\n revert(0, returndatasize())\n }\n return(0, returndatasize())\n}", "src": "900:396:13" } ] }, "documentation": "@dev Fallback function forwards all transactions and returns all received return data.", "id": 2971, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { "id": 2967, "nodeType": "ParameterList", "parameters": [], "src": "786:2:13" }, "payable": true, "returnParameters": { "id": 2968, "nodeType": "ParameterList", "parameters": [], "src": "826:0:13" }, "scope": 2988, "src": "777:519:13", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { "id": 2978, "nodeType": "Block", "src": "1386:34:13", "statements": [ { "expression": { "argumentTypes": null, "id": 2976, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2949, "src": "1403:10:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 2975, "id": 2977, "nodeType": "Return", "src": "1396:17:13" } ] }, "documentation": null, "id": 2979, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "implementation", "nodeType": "FunctionDefinition", "parameters": { "id": 2972, "nodeType": "ParameterList", "parameters": [], "src": "1325:2:13" }, "payable": false, "returnParameters": { "id": 2975, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2974, "name": "", "nodeType": "VariableDeclaration", "scope": 2979, "src": "1373:7:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2973, "name": "address", "nodeType": "ElementaryTypeName", "src": "1373:7:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "1372:9:13" }, "scope": 2988, "src": "1302:118:13", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 2986, "nodeType": "Block", "src": "1505:25:13", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "32", "id": 2984, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1522:1:13", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, "functionReturnParameters": 2983, "id": 2985, "nodeType": "Return", "src": "1515:8:13" } ] }, "documentation": null, "id": 2987, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "proxyType", "nodeType": "FunctionDefinition", "parameters": { "id": 2980, "nodeType": "ParameterList", "parameters": [], "src": "1444:2:13" }, "payable": false, "returnParameters": { "id": 2983, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2982, "name": "", "nodeType": "VariableDeclaration", "scope": 2987, "src": "1492:7:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2981, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1492:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1491:9:13" }, "scope": 2988, "src": "1426:104:13", "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], "scope": 2989, "src": "190:1342:13" } ], "src": "0:1533:13" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "exportedSymbols": { "Proxy": [ 2988 ] }, "id": 2989, "nodeType": "SourceUnit", "nodes": [ { "id": 2947, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", "src": "0:23:13" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", "fullyImplemented": true, "id": 2988, "linearizedBaseContracts": [ 2988 ], "name": "Proxy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "id": 2949, "name": "masterCopy", "nodeType": "VariableDeclaration", "scope": 2988, "src": "363:18:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2948, "name": "address", "nodeType": "ElementaryTypeName", "src": "363:7:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "body": { "id": 2965, "nodeType": "Block", "src": "560:116:13", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 2957, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 2955, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2951, "src": "578:11:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 2956, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "593:1:13", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "578:16:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "496e76616c6964206d617374657220636f707920616464726573732070726f7669646564", "id": 2958, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "596:38:13", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", "typeString": "literal_string \"Invalid master copy address provided\"" }, "value": "Invalid master copy address provided" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", "typeString": "literal_string \"Invalid master copy address provided\"" } ], "id": 2954, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4039, 4040 ], "referencedDeclaration": 4040, "src": "570:7:13", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 2959, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "570:65:13", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2960, "nodeType": "ExpressionStatement", "src": "570:65:13" }, { "expression": { "argumentTypes": null, "id": 2963, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 2961, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2949, "src": "645:10:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 2962, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2951, "src": "658:11:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "645:24:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 2964, "nodeType": "ExpressionStatement", "src": "645:24:13" } ] }, "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.", "id": 2966, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { "id": 2952, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2951, "name": "_masterCopy", "nodeType": "VariableDeclaration", "scope": 2966, "src": "520:19:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2950, "name": "address", "nodeType": "ElementaryTypeName", "src": "520:7:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "519:21:13" }, "payable": false, "returnParameters": { "id": 2953, "nodeType": "ParameterList", "parameters": [], "src": "560:0:13" }, "scope": 2988, "src": "508:168:13", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 2970, "nodeType": "Block", "src": "826:470:13", "statements": [ { "externalReferences": [], "id": 2969, "nodeType": "InlineAssembly", "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas(), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0)\n {\n revert(0, returndatasize())\n }\n return(0, returndatasize())\n}", "src": "900:396:13" } ] }, "documentation": "@dev Fallback function forwards all transactions and returns all received return data.", "id": 2971, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { "id": 2967, "nodeType": "ParameterList", "parameters": [], "src": "786:2:13" }, "payable": true, "returnParameters": { "id": 2968, "nodeType": "ParameterList", "parameters": [], "src": "826:0:13" }, "scope": 2988, "src": "777:519:13", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { "id": 2978, "nodeType": "Block", "src": "1386:34:13", "statements": [ { "expression": { "argumentTypes": null, "id": 2976, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2949, "src": "1403:10:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 2975, "id": 2977, "nodeType": "Return", "src": "1396:17:13" } ] }, "documentation": null, "id": 2979, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "implementation", "nodeType": "FunctionDefinition", "parameters": { "id": 2972, "nodeType": "ParameterList", "parameters": [], "src": "1325:2:13" }, "payable": false, "returnParameters": { "id": 2975, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2974, "name": "", "nodeType": "VariableDeclaration", "scope": 2979, "src": "1373:7:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2973, "name": "address", "nodeType": "ElementaryTypeName", "src": "1373:7:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "1372:9:13" }, "scope": 2988, "src": "1302:118:13", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 2986, "nodeType": "Block", "src": "1505:25:13", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "32", "id": 2984, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1522:1:13", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, "functionReturnParameters": 2983, "id": 2985, "nodeType": "Return", "src": "1515:8:13" } ] }, "documentation": null, "id": 2987, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "proxyType", "nodeType": "FunctionDefinition", "parameters": { "id": 2980, "nodeType": "ParameterList", "parameters": [], "src": "1444:2:13" }, "payable": false, "returnParameters": { "id": 2983, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2982, "name": "", "nodeType": "VariableDeclaration", "scope": 2987, "src": "1492:7:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2981, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1492:7:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1491:9:13" }, "scope": 2988, "src": "1426:104:13", "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], "scope": 2989, "src": "190:1342:13" } ], "src": "0:1533:13" }, "compiler": { "name": "solc", "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", "updatedAt": "2018-06-29T09:01:22.083Z" }