{ "absolutePath": "/home/oliver/Projects/github/rari-capital/solmate/src/mixins/ERC4626.sol", "id": 2954, "exportedSymbols": { "ERC20": [ 31408 ], "ERC4626": [ 2953 ], "FixedPointMathLib": [ 32321 ], "SafeTransferLib": [ 32785 ] }, "nodeType": "SourceUnit", "src": "42:6474:4", "nodes": [ { "id": 2434, "nodeType": "PragmaDirective", "src": "42:24:4", "literals": [ "solidity", ">=", "0.8", ".0" ] }, { "id": 2436, "nodeType": "ImportDirective", "src": "68:42:4", "absolutePath": "/home/oliver/Projects/github/rari-capital/solmate/src/tokens/ERC20.sol", "file": "../tokens/ERC20.sol", "nameLocation": "-1:-1:-1", "scope": 2954, "sourceUnit": 31409, "symbolAliases": [ { "foreign": { "id": 2435, "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "src": "76:5:4", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" } ], "unitAlias": "" }, { "id": 2438, "nodeType": "ImportDirective", "src": "111:61:4", "absolutePath": "/home/oliver/Projects/github/rari-capital/solmate/src/utils/SafeTransferLib.sol", "file": "../utils/SafeTransferLib.sol", "nameLocation": "-1:-1:-1", "scope": 2954, "sourceUnit": 32786, "symbolAliases": [ { "foreign": { "id": 2437, "name": "SafeTransferLib", "nodeType": "Identifier", "overloadedDeclarations": [], "src": "119:15:4", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" } ], "unitAlias": "" }, { "id": 2440, "nodeType": "ImportDirective", "src": "173:65:4", "absolutePath": "/home/oliver/Projects/github/rari-capital/solmate/src/utils/FixedPointMathLib.sol", "file": "../utils/FixedPointMathLib.sol", "nameLocation": "-1:-1:-1", "scope": 2954, "sourceUnit": 32322, "symbolAliases": [ { "foreign": { "id": 2439, "name": "FixedPointMathLib", "nodeType": "Identifier", "overloadedDeclarations": [], "src": "181:17:4", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" } ], "unitAlias": "" }, { "id": 2953, "nodeType": "ContractDefinition", "src": "395:6120:4", "nodes": [ { "id": 2447, "nodeType": "UsingForDirective", "src": "436:32:4", "libraryName": { "id": 2444, "name": "SafeTransferLib", "nodeType": "IdentifierPath", "referencedDeclaration": 32785, "src": "442:15:4" }, "typeName": { "id": 2446, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 2445, "name": "ERC20", "nodeType": "IdentifierPath", "referencedDeclaration": 31408, "src": "462:5:4" }, "referencedDeclaration": 31408, "src": "462:5:4", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$31408", "typeString": "contract ERC20" } } }, { "id": 2450, "nodeType": "UsingForDirective", "src": "473:36:4", "libraryName": { "id": 2448, "name": "FixedPointMathLib", "nodeType": "IdentifierPath", "referencedDeclaration": 32321, "src": "479:17:4" }, "typeName": { "id": 2449, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "501:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "id": 2460, "nodeType": "EventDefinition", "src": "694:93:4", "anonymous": false, "name": "Deposit", "nameLocation": "700:7:4", "parameters": { "id": 2459, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2452, "indexed": true, "mutability": "mutable", "name": "caller", "nameLocation": "724:6:4", "nodeType": "VariableDeclaration", "scope": 2460, "src": "708:22:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2451, "name": "address", "nodeType": "ElementaryTypeName", "src": "708:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 2454, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "748:5:4", "nodeType": "VariableDeclaration", "scope": 2460, "src": "732:21:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2453, "name": "address", "nodeType": "ElementaryTypeName", "src": "732:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 2456, "indexed": false, "mutability": "mutable", "name": "assets", "nameLocation": "763:6:4", "nodeType": "VariableDeclaration", "scope": 2460, "src": "755:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2455, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "755:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 2458, "indexed": false, "mutability": "mutable", "name": "shares", "nameLocation": "779:6:4", "nodeType": "VariableDeclaration", "scope": 2460, "src": "771:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2457, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "771:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "707:79:4" } }, { "id": 2472, "nodeType": "EventDefinition", "src": "793:166:4", "anonymous": false, "name": "Withdraw", "nameLocation": "799:8:4", "parameters": { "id": 2471, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2462, "indexed": true, "mutability": "mutable", "name": "caller", "nameLocation": "833:6:4", "nodeType": "VariableDeclaration", "scope": 2472, "src": "817:22:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2461, "name": "address", "nodeType": "ElementaryTypeName", "src": "817:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 2464, "indexed": true, "mutability": "mutable", "name": "receiver", "nameLocation": "865:8:4", "nodeType": "VariableDeclaration", "scope": 2472, "src": "849:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2463, "name": "address", "nodeType": "ElementaryTypeName", "src": "849:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 2466, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "899:5:4", "nodeType": "VariableDeclaration", "scope": 2472, "src": "883:21:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2465, "name": "address", "nodeType": "ElementaryTypeName", "src": "883:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 2468, "indexed": false, "mutability": "mutable", "name": "assets", "nameLocation": "922:6:4", "nodeType": "VariableDeclaration", "scope": 2472, "src": "914:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2467, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "914:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 2470, "indexed": false, "mutability": "mutable", "name": "shares", "nameLocation": "946:6:4", "nodeType": "VariableDeclaration", "scope": 2472, "src": "938:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2469, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "938:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "807:151:4" } }, { "id": 2475, "nodeType": "VariableDeclaration", "src": "1146:28:4", "constant": false, "functionSelector": "38d52e0f", "mutability": "immutable", "name": "asset", "nameLocation": "1169:5:4", "scope": 2953, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$31408", "typeString": "contract ERC20" }, "typeName": { "id": 2474, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 2473, "name": "ERC20", "nodeType": "IdentifierPath", "referencedDeclaration": 31408, "src": "1146:5:4" }, "referencedDeclaration": 31408, "src": "1146:5:4", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$31408", "typeString": "contract ERC20" } }, "visibility": "public" }, { "id": 2497, "nodeType": "FunctionDefinition", "src": "1181:172:4", "body": { "id": 2496, "nodeType": "Block", "src": "1322:31:4", "statements": [ { "expression": { "id": 2494, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 2492, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2475, "src": "1332:5:4", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$31408", "typeString": "contract ERC20" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 2493, "name": "_asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2478, "src": "1340:6:4", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$31408", "typeString": "contract ERC20" } }, "src": "1332:14:4", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$31408", "typeString": "contract ERC20" } }, "id": 2495, "nodeType": "ExpressionStatement", "src": "1332:14:4" } ] }, "implemented": true, "kind": "constructor", "modifiers": [ { "arguments": [ { "id": 2485, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2480, "src": "1287:5:4", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "id": 2486, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2482, "src": "1294:7:4", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 2487, "name": "_asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2478, "src": "1303:6:4", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$31408", "typeString": "contract ERC20" } }, "id": 2488, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "decimals", "nodeType": "MemberAccess", "referencedDeclaration": 31045, "src": "1303:15:4", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, "id": 2489, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1303:17:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "id": 2490, "kind": "baseConstructorSpecifier", "modifierName": { "id": 2484, "name": "ERC20", "nodeType": "IdentifierPath", "referencedDeclaration": 31408, "src": "1281:5:4" }, "nodeType": "ModifierInvocation", "src": "1281:40:4" } ], "name": "", "nameLocation": "-1:-1:-1", "parameters": { "id": 2483, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2478, "mutability": "mutable", "name": "_asset", "nameLocation": "1208:6:4", "nodeType": "VariableDeclaration", "scope": 2497, "src": "1202:12:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$31408", "typeString": "contract ERC20" }, "typeName": { "id": 2477, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 2476, "name": "ERC20", "nodeType": "IdentifierPath", "referencedDeclaration": 31408, "src": "1202:5:4" }, "referencedDeclaration": 31408, "src": "1202:5:4", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$31408", "typeString": "contract ERC20" } }, "visibility": "internal" }, { "constant": false, "id": 2480, "mutability": "mutable", "name": "_name", "nameLocation": "1238:5:4", "nodeType": "VariableDeclaration", "scope": 2497, "src": "1224:19:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 2479, "name": "string", "nodeType": "ElementaryTypeName", "src": "1224:6:4", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" }, { "constant": false, "id": 2482, "mutability": "mutable", "name": "_symbol", "nameLocation": "1267:7:4", "nodeType": "VariableDeclaration", "scope": 2497, "src": "1253:21:4", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 2481, "name": "string", "nodeType": "ElementaryTypeName", "src": "1253:6:4", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "1192:88:4" }, "returnParameters": { "id": 2491, "nodeType": "ParameterList", "parameters": [], "src": "1322:0:4" }, "scope": 2953, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "id": 2549, "nodeType": "FunctionDefinition", "src": "1547:516:4", "body": { "id": 2548, "nodeType": "Block", "src": "1638:425:4", "statements": [ { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2514, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "components": [ { "id": 2511, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 2507, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2504, "src": "1732:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "id": 2509, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2499, "src": "1756:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2508, "name": "previewDeposit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2822, "src": "1741:14:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, "id": 2510, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1741:22:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1732:31:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 2512, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1731:33:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "hexValue": "30", "id": 2513, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1768:1:4", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1731:38:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "5a45524f5f534841524553", "id": 2515, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1771:13:4", "typeDescriptions": { "typeIdentifier": "t_stringliteral_2119bd5d92259e418533f96b824fbd100e3dea453e6ac4c5f7315e6344368f2f", "typeString": "literal_string \"ZERO_SHARES\"" }, "value": "ZERO_SHARES" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_2119bd5d92259e418533f96b824fbd100e3dea453e6ac4c5f7315e6344368f2f", "typeString": "literal_string \"ZERO_SHARES\"" } ], "id": 2506, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "1723:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 2516, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1723:62:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2517, "nodeType": "ExpressionStatement", "src": "1723:62:4" }, { "expression": { "arguments": [ { "expression": { "id": 2521, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1888:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 2522, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "1888:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "id": 2525, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "1908:4:4", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC4626_$2953", "typeString": "contract ERC4626" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_ERC4626_$2953", "typeString": "contract ERC4626" } ], "id": 2524, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1900:7:4", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 2523, "name": "address", "nodeType": "ElementaryTypeName", "src": "1900:7:4", "typeDescriptions": {} } }, "id": 2526, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1900:13:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2527, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2499, "src": "1915:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2518, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2475, "src": "1865:5:4", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$31408", "typeString": "contract ERC20" } }, "id": 2520, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 32744, "src": "1865:22:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$31408_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$31408_$", "typeString": "function (contract ERC20,address,address,uint256)" } }, "id": 2528, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1865:57:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2529, "nodeType": "ExpressionStatement", "src": "1865:57:4" }, { "expression": { "arguments": [ { "id": 2531, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2501, "src": "1939:8:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2532, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2504, "src": "1949:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2530, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31379, "src": "1933:5:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 2533, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1933:23:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2534, "nodeType": "ExpressionStatement", "src": "1933:23:4" }, { "eventCall": { "arguments": [ { "expression": { "id": 2536, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1980:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 2537, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "1980:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2538, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2501, "src": "1992:8:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2539, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2499, "src": "2002:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 2540, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2504, "src": "2010:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2535, "name": "Deposit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2460, "src": "1972:7:4", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256,uint256)" } }, "id": 2541, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1972:45:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2542, "nodeType": "EmitStatement", "src": "1967:50:4" }, { "expression": { "arguments": [ { "id": 2544, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2499, "src": "2041:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 2545, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2504, "src": "2049:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2543, "name": "afterDeposit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2952, "src": "2028:12:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)" } }, "id": 2546, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2028:28:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2547, "nodeType": "ExpressionStatement", "src": "2028:28:4" } ] }, "functionSelector": "6e553f65", "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "1556:7:4", "parameters": { "id": 2502, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2499, "mutability": "mutable", "name": "assets", "nameLocation": "1572:6:4", "nodeType": "VariableDeclaration", "scope": 2549, "src": "1564:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2498, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1564:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 2501, "mutability": "mutable", "name": "receiver", "nameLocation": "1588:8:4", "nodeType": "VariableDeclaration", "scope": 2549, "src": "1580:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2500, "name": "address", "nodeType": "ElementaryTypeName", "src": "1580:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "1563:34:4" }, "returnParameters": { "id": 2505, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2504, "mutability": "mutable", "name": "shares", "nameLocation": "1630:6:4", "nodeType": "VariableDeclaration", "scope": 2549, "src": "1622:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2503, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "1621:16:4" }, "scope": 2953, "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "id": 2595, "nodeType": "FunctionDefinition", "src": "2069:467:4", "body": { "id": 2594, "nodeType": "Block", "src": "2157:379:4", "statements": [ { "expression": { "id": 2562, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 2558, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2556, "src": "2167:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "id": 2560, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2551, "src": "2188:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2559, "name": "previewMint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2846, "src": "2176:11:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, "id": 2561, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2176:19:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2167:28:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2563, "nodeType": "ExpressionStatement", "src": "2167:28:4" }, { "expression": { "arguments": [ { "expression": { "id": 2567, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2361:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 2568, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "2361:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "id": 2571, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2381:4:4", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC4626_$2953", "typeString": "contract ERC4626" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_ERC4626_$2953", "typeString": "contract ERC4626" } ], "id": 2570, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2373:7:4", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 2569, "name": "address", "nodeType": "ElementaryTypeName", "src": "2373:7:4", "typeDescriptions": {} } }, "id": 2572, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2373:13:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2573, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2556, "src": "2388:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2564, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2475, "src": "2338:5:4", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$31408", "typeString": "contract ERC20" } }, "id": 2566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 32744, "src": "2338:22:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$31408_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$31408_$", "typeString": "function (contract ERC20,address,address,uint256)" } }, "id": 2574, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2338:57:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2575, "nodeType": "ExpressionStatement", "src": "2338:57:4" }, { "expression": { "arguments": [ { "id": 2577, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2553, "src": "2412:8:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2578, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2551, "src": "2422:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2576, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31379, "src": "2406:5:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 2579, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2406:23:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2580, "nodeType": "ExpressionStatement", "src": "2406:23:4" }, { "eventCall": { "arguments": [ { "expression": { "id": 2582, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2453:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 2583, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "2453:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2584, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2553, "src": "2465:8:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2585, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2556, "src": "2475:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 2586, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2551, "src": "2483:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2581, "name": "Deposit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2460, "src": "2445:7:4", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256,uint256)" } }, "id": 2587, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2445:45:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2588, "nodeType": "EmitStatement", "src": "2440:50:4" }, { "expression": { "arguments": [ { "id": 2590, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2556, "src": "2514:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 2591, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2551, "src": "2522:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2589, "name": "afterDeposit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2952, "src": "2501:12:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)" } }, "id": 2592, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2501:28:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2593, "nodeType": "ExpressionStatement", "src": "2501:28:4" } ] }, "functionSelector": "94bf804d", "implemented": true, "kind": "function", "modifiers": [], "name": "mint", "nameLocation": "2078:4:4", "parameters": { "id": 2554, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2551, "mutability": "mutable", "name": "shares", "nameLocation": "2091:6:4", "nodeType": "VariableDeclaration", "scope": 2595, "src": "2083:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2550, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2083:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 2553, "mutability": "mutable", "name": "receiver", "nameLocation": "2107:8:4", "nodeType": "VariableDeclaration", "scope": 2595, "src": "2099:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2552, "name": "address", "nodeType": "ElementaryTypeName", "src": "2099:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "2082:34:4" }, "returnParameters": { "id": 2557, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2556, "mutability": "mutable", "name": "assets", "nameLocation": "2149:6:4", "nodeType": "VariableDeclaration", "scope": 2595, "src": "2141:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2555, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2141:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "2140:16:4" }, "scope": 2953, "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "id": 2673, "nodeType": "FunctionDefinition", "src": "2542:679:4", "body": { "id": 2672, "nodeType": "Block", "src": "2679:542:4", "statements": [ { "expression": { "id": 2610, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 2606, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2604, "src": "2689:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "id": 2608, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2597, "src": "2714:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2607, "name": "previewWithdraw", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2870, "src": "2698:15:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, "id": 2609, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2698:23:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2689:32:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2611, "nodeType": "ExpressionStatement", "src": "2689:32:4" }, { "condition": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 2615, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 2612, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2803:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 2613, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "2803:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "id": 2614, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2601, "src": "2817:5:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2803:19:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2645, "nodeType": "IfStatement", "src": "2799:228:4", "trueBody": { "id": 2644, "nodeType": "Block", "src": "2824:203:4", "statements": [ { "assignments": [ 2617 ], "declarations": [ { "constant": false, "id": 2617, "mutability": "mutable", "name": "allowed", "nameLocation": "2846:7:4", "nodeType": "VariableDeclaration", "scope": 2644, "src": "2838:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2616, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2838:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 2624, "initialValue": { "baseExpression": { "baseExpression": { "id": 2618, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31057, "src": "2856:9:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 2620, "indexExpression": { "id": 2619, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2601, "src": "2866:5:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2856:16:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 2623, "indexExpression": { "expression": { "id": 2621, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2873:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 2622, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "2873:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2856:28:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "2838:46:4" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2631, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 2625, "name": "allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2617, "src": "2939:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "expression": { "arguments": [ { "id": 2628, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2955:7:4", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 2627, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2955:7:4", "typeDescriptions": {} } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" } ], "id": 2626, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "2950:4:4", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 2629, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2950:13:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_uint256", "typeString": "type(uint256)" } }, "id": 2630, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "max", "nodeType": "MemberAccess", "src": "2950:17:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2939:28:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2643, "nodeType": "IfStatement", "src": "2935:81:4", "trueBody": { "expression": { "id": 2641, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "baseExpression": { "id": 2632, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31057, "src": "2969:9:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 2636, "indexExpression": { "id": 2633, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2601, "src": "2979:5:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2969:16:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 2637, "indexExpression": { "expression": { "id": 2634, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2986:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 2635, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "2986:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2969:28:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2640, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 2638, "name": "allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2617, "src": "3000:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "id": 2639, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2604, "src": "3010:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3000:16:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2969:47:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2642, "nodeType": "ExpressionStatement", "src": "2969:47:4" } } ] } }, { "expression": { "arguments": [ { "id": 2647, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2597, "src": "3052:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 2648, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2604, "src": "3060:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2646, "name": "beforeWithdraw", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2944, "src": "3037:14:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)" } }, "id": 2649, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3037:30:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2650, "nodeType": "ExpressionStatement", "src": "3037:30:4" }, { "expression": { "arguments": [ { "id": 2652, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2601, "src": "3084:5:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2653, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2604, "src": "3091:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2651, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31407, "src": "3078:5:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 2654, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3078:20:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2655, "nodeType": "ExpressionStatement", "src": "3078:20:4" }, { "eventCall": { "arguments": [ { "expression": { "id": 2657, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3123:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 2658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "3123:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2659, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2599, "src": "3135:8:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2660, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2601, "src": "3145:5:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2661, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2597, "src": "3152:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 2662, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2604, "src": "3160:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2656, "name": "Withdraw", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2472, "src": "3114:8:4", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,address,address,uint256,uint256)" } }, "id": 2663, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3114:53:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2664, "nodeType": "EmitStatement", "src": "3109:58:4" }, { "expression": { "arguments": [ { "id": 2668, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2599, "src": "3197:8:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2669, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2597, "src": "3207:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2665, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2475, "src": "3178:5:4", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$31408", "typeString": "contract ERC20" } }, "id": 2667, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 32764, "src": "3178:18:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$31408_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$31408_$", "typeString": "function (contract ERC20,address,uint256)" } }, "id": 2670, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3178:36:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2671, "nodeType": "ExpressionStatement", "src": "3178:36:4" } ] }, "functionSelector": "b460af94", "implemented": true, "kind": "function", "modifiers": [], "name": "withdraw", "nameLocation": "2551:8:4", "parameters": { "id": 2602, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2597, "mutability": "mutable", "name": "assets", "nameLocation": "2577:6:4", "nodeType": "VariableDeclaration", "scope": 2673, "src": "2569:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2596, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2569:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 2599, "mutability": "mutable", "name": "receiver", "nameLocation": "2601:8:4", "nodeType": "VariableDeclaration", "scope": 2673, "src": "2593:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2598, "name": "address", "nodeType": "ElementaryTypeName", "src": "2593:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 2601, "mutability": "mutable", "name": "owner", "nameLocation": "2627:5:4", "nodeType": "VariableDeclaration", "scope": 2673, "src": "2619:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2600, "name": "address", "nodeType": "ElementaryTypeName", "src": "2619:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "2559:79:4" }, "returnParameters": { "id": 2605, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2604, "mutability": "mutable", "name": "shares", "nameLocation": "2671:6:4", "nodeType": "VariableDeclaration", "scope": 2673, "src": "2663:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2603, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2663:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "2662:16:4" }, "scope": 2953, "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "id": 2757, "nodeType": "FunctionDefinition", "src": "3227:713:4", "body": { "id": 2756, "nodeType": "Block", "src": "3362:578:4", "statements": [ { "condition": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 2687, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 2684, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3376:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 2685, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "3376:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "id": 2686, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "3390:5:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3376:19:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2717, "nodeType": "IfStatement", "src": "3372:228:4", "trueBody": { "id": 2716, "nodeType": "Block", "src": "3397:203:4", "statements": [ { "assignments": [ 2689 ], "declarations": [ { "constant": false, "id": 2689, "mutability": "mutable", "name": "allowed", "nameLocation": "3419:7:4", "nodeType": "VariableDeclaration", "scope": 2716, "src": "3411:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2688, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3411:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 2696, "initialValue": { "baseExpression": { "baseExpression": { "id": 2690, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31057, "src": "3429:9:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 2692, "indexExpression": { "id": 2691, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "3439:5:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3429:16:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 2695, "indexExpression": { "expression": { "id": 2693, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3446:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 2694, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "3446:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3429:28:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "3411:46:4" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2703, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 2697, "name": "allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2689, "src": "3512:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "expression": { "arguments": [ { "id": 2700, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3528:7:4", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 2699, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3528:7:4", "typeDescriptions": {} } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" } ], "id": 2698, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "3523:4:4", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 2701, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3523:13:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_uint256", "typeString": "type(uint256)" } }, "id": 2702, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "max", "nodeType": "MemberAccess", "src": "3523:17:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3512:28:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 2715, "nodeType": "IfStatement", "src": "3508:81:4", "trueBody": { "expression": { "id": 2713, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "baseExpression": { "id": 2704, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31057, "src": "3542:9:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 2708, "indexExpression": { "id": 2705, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "3552:5:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3542:16:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 2709, "indexExpression": { "expression": { "id": 2706, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3559:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 2707, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "3559:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3542:28:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2712, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 2710, "name": "allowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2689, "src": "3573:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "id": 2711, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2675, "src": "3583:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3573:16:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3542:47:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2714, "nodeType": "ExpressionStatement", "src": "3542:47:4" } } ] } }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2726, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "components": [ { "id": 2723, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 2719, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2682, "src": "3693:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "id": 2721, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2675, "src": "3716:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2720, "name": "previewRedeem", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2882, "src": "3702:13:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, "id": 2722, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3702:21:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3693:30:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 2724, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3692:32:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "hexValue": "30", "id": 2725, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3728:1:4", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3692:37:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "5a45524f5f415353455453", "id": 2727, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3731:13:4", "typeDescriptions": { "typeIdentifier": "t_stringliteral_bf169ab2ef12d57708bb5afe72ea54ba3ad2eccb91dd95f37571afa377c52483", "typeString": "literal_string \"ZERO_ASSETS\"" }, "value": "ZERO_ASSETS" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_bf169ab2ef12d57708bb5afe72ea54ba3ad2eccb91dd95f37571afa377c52483", "typeString": "literal_string \"ZERO_ASSETS\"" } ], "id": 2718, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "3684:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 2728, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3684:61:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2729, "nodeType": "ExpressionStatement", "src": "3684:61:4" }, { "expression": { "arguments": [ { "id": 2731, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2682, "src": "3771:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 2732, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2675, "src": "3779:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2730, "name": "beforeWithdraw", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2944, "src": "3756:14:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)" } }, "id": 2733, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3756:30:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2734, "nodeType": "ExpressionStatement", "src": "3756:30:4" }, { "expression": { "arguments": [ { "id": 2736, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "3803:5:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2737, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2675, "src": "3810:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2735, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31407, "src": "3797:5:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 2738, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3797:20:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2739, "nodeType": "ExpressionStatement", "src": "3797:20:4" }, { "eventCall": { "arguments": [ { "expression": { "id": 2741, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3842:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 2742, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "3842:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2743, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2677, "src": "3854:8:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2744, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2679, "src": "3864:5:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2745, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2682, "src": "3871:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 2746, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2675, "src": "3879:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2740, "name": "Withdraw", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2472, "src": "3833:8:4", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,address,address,uint256,uint256)" } }, "id": 2747, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3833:53:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2748, "nodeType": "EmitStatement", "src": "3828:58:4" }, { "expression": { "arguments": [ { "id": 2752, "name": "receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2677, "src": "3916:8:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 2753, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2682, "src": "3926:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2749, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2475, "src": "3897:5:4", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$31408", "typeString": "contract ERC20" } }, "id": 2751, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 32764, "src": "3897:18:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$31408_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$31408_$", "typeString": "function (contract ERC20,address,uint256)" } }, "id": 2754, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3897:36:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2755, "nodeType": "ExpressionStatement", "src": "3897:36:4" } ] }, "functionSelector": "ba087652", "implemented": true, "kind": "function", "modifiers": [], "name": "redeem", "nameLocation": "3236:6:4", "parameters": { "id": 2680, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2675, "mutability": "mutable", "name": "shares", "nameLocation": "3260:6:4", "nodeType": "VariableDeclaration", "scope": 2757, "src": "3252:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2674, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3252:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 2677, "mutability": "mutable", "name": "receiver", "nameLocation": "3284:8:4", "nodeType": "VariableDeclaration", "scope": 2757, "src": "3276:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2676, "name": "address", "nodeType": "ElementaryTypeName", "src": "3276:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 2679, "mutability": "mutable", "name": "owner", "nameLocation": "3310:5:4", "nodeType": "VariableDeclaration", "scope": 2757, "src": "3302:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2678, "name": "address", "nodeType": "ElementaryTypeName", "src": "3302:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "3242:79:4" }, "returnParameters": { "id": 2683, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2682, "mutability": "mutable", "name": "assets", "nameLocation": "3354:6:4", "nodeType": "VariableDeclaration", "scope": 2757, "src": "3346:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2681, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3346:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "3345:16:4" }, "scope": 2953, "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "id": 2762, "nodeType": "FunctionDefinition", "src": "4130:61:4", "functionSelector": "01e1d114", "implemented": false, "kind": "function", "modifiers": [], "name": "totalAssets", "nameLocation": "4139:11:4", "parameters": { "id": 2758, "nodeType": "ParameterList", "parameters": [], "src": "4150:2:4" }, "returnParameters": { "id": 2761, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2760, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2762, "src": "4182:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2759, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4182:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "4181:9:4" }, "scope": 2953, "stateMutability": "view", "virtual": true, "visibility": "public" }, { "id": 2786, "nodeType": "FunctionDefinition", "src": "4197:257:4", "body": { "id": 2785, "nodeType": "Block", "src": "4276:178:4", "statements": [ { "assignments": [ 2770 ], "declarations": [ { "constant": false, "id": 2770, "mutability": "mutable", "name": "supply", "nameLocation": "4294:6:4", "nodeType": "VariableDeclaration", "scope": 2785, "src": "4286:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2769, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4286:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 2772, "initialValue": { "id": 2771, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31047, "src": "4303:11:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "4286:28:4" }, { "expression": { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2775, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 2773, "name": "supply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2770, "src": "4384:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 2774, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4394:1:4", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4384:11:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseExpression": { "arguments": [ { "id": 2779, "name": "supply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2770, "src": "4425:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 2780, "name": "totalAssets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2762, "src": "4433:11:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 2781, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4433:13:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2777, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2764, "src": "4407:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2778, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "mulDivDown", "nodeType": "MemberAccess", "referencedDeclaration": 32285, "src": "4407:17:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" } }, "id": 2782, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4407:40:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2783, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "4384:63:4", "trueExpression": { "id": 2776, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2764, "src": "4398:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 2768, "id": 2784, "nodeType": "Return", "src": "4377:70:4" } ] }, "functionSelector": "c6e6f592", "implemented": true, "kind": "function", "modifiers": [], "name": "convertToShares", "nameLocation": "4206:15:4", "parameters": { "id": 2765, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2764, "mutability": "mutable", "name": "assets", "nameLocation": "4230:6:4", "nodeType": "VariableDeclaration", "scope": 2786, "src": "4222:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2763, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4222:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "4221:16:4" }, "returnParameters": { "id": 2768, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2767, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2786, "src": "4267:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2766, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4267:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "4266:9:4" }, "scope": 2953, "stateMutability": "view", "virtual": true, "visibility": "public" }, { "id": 2810, "nodeType": "FunctionDefinition", "src": "4460:257:4", "body": { "id": 2809, "nodeType": "Block", "src": "4539:178:4", "statements": [ { "assignments": [ 2794 ], "declarations": [ { "constant": false, "id": 2794, "mutability": "mutable", "name": "supply", "nameLocation": "4557:6:4", "nodeType": "VariableDeclaration", "scope": 2809, "src": "4549:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2793, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4549:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 2796, "initialValue": { "id": 2795, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31047, "src": "4566:11:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "4549:28:4" }, { "expression": { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2799, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 2797, "name": "supply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2794, "src": "4647:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 2798, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4657:1:4", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4647:11:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseExpression": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 2803, "name": "totalAssets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2762, "src": "4688:11:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 2804, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4688:13:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 2805, "name": "supply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2794, "src": "4703:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2801, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2788, "src": "4670:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2802, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "mulDivDown", "nodeType": "MemberAccess", "referencedDeclaration": 32285, "src": "4670:17:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" } }, "id": 2806, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4670:40:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2807, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "4647:63:4", "trueExpression": { "id": 2800, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2788, "src": "4661:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 2792, "id": 2808, "nodeType": "Return", "src": "4640:70:4" } ] }, "functionSelector": "07a2d13a", "implemented": true, "kind": "function", "modifiers": [], "name": "convertToAssets", "nameLocation": "4469:15:4", "parameters": { "id": 2789, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2788, "mutability": "mutable", "name": "shares", "nameLocation": "4493:6:4", "nodeType": "VariableDeclaration", "scope": 2810, "src": "4485:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2787, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4485:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "4484:16:4" }, "returnParameters": { "id": 2792, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2791, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2810, "src": "4530:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2790, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4530:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "4529:9:4" }, "scope": 2953, "stateMutability": "view", "virtual": true, "visibility": "public" }, { "id": 2822, "nodeType": "FunctionDefinition", "src": "4723:125:4", "body": { "id": 2821, "nodeType": "Block", "src": "4801:47:4", "statements": [ { "expression": { "arguments": [ { "id": 2818, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2812, "src": "4834:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2817, "name": "convertToShares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2786, "src": "4818:15:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, "id": 2819, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4818:23:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 2816, "id": 2820, "nodeType": "Return", "src": "4811:30:4" } ] }, "functionSelector": "ef8b30f7", "implemented": true, "kind": "function", "modifiers": [], "name": "previewDeposit", "nameLocation": "4732:14:4", "parameters": { "id": 2813, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2812, "mutability": "mutable", "name": "assets", "nameLocation": "4755:6:4", "nodeType": "VariableDeclaration", "scope": 2822, "src": "4747:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2811, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4747:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "4746:16:4" }, "returnParameters": { "id": 2816, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2815, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2822, "src": "4792:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2814, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4792:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "4791:9:4" }, "scope": 2953, "stateMutability": "view", "virtual": true, "visibility": "public" }, { "id": 2846, "nodeType": "FunctionDefinition", "src": "4854:251:4", "body": { "id": 2845, "nodeType": "Block", "src": "4929:176:4", "statements": [ { "assignments": [ 2830 ], "declarations": [ { "constant": false, "id": 2830, "mutability": "mutable", "name": "supply", "nameLocation": "4947:6:4", "nodeType": "VariableDeclaration", "scope": 2845, "src": "4939:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2829, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4939:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 2832, "initialValue": { "id": 2831, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31047, "src": "4956:11:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "4939:28:4" }, { "expression": { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2835, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 2833, "name": "supply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2830, "src": "5037:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 2834, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5047:1:4", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "5037:11:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseExpression": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 2839, "name": "totalAssets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2762, "src": "5076:11:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 2840, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5076:13:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 2841, "name": "supply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2830, "src": "5091:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2837, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2824, "src": "5060:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "mulDivUp", "nodeType": "MemberAccess", "referencedDeclaration": 32298, "src": "5060:15:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" } }, "id": 2842, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5060:38:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2843, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "5037:61:4", "trueExpression": { "id": 2836, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2824, "src": "5051:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 2828, "id": 2844, "nodeType": "Return", "src": "5030:68:4" } ] }, "functionSelector": "b3d7f6b9", "implemented": true, "kind": "function", "modifiers": [], "name": "previewMint", "nameLocation": "4863:11:4", "parameters": { "id": 2825, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2824, "mutability": "mutable", "name": "shares", "nameLocation": "4883:6:4", "nodeType": "VariableDeclaration", "scope": 2846, "src": "4875:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2823, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4875:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "4874:16:4" }, "returnParameters": { "id": 2828, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2827, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2846, "src": "4920:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2826, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4920:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "4919:9:4" }, "scope": 2953, "stateMutability": "view", "virtual": true, "visibility": "public" }, { "id": 2870, "nodeType": "FunctionDefinition", "src": "5111:255:4", "body": { "id": 2869, "nodeType": "Block", "src": "5190:176:4", "statements": [ { "assignments": [ 2854 ], "declarations": [ { "constant": false, "id": 2854, "mutability": "mutable", "name": "supply", "nameLocation": "5208:6:4", "nodeType": "VariableDeclaration", "scope": 2869, "src": "5200:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2853, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5200:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 2856, "initialValue": { "id": 2855, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31047, "src": "5217:11:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "5200:28:4" }, { "expression": { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2859, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 2857, "name": "supply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2854, "src": "5298:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 2858, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5308:1:4", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "5298:11:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseExpression": { "arguments": [ { "id": 2863, "name": "supply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2854, "src": "5337:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 2864, "name": "totalAssets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2762, "src": "5345:11:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 2865, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5345:13:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 2861, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2848, "src": "5321:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2862, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "mulDivUp", "nodeType": "MemberAccess", "referencedDeclaration": 32298, "src": "5321:15:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" } }, "id": 2866, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5321:38:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 2867, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "5298:61:4", "trueExpression": { "id": 2860, "name": "assets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2848, "src": "5312:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 2852, "id": 2868, "nodeType": "Return", "src": "5291:68:4" } ] }, "functionSelector": "0a28a477", "implemented": true, "kind": "function", "modifiers": [], "name": "previewWithdraw", "nameLocation": "5120:15:4", "parameters": { "id": 2849, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2848, "mutability": "mutable", "name": "assets", "nameLocation": "5144:6:4", "nodeType": "VariableDeclaration", "scope": 2870, "src": "5136:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2847, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5136:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "5135:16:4" }, "returnParameters": { "id": 2852, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2851, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2870, "src": "5181:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2850, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5181:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "5180:9:4" }, "scope": 2953, "stateMutability": "view", "virtual": true, "visibility": "public" }, { "id": 2882, "nodeType": "FunctionDefinition", "src": "5372:124:4", "body": { "id": 2881, "nodeType": "Block", "src": "5449:47:4", "statements": [ { "expression": { "arguments": [ { "id": 2878, "name": "shares", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2872, "src": "5482:6:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2877, "name": "convertToAssets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2810, "src": "5466:15:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, "id": 2879, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5466:23:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 2876, "id": 2880, "nodeType": "Return", "src": "5459:30:4" } ] }, "functionSelector": "4cdad506", "implemented": true, "kind": "function", "modifiers": [], "name": "previewRedeem", "nameLocation": "5381:13:4", "parameters": { "id": 2873, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2872, "mutability": "mutable", "name": "shares", "nameLocation": "5403:6:4", "nodeType": "VariableDeclaration", "scope": 2882, "src": "5395:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2871, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5395:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "5394:16:4" }, "returnParameters": { "id": 2876, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2875, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2882, "src": "5440:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2874, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5440:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "5439:9:4" }, "scope": 2953, "stateMutability": "view", "virtual": true, "visibility": "public" }, { "id": 2896, "nodeType": "FunctionDefinition", "src": "5693:108:4", "body": { "id": 2895, "nodeType": "Block", "src": "5760:41:4", "statements": [ { "expression": { "expression": { "arguments": [ { "id": 2891, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5782:7:4", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 2890, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5782:7:4", "typeDescriptions": {} } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" } ], "id": 2889, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "5777:4:4", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 2892, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5777:13:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_uint256", "typeString": "type(uint256)" } }, "id": 2893, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "max", "nodeType": "MemberAccess", "src": "5777:17:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 2888, "id": 2894, "nodeType": "Return", "src": "5770:24:4" } ] }, "functionSelector": "402d267d", "implemented": true, "kind": "function", "modifiers": [], "name": "maxDeposit", "nameLocation": "5702:10:4", "parameters": { "id": 2885, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2884, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2896, "src": "5713:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2883, "name": "address", "nodeType": "ElementaryTypeName", "src": "5713:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "5712:9:4" }, "returnParameters": { "id": 2888, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2887, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2896, "src": "5751:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2886, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5751:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "5750:9:4" }, "scope": 2953, "stateMutability": "view", "virtual": true, "visibility": "public" }, { "id": 2910, "nodeType": "FunctionDefinition", "src": "5807:105:4", "body": { "id": 2909, "nodeType": "Block", "src": "5871:41:4", "statements": [ { "expression": { "expression": { "arguments": [ { "id": 2905, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5893:7:4", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 2904, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5893:7:4", "typeDescriptions": {} } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" } ], "id": 2903, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "5888:4:4", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 2906, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5888:13:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_uint256", "typeString": "type(uint256)" } }, "id": 2907, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "max", "nodeType": "MemberAccess", "src": "5888:17:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 2902, "id": 2908, "nodeType": "Return", "src": "5881:24:4" } ] }, "functionSelector": "c63d75b6", "implemented": true, "kind": "function", "modifiers": [], "name": "maxMint", "nameLocation": "5816:7:4", "parameters": { "id": 2899, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2898, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2910, "src": "5824:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2897, "name": "address", "nodeType": "ElementaryTypeName", "src": "5824:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "5823:9:4" }, "returnParameters": { "id": 2902, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2901, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2910, "src": "5862:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2900, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5862:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "5861:9:4" }, "scope": 2953, "stateMutability": "view", "virtual": true, "visibility": "public" }, { "id": 2924, "nodeType": "FunctionDefinition", "src": "5918:131:4", "body": { "id": 2923, "nodeType": "Block", "src": "5992:57:4", "statements": [ { "expression": { "arguments": [ { "baseExpression": { "id": 2918, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31051, "src": "6025:9:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 2920, "indexExpression": { "id": 2919, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2912, "src": "6035:5:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6025:16:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 2917, "name": "convertToAssets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2810, "src": "6009:15:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, "id": 2921, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6009:33:4", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 2916, "id": 2922, "nodeType": "Return", "src": "6002:40:4" } ] }, "functionSelector": "ce96cb77", "implemented": true, "kind": "function", "modifiers": [], "name": "maxWithdraw", "nameLocation": "5927:11:4", "parameters": { "id": 2913, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2912, "mutability": "mutable", "name": "owner", "nameLocation": "5947:5:4", "nodeType": "VariableDeclaration", "scope": 2924, "src": "5939:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2911, "name": "address", "nodeType": "ElementaryTypeName", "src": "5939:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "5938:15:4" }, "returnParameters": { "id": 2916, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2915, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2924, "src": "5983:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2914, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5983:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "5982:9:4" }, "scope": 2953, "stateMutability": "view", "virtual": true, "visibility": "public" }, { "id": 2936, "nodeType": "FunctionDefinition", "src": "6055:112:4", "body": { "id": 2935, "nodeType": "Block", "src": "6127:40:4", "statements": [ { "expression": { "baseExpression": { "id": 2931, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 31051, "src": "6144:9:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 2933, "indexExpression": { "id": 2932, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2926, "src": "6154:5:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6144:16:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 2930, "id": 2934, "nodeType": "Return", "src": "6137:23:4" } ] }, "functionSelector": "d905777e", "implemented": true, "kind": "function", "modifiers": [], "name": "maxRedeem", "nameLocation": "6064:9:4", "parameters": { "id": 2927, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2926, "mutability": "mutable", "name": "owner", "nameLocation": "6082:5:4", "nodeType": "VariableDeclaration", "scope": 2936, "src": "6074:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2925, "name": "address", "nodeType": "ElementaryTypeName", "src": "6074:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "6073:15:4" }, "returnParameters": { "id": 2930, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2929, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2936, "src": "6118:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2928, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6118:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "6117:9:4" }, "scope": 2953, "stateMutability": "view", "virtual": true, "visibility": "public" }, { "id": 2944, "nodeType": "FunctionDefinition", "src": "6359:75:4", "body": { "id": 2943, "nodeType": "Block", "src": "6432:2:4", "statements": [] }, "implemented": true, "kind": "function", "modifiers": [], "name": "beforeWithdraw", "nameLocation": "6368:14:4", "parameters": { "id": 2941, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2938, "mutability": "mutable", "name": "assets", "nameLocation": "6391:6:4", "nodeType": "VariableDeclaration", "scope": 2944, "src": "6383:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2937, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6383:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 2940, "mutability": "mutable", "name": "shares", "nameLocation": "6407:6:4", "nodeType": "VariableDeclaration", "scope": 2944, "src": "6399:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2939, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6399:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "6382:32:4" }, "returnParameters": { "id": 2942, "nodeType": "ParameterList", "parameters": [], "src": "6432:0:4" }, "scope": 2953, "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "id": 2952, "nodeType": "FunctionDefinition", "src": "6440:73:4", "body": { "id": 2951, "nodeType": "Block", "src": "6511:2:4", "statements": [] }, "implemented": true, "kind": "function", "modifiers": [], "name": "afterDeposit", "nameLocation": "6449:12:4", "parameters": { "id": 2949, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2946, "mutability": "mutable", "name": "assets", "nameLocation": "6470:6:4", "nodeType": "VariableDeclaration", "scope": 2952, "src": "6462:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2945, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6462:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 2948, "mutability": "mutable", "name": "shares", "nameLocation": "6486:6:4", "nodeType": "VariableDeclaration", "scope": 2952, "src": "6478:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2947, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6478:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "6461:32:4" }, "returnParameters": { "id": 2950, "nodeType": "ParameterList", "parameters": [], "src": "6511:0:4" }, "scope": 2953, "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" } ], "abstract": true, "baseContracts": [ { "baseName": { "id": 2442, "name": "ERC20", "nodeType": "IdentifierPath", "referencedDeclaration": 31408, "src": "424:5:4" }, "id": 2443, "nodeType": "InheritanceSpecifier", "src": "424:5:4" } ], "canonicalName": "ERC4626", "contractDependencies": [], "contractKind": "contract", "documentation": { "id": 2441, "nodeType": "StructuredDocumentation", "src": "240:155:4", "text": "@notice Minimal ERC4626 tokenized Vault implementation.\n @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/mixins/ERC4626.sol)" }, "fullyImplemented": false, "linearizedBaseContracts": [ 2953, 31408 ], "name": "ERC4626", "nameLocation": "413:7:4", "scope": 2954, "usedErrors": [] } ], "license": "AGPL-3.0-only" }