UNPKG

sorted-doubly-ll

Version:
1,240 lines 127 kB
{ "contractName": "SafeMath", "abi": [], "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058204497941a37b75f92a396b2b7ca8b88b27aa544fd1ca441bbf242d3d9b17f4c010029", "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058204497941a37b75f92a396b2b7ca8b88b27aa544fd1ca441bbf242d3d9b17f4c010029", "sourceMap": "125:1726:2:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24", "deployedSourceMap": "125:1726:2:-;;;;;;;;", "source": "pragma solidity ^0.5.0;\n\n/**\n * @title SafeMath\n * @dev Unsigned math operations with safety checks that revert on error\n */\nlibrary SafeMath {\n /**\n * @dev Multiplies two unsigned integers, reverts on overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522\n if (a == 0) {\n return 0;\n }\n\n uint256 c = a * b;\n require(c / a == b);\n\n return c;\n }\n\n /**\n * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n // Solidity only automatically asserts when dividing by 0\n require(b > 0);\n uint256 c = a / b;\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n return c;\n }\n\n /**\n * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b <= a);\n uint256 c = a - b;\n\n return c;\n }\n\n /**\n * @dev Adds two unsigned integers, reverts on overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n require(c >= a);\n\n return c;\n }\n\n /**\n * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\n * reverts when dividing by zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b != 0);\n return a % b;\n }\n}\n", "sourcePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", "ast": { "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ 1335 ] }, "id": 1336, "nodeType": "SourceUnit", "nodes": [ { "id": 1209, "literals": [ "solidity", "^", "0.5", ".0" ], "nodeType": "PragmaDirective", "src": "0:23:2" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": "@title SafeMath\n@dev Unsigned math operations with safety checks that revert on error", "fullyImplemented": true, "id": 1335, "linearizedBaseContracts": [ 1335 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { "id": 1241, "nodeType": "Block", "src": "296:354:2", "statements": [ { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1220, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1218, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1211, "src": "527:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1219, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "532:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "527:6:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1224, "nodeType": "IfStatement", "src": "523:45:2", "trueBody": { "id": 1223, "nodeType": "Block", "src": "535:33:2", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "30", "id": 1221, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "556:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "functionReturnParameters": 1217, "id": 1222, "nodeType": "Return", "src": "549:8:2" } ] } }, { "assignments": [ 1226 ], "declarations": [ { "constant": false, "id": 1226, "name": "c", "nodeType": "VariableDeclaration", "scope": 1241, "src": "578:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1225, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "578:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1230, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1229, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1227, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1211, "src": "590:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "id": 1228, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1213, "src": "594:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "590:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "578:17:2" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1236, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1234, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1232, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1226, "src": "613:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "argumentTypes": null, "id": 1233, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1211, "src": "617:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "613:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1235, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1213, "src": "622:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "613:10:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1231, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1409, 1410 ], "referencedDeclaration": 1409, "src": "605:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1237, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "605:19:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1238, "nodeType": "ExpressionStatement", "src": "605:19:2" }, { "expression": { "argumentTypes": null, "id": 1239, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1226, "src": "642:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1217, "id": 1240, "nodeType": "Return", "src": "635:8:2" } ] }, "documentation": "@dev Multiplies two unsigned integers, reverts on overflow.", "id": 1242, "implemented": true, "kind": "function", "modifiers": [], "name": "mul", "nodeType": "FunctionDefinition", "parameters": { "id": 1214, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1211, "name": "a", "nodeType": "VariableDeclaration", "scope": 1242, "src": "242:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1210, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "242:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1213, "name": "b", "nodeType": "VariableDeclaration", "scope": 1242, "src": "253:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1212, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "253:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "241:22:2" }, "returnParameters": { "id": 1217, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1216, "name": "", "nodeType": "VariableDeclaration", "scope": 1242, "src": "287:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1215, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "287:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "286:9:2" }, "scope": 1335, "src": "229:421:2", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1265, "nodeType": "Block", "src": "845:229:2", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1254, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1252, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1246, "src": "929:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1253, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "933:1:2", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "929:5:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1251, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1409, 1410 ], "referencedDeclaration": 1409, "src": "921:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1255, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "921:14:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1256, "nodeType": "ExpressionStatement", "src": "921:14:2" }, { "assignments": [ 1258 ], "declarations": [ { "constant": false, "id": 1258, "name": "c", "nodeType": "VariableDeclaration", "scope": 1265, "src": "945:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1257, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "945:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1262, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1261, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1259, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1244, "src": "957:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "argumentTypes": null, "id": 1260, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1246, "src": "961:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "957:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "945:17:2" }, { "expression": { "argumentTypes": null, "id": 1263, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1258, "src": "1066:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1250, "id": 1264, "nodeType": "Return", "src": "1059:8:2" } ] }, "documentation": "@dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.", "id": 1266, "implemented": true, "kind": "function", "modifiers": [], "name": "div", "nodeType": "FunctionDefinition", "parameters": { "id": 1247, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1244, "name": "a", "nodeType": "VariableDeclaration", "scope": 1266, "src": "791:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1243, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "791:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1246, "name": "b", "nodeType": "VariableDeclaration", "scope": 1266, "src": "802:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1245, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "802:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "790:22:2" }, "returnParameters": { "id": 1250, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1249, "name": "", "nodeType": "VariableDeclaration", "scope": 1266, "src": "836:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1248, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "836:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "835:9:2" }, "scope": 1335, "src": "778:296:2", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1289, "nodeType": "Block", "src": "1272:78:2", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1276, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1270, "src": "1290:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "id": 1277, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1268, "src": "1295:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1290:6:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1275, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1409, 1410 ], "referencedDeclaration": 1409, "src": "1282:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1279, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1282:15:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1280, "nodeType": "ExpressionStatement", "src": "1282:15:2" }, { "assignments": [ 1282 ], "declarations": [ { "constant": false, "id": 1282, "name": "c", "nodeType": "VariableDeclaration", "scope": 1289, "src": "1307:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1281, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1307:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1286, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1285, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1283, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1268, "src": "1319:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "id": 1284, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1270, "src": "1323:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1319:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "1307:17:2" }, { "expression": { "argumentTypes": null, "id": 1287, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1282, "src": "1342:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1274, "id": 1288, "nodeType": "Return", "src": "1335:8:2" } ] }, "documentation": "@dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).", "id": 1290, "implemented": true, "kind": "function", "modifiers": [], "name": "sub", "nodeType": "FunctionDefinition", "parameters": { "id": 1271, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1268, "name": "a", "nodeType": "VariableDeclaration", "scope": 1290, "src": "1218:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1267, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1218:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1270, "name": "b", "nodeType": "VariableDeclaration", "scope": 1290, "src": "1229:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1269, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1229:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1217:22:2" }, "returnParameters": { "id": 1274, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1273, "name": "", "nodeType": "VariableDeclaration", "scope": 1290, "src": "1263:7:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1272, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1263:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1262:9:2" }, "scope": 1335, "src": "1205:145:2", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1313, "nodeType": "Block", "src": "1498:78:2", "statements": [ { "assignments": [ 1300 ], "declarations": [ { "constant": false, "id": 1300, "name": "c", "nodeType": "VariableDeclaration", "scope": 1313, "src": "1508:9:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1299, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1508:7:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1304, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1303, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1301, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1292, "src": "1520:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 1302, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1294, "src": "1524:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1520:5:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "1508:17:2" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1308, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1306, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1300, "src": "1543:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 1307, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1292, "src": "1548:1:2", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1543:6:2", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1305, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1409, 1410 ], "referencedDeclaration": 1409, "src": "1535:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1309, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1