ethers-rs/ethers-solc/test-data/ast/ast-erc4626.json

2 lines
110 KiB
JSON

{"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"}