diff --git a/ASSIGNMENT.md b/ASSIGNMENT.md new file mode 100644 index 00000000..1c984ee0 --- /dev/null +++ b/ASSIGNMENT.md @@ -0,0 +1,23 @@ +# Vault Contract Assignment + +## Overview +This is the Vault contract assignment (as-w4-d1). The Vault contract provides functionality for [contract purpose]. + +## Setup +1. Install dependencies: `npm install` +2. Configure hardhat: See `hardhat.config.ts` +3. Run tests: `npm test` + +## Contract Details +- **Location**: `Assignment/solidity-assignment7/contracts/vault/` +- **Language**: Solidity + +## Testing +```bash +npm test +``` + +## Deployment +```bash +npx hardhat run scripts/deploy.ts +``` diff --git a/Assignment/solidity-assignment7/contracts/vault/artifacts/artifacts.d.ts b/Assignment/solidity-assignment7/contracts/vault/artifacts/artifacts.d.ts new file mode 100644 index 00000000..e69de29b diff --git a/Assignment/solidity-assignment7/contracts/vault/artifacts/build-info/solc-0_8_28-20629223a15770955c9b8840e528f9d58e5be6d8.json b/Assignment/solidity-assignment7/contracts/vault/artifacts/build-info/solc-0_8_28-20629223a15770955c9b8840e528f9d58e5be6d8.json new file mode 100644 index 00000000..74805645 --- /dev/null +++ b/Assignment/solidity-assignment7/contracts/vault/artifacts/build-info/solc-0_8_28-20629223a15770955c9b8840e528f9d58e5be6d8.json @@ -0,0 +1,35 @@ +{ + "_format": "hh3-sol-build-info-1", + "id": "solc-0_8_28-20629223a15770955c9b8840e528f9d58e5be6d8", + "solcVersion": "0.8.28", + "solcLongVersion": "0.8.28+commit.7893614a", + "userSourceNameMap": { + "contracts/vault.sol": "project/contracts/vault.sol" + }, + "input": { + "language": "Solidity", + "settings": { + "evmVersion": "cancun", + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "remappings": [] + }, + "sources": { + "project/contracts/vault.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.28;\n\ncontract TimelockedSavingsVault {\n struct Vault {\n uint256 amount;\n uint256 unlockTime;\n bool active;\n }\n\n uint256 public constant LOCK_DURATION = 24 hours; // Fixed lock duration for every deposit.\n\n mapping(address => Vault) private vaults;\n\n event Deposit(address indexed user, uint256 amount, uint256 unlockTime);\n event Withdraw(address indexed user, uint256 amount);\n\n function deposit(uint256 unlockTime) external payable {\n require(msg.value > 0, \"Deposit must be > 0\");\n require(unlockTime == block.timestamp + 24 hours, \"Unlock time must be exactly 24h\");\n require(!vaults[msg.sender].active, \"Vault already active\");\n\n vaults[msg.sender] = Vault({\n amount: msg.value,\n unlockTime: unlockTime,\n active: true\n });\n\n emit Deposit(msg.sender, msg.value, unlockTime);\n }\n\n function withdraw() external {\n Vault storage v = vaults[msg.sender];\n require(v.active, \"No active vault\");\n require(block.timestamp >= v.unlockTime, \"Too early\");\n uint256 amount = v.amount;\n require(amount > 0, \"No balance\");\n\n v.amount = 0;\n v.active = false;\n v.unlockTime = 0;\n\n (bool success, ) = payable(msg.sender).call{value: amount}(\"\");\n require(success, \"Withdraw failed\");\n emit Withdraw(msg.sender, amount);\n }\n\n function getVault(address user) external view returns (uint256 amount, uint256 unlockTime, bool active) {\n Vault storage v = vaults[user];\n return (v.amount, v.unlockTime, v.active);\n }\n\n receive() external payable {\n revert(\"Direct ETH not allowed\");\n }\n\n fallback() external payable {\n revert(\"Direct ETH not allowed\");\n }\n}\n" + } + } + } +} \ No newline at end of file diff --git a/Assignment/solidity-assignment7/contracts/vault/artifacts/build-info/solc-0_8_28-20629223a15770955c9b8840e528f9d58e5be6d8.output.json b/Assignment/solidity-assignment7/contracts/vault/artifacts/build-info/solc-0_8_28-20629223a15770955c9b8840e528f9d58e5be6d8.output.json new file mode 100644 index 00000000..b96c3fe7 --- /dev/null +++ b/Assignment/solidity-assignment7/contracts/vault/artifacts/build-info/solc-0_8_28-20629223a15770955c9b8840e528f9d58e5be6d8.output.json @@ -0,0 +1 @@ +{"_format":"hh3-sol-build-info-output-1","id":"solc-0_8_28-20629223a15770955c9b8840e528f9d58e5be6d8","output":{"contracts":{"project/contracts/vault.sol":{"TimelockedSavingsVault":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlockTime","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"LOCK_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"unlockTime","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getVault","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"unlockTime","type":"uint256"},{"internalType":"bool","name":"active","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600e575f5ffd5b50610bb98061001c5f395ff3fe608060405260043610610042575f3560e01c80630eb9af38146100bd5780633ccfd60b146100fb578063485d383414610111578063b6b55f251461013b57610082565b36610082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161007990610667565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100b490610667565b60405180910390fd5b3480156100c8575f5ffd5b506100e360048036038101906100de91906106e3565b610157565b6040516100f293929190610740565b60405180910390f35b348015610106575f5ffd5b5061010f6101c1565b005b34801561011c575f5ffd5b50610125610407565b6040516101329190610775565b60405180910390f35b610155600480360381019061015091906107b8565b61040e565b005b5f5f5f5f5f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f01548160010154826002015f9054906101000a900460ff16935093509350509193909250565b5f5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050806002015f9054906101000a900460ff16610250576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102479061082d565b60405180910390fd5b8060010154421015610297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028e90610895565b60405180910390fd5b5f815f015490505f81116102e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d7906108fd565b60405180910390fd5b5f825f01819055505f826002015f6101000a81548160ff0219169083151502179055505f82600101819055505f3373ffffffffffffffffffffffffffffffffffffffff168260405161033190610948565b5f6040518083038185875af1925050503d805f811461036b576040519150601f19603f3d011682016040523d82523d5f602084013e610370565b606091505b50509050806103b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ab906109a6565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516103fa9190610775565b60405180910390a2505050565b6201518081565b5f3411610450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044790610a0e565b60405180910390fd5b620151804261045f9190610a59565b81146104a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049790610ad6565b60405180910390fd5b5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f9054906101000a900460ff161561052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052390610b3e565b60405180910390fd5b6040518060600160405280348152602001828152602001600115158152505f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f0155602082015181600101556040820151816002015f6101000a81548160ff0219169083151502179055509050503373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a153483604051610602929190610b5c565b60405180910390a250565b5f82825260208201905092915050565b7f44697265637420455448206e6f7420616c6c6f776564000000000000000000005f82015250565b5f61065160168361060d565b915061065c8261061d565b602082019050919050565b5f6020820190508181035f83015261067e81610645565b9050919050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106b282610689565b9050919050565b6106c2816106a8565b81146106cc575f5ffd5b50565b5f813590506106dd816106b9565b92915050565b5f602082840312156106f8576106f7610685565b5b5f610705848285016106cf565b91505092915050565b5f819050919050565b6107208161070e565b82525050565b5f8115159050919050565b61073a81610726565b82525050565b5f6060820190506107535f830186610717565b6107606020830185610717565b61076d6040830184610731565b949350505050565b5f6020820190506107885f830184610717565b92915050565b6107978161070e565b81146107a1575f5ffd5b50565b5f813590506107b28161078e565b92915050565b5f602082840312156107cd576107cc610685565b5b5f6107da848285016107a4565b91505092915050565b7f4e6f20616374697665207661756c7400000000000000000000000000000000005f82015250565b5f610817600f8361060d565b9150610822826107e3565b602082019050919050565b5f6020820190508181035f8301526108448161080b565b9050919050565b7f546f6f206561726c7900000000000000000000000000000000000000000000005f82015250565b5f61087f60098361060d565b915061088a8261084b565b602082019050919050565b5f6020820190508181035f8301526108ac81610873565b9050919050565b7f4e6f2062616c616e6365000000000000000000000000000000000000000000005f82015250565b5f6108e7600a8361060d565b91506108f2826108b3565b602082019050919050565b5f6020820190508181035f830152610914816108db565b9050919050565b5f81905092915050565b50565b5f6109335f8361091b565b915061093e82610925565b5f82019050919050565b5f61095282610928565b9150819050919050565b7f5769746864726177206661696c656400000000000000000000000000000000005f82015250565b5f610990600f8361060d565b915061099b8261095c565b602082019050919050565b5f6020820190508181035f8301526109bd81610984565b9050919050565b7f4465706f736974206d757374206265203e2030000000000000000000000000005f82015250565b5f6109f860138361060d565b9150610a03826109c4565b602082019050919050565b5f6020820190508181035f830152610a25816109ec565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610a638261070e565b9150610a6e8361070e565b9250828201905080821115610a8657610a85610a2c565b5b92915050565b7f556e6c6f636b2074696d65206d7573742062652065786163746c7920323468005f82015250565b5f610ac0601f8361060d565b9150610acb82610a8c565b602082019050919050565b5f6020820190508181035f830152610aed81610ab4565b9050919050565b7f5661756c7420616c7265616479206163746976650000000000000000000000005f82015250565b5f610b2860148361060d565b9150610b3382610af4565b602082019050919050565b5f6020820190508181035f830152610b5581610b1c565b9050919050565b5f604082019050610b6f5f830185610717565b610b7c6020830184610717565b939250505056fea26469706673582212206e7089b98a959fb43d7f15a3780ed05308078d0f0a104edf440a588e08286bd764736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xBB9 DUP1 PUSH2 0x1C PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x42 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEB9AF38 EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0xFB JUMPI DUP1 PUSH4 0x485D3834 EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x13B JUMPI PUSH2 0x82 JUMP JUMPDEST CALLDATASIZE PUSH2 0x82 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x79 SWAP1 PUSH2 0x667 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB4 SWAP1 PUSH2 0x667 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xE3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xDE SWAP2 SWAP1 PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x157 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x740 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x106 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x10F PUSH2 0x1C1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x125 PUSH2 0x407 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x132 SWAP2 SWAP1 PUSH2 0x775 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x155 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x150 SWAP2 SWAP1 PUSH2 0x7B8 JUMP JUMPDEST PUSH2 0x40E JUMP JUMPDEST STOP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SWAP1 POP DUP1 PUSH0 ADD SLOAD DUP2 PUSH1 0x1 ADD SLOAD DUP3 PUSH1 0x2 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x2 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x250 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x247 SWAP1 PUSH2 0x82D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 ADD SLOAD TIMESTAMP LT ISZERO PUSH2 0x297 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x28E SWAP1 PUSH2 0x895 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 PUSH0 ADD SLOAD SWAP1 POP PUSH0 DUP2 GT PUSH2 0x2E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D7 SWAP1 PUSH2 0x8FD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 PUSH0 ADD DUP2 SWAP1 SSTORE POP PUSH0 DUP3 PUSH1 0x2 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH0 DUP3 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x331 SWAP1 PUSH2 0x948 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x36B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x370 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x3B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3AB SWAP1 PUSH2 0x9A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x884EDAD9CE6FA2440D8A54CC123490EB96D2768479D49FF9C7366125A9424364 DUP4 PUSH1 0x40 MLOAD PUSH2 0x3FA SWAP2 SWAP1 PUSH2 0x775 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH3 0x15180 DUP2 JUMP JUMPDEST PUSH0 CALLVALUE GT PUSH2 0x450 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x447 SWAP1 PUSH2 0xA0E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x15180 TIMESTAMP PUSH2 0x45F SWAP2 SWAP1 PUSH2 0xA59 JUMP JUMPDEST DUP2 EQ PUSH2 0x4A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x497 SWAP1 PUSH2 0xAD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x2 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x52C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x523 SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 CALLVALUE DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE POP PUSH0 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 ADD MLOAD DUP2 PUSH0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP SWAP1 POP POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x90890809C654F11D6E72A28FA60149770A0D11EC6C92319D6CEB2BB0A4EA1A15 CALLVALUE DUP4 PUSH1 0x40 MLOAD PUSH2 0x602 SWAP3 SWAP2 SWAP1 PUSH2 0xB5C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x44697265637420455448206E6F7420616C6C6F77656400000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x651 PUSH1 0x16 DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP2 POP PUSH2 0x65C DUP3 PUSH2 0x61D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x67E DUP2 PUSH2 0x645 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6B2 DUP3 PUSH2 0x689 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6C2 DUP2 PUSH2 0x6A8 JUMP JUMPDEST DUP2 EQ PUSH2 0x6CC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x6DD DUP2 PUSH2 0x6B9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6F8 JUMPI PUSH2 0x6F7 PUSH2 0x685 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x705 DUP5 DUP3 DUP6 ADD PUSH2 0x6CF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x720 DUP2 PUSH2 0x70E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x73A DUP2 PUSH2 0x726 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x753 PUSH0 DUP4 ADD DUP7 PUSH2 0x717 JUMP JUMPDEST PUSH2 0x760 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x717 JUMP JUMPDEST PUSH2 0x76D PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x731 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x788 PUSH0 DUP4 ADD DUP5 PUSH2 0x717 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x797 DUP2 PUSH2 0x70E JUMP JUMPDEST DUP2 EQ PUSH2 0x7A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x7B2 DUP2 PUSH2 0x78E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7CD JUMPI PUSH2 0x7CC PUSH2 0x685 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x7DA DUP5 DUP3 DUP6 ADD PUSH2 0x7A4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E6F20616374697665207661756C740000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x817 PUSH1 0xF DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP2 POP PUSH2 0x822 DUP3 PUSH2 0x7E3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x844 DUP2 PUSH2 0x80B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x546F6F206561726C790000000000000000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x87F PUSH1 0x9 DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP2 POP PUSH2 0x88A DUP3 PUSH2 0x84B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x8AC DUP2 PUSH2 0x873 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E6F2062616C616E636500000000000000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x8E7 PUSH1 0xA DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP2 POP PUSH2 0x8F2 DUP3 PUSH2 0x8B3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x914 DUP2 PUSH2 0x8DB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH2 0x933 PUSH0 DUP4 PUSH2 0x91B JUMP JUMPDEST SWAP2 POP PUSH2 0x93E DUP3 PUSH2 0x925 JUMP JUMPDEST PUSH0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x952 DUP3 PUSH2 0x928 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5769746864726177206661696C65640000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x990 PUSH1 0xF DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP2 POP PUSH2 0x99B DUP3 PUSH2 0x95C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x9BD DUP2 PUSH2 0x984 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4465706F736974206D757374206265203E203000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x9F8 PUSH1 0x13 DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP2 POP PUSH2 0xA03 DUP3 PUSH2 0x9C4 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0xA25 DUP2 PUSH2 0x9EC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0xA63 DUP3 PUSH2 0x70E JUMP JUMPDEST SWAP2 POP PUSH2 0xA6E DUP4 PUSH2 0x70E JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xA86 JUMPI PUSH2 0xA85 PUSH2 0xA2C JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x556E6C6F636B2074696D65206D7573742062652065786163746C792032346800 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0xAC0 PUSH1 0x1F DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP2 POP PUSH2 0xACB DUP3 PUSH2 0xA8C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0xAED DUP2 PUSH2 0xAB4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5661756C7420616C726561647920616374697665000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0xB28 PUSH1 0x14 DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP2 POP PUSH2 0xB33 DUP3 PUSH2 0xAF4 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0xB55 DUP2 PUSH2 0xB1C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xB6F PUSH0 DUP4 ADD DUP6 PUSH2 0x717 JUMP JUMPDEST PUSH2 0xB7C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x717 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x7089B98A959FB43D7F15A3780ED053 ADDMOD SMOD DUP14 0xF EXP LT 0x4E 0xDF PREVRANDAO EXP PC DUP15 ADDMOD 0x28 PUSH12 0xD764736F6C634300081C0033 ","sourceMap":"57:1782:0:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@LOCK_DURATION_11":{"entryPoint":1031,"id":11,"parameterSlots":0,"returnSlots":0},"@_200":{"entryPoint":null,"id":200,"parameterSlots":0,"returnSlots":0},"@_208":{"entryPoint":null,"id":208,"parameterSlots":0,"returnSlots":0},"@deposit_84":{"entryPoint":1038,"id":84,"parameterSlots":1,"returnSlots":0},"@getVault_192":{"entryPoint":343,"id":192,"parameterSlots":1,"returnSlots":3},"@withdraw_165":{"entryPoint":449,"id":165,"parameterSlots":0,"returnSlots":0},"abi_decode_t_address":{"entryPoint":1743,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":1956,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":1763,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":1976,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":1841,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_stringliteral_1e7971938948aeeb1bbe3e81ce47a5fd9bcdaf31195de25745fbcdb38ea75459_to_t_string_memory_ptr_fromStack":{"entryPoint":2059,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_2bbe70e6500e9642f2862dc923170a5f09b5a43a51b0f2c3488a318564bb6925_to_t_string_memory_ptr_fromStack":{"entryPoint":2436,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_397f20c9ee670e88dbc97000732216e0936c9de3d4dedf79ef5a506c8a043cf4_to_t_string_memory_ptr_fromStack":{"entryPoint":2267,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_413580c2bed8f5997e496999aeae2d0944cef34dd07600d725723cfeb9a27018_to_t_string_memory_ptr_fromStack":{"entryPoint":2540,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_477db204232217c50608006fa25f563193a21005da4e8c31c6e6b2e45a55c870_to_t_string_memory_ptr_fromStack":{"entryPoint":2844,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_9f6f93f20f78aace72bd65ea4b5066106f1a58ba03a145eb11ceff2dc1ab0dd1_to_t_string_memory_ptr_fromStack":{"entryPoint":2163,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":2344,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_c782715ef3bace595a1f2d9d78f66f7638016082f152b66374cd385de05e69c4_to_t_string_memory_ptr_fromStack":{"entryPoint":2740,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_d23a6e7325f0abb96141966477cca10264973d4cd302317d51a5a0dcefe34d04_to_t_string_memory_ptr_fromStack":{"entryPoint":1605,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":1815,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":2376,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1e7971938948aeeb1bbe3e81ce47a5fd9bcdaf31195de25745fbcdb38ea75459__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2093,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_2bbe70e6500e9642f2862dc923170a5f09b5a43a51b0f2c3488a318564bb6925__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2470,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_397f20c9ee670e88dbc97000732216e0936c9de3d4dedf79ef5a506c8a043cf4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2301,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_413580c2bed8f5997e496999aeae2d0944cef34dd07600d725723cfeb9a27018__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2574,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_477db204232217c50608006fa25f563193a21005da4e8c31c6e6b2e45a55c870__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2878,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9f6f93f20f78aace72bd65ea4b5066106f1a58ba03a145eb11ceff2dc1ab0dd1__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2197,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c782715ef3bace595a1f2d9d78f66f7638016082f152b66374cd385de05e69c4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2774,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d23a6e7325f0abb96141966477cca10264973d4cd302317d51a5a0dcefe34d04__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1639,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":1909,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":2908,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256_t_bool__to_t_uint256_t_uint256_t_bool__fromStack_reversed":{"entryPoint":1856,"id":null,"parameterSlots":4,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":2331,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":1549,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":2649,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":1704,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":1830,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":1673,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":1806,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2604,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":1669,"id":null,"parameterSlots":0,"returnSlots":0},"store_literal_in_memory_1e7971938948aeeb1bbe3e81ce47a5fd9bcdaf31195de25745fbcdb38ea75459":{"entryPoint":2019,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2bbe70e6500e9642f2862dc923170a5f09b5a43a51b0f2c3488a318564bb6925":{"entryPoint":2396,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_397f20c9ee670e88dbc97000732216e0936c9de3d4dedf79ef5a506c8a043cf4":{"entryPoint":2227,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_413580c2bed8f5997e496999aeae2d0944cef34dd07600d725723cfeb9a27018":{"entryPoint":2500,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_477db204232217c50608006fa25f563193a21005da4e8c31c6e6b2e45a55c870":{"entryPoint":2804,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9f6f93f20f78aace72bd65ea4b5066106f1a58ba03a145eb11ceff2dc1ab0dd1":{"entryPoint":2123,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470":{"entryPoint":2341,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c782715ef3bace595a1f2d9d78f66f7638016082f152b66374cd385de05e69c4":{"entryPoint":2700,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d23a6e7325f0abb96141966477cca10264973d4cd302317d51a5a0dcefe34d04":{"entryPoint":1565,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":1721,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":1934,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:12585:1","nodeType":"YulBlock","src":"0:12585:1","statements":[{"body":{"nativeSrc":"103:73:1","nodeType":"YulBlock","src":"103:73:1","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"120:3:1","nodeType":"YulIdentifier","src":"120:3:1"},{"name":"length","nativeSrc":"125:6:1","nodeType":"YulIdentifier","src":"125:6:1"}],"functionName":{"name":"mstore","nativeSrc":"113:6:1","nodeType":"YulIdentifier","src":"113:6:1"},"nativeSrc":"113:19:1","nodeType":"YulFunctionCall","src":"113:19:1"},"nativeSrc":"113:19:1","nodeType":"YulExpressionStatement","src":"113:19:1"},{"nativeSrc":"141:29:1","nodeType":"YulAssignment","src":"141:29:1","value":{"arguments":[{"name":"pos","nativeSrc":"160:3:1","nodeType":"YulIdentifier","src":"160:3:1"},{"kind":"number","nativeSrc":"165:4:1","nodeType":"YulLiteral","src":"165:4:1","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"156:3:1","nodeType":"YulIdentifier","src":"156:3:1"},"nativeSrc":"156:14:1","nodeType":"YulFunctionCall","src":"156:14:1"},"variableNames":[{"name":"updated_pos","nativeSrc":"141:11:1","nodeType":"YulIdentifier","src":"141:11:1"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"7:169:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"75:3:1","nodeType":"YulTypedName","src":"75:3:1","type":""},{"name":"length","nativeSrc":"80:6:1","nodeType":"YulTypedName","src":"80:6:1","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"91:11:1","nodeType":"YulTypedName","src":"91:11:1","type":""}],"src":"7:169:1"},{"body":{"nativeSrc":"288:66:1","nodeType":"YulBlock","src":"288:66:1","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"310:6:1","nodeType":"YulIdentifier","src":"310:6:1"},{"kind":"number","nativeSrc":"318:1:1","nodeType":"YulLiteral","src":"318:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"306:3:1","nodeType":"YulIdentifier","src":"306:3:1"},"nativeSrc":"306:14:1","nodeType":"YulFunctionCall","src":"306:14:1"},{"hexValue":"44697265637420455448206e6f7420616c6c6f776564","kind":"string","nativeSrc":"322:24:1","nodeType":"YulLiteral","src":"322:24:1","type":"","value":"Direct ETH not allowed"}],"functionName":{"name":"mstore","nativeSrc":"299:6:1","nodeType":"YulIdentifier","src":"299:6:1"},"nativeSrc":"299:48:1","nodeType":"YulFunctionCall","src":"299:48:1"},"nativeSrc":"299:48:1","nodeType":"YulExpressionStatement","src":"299:48:1"}]},"name":"store_literal_in_memory_d23a6e7325f0abb96141966477cca10264973d4cd302317d51a5a0dcefe34d04","nativeSrc":"182:172:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"280:6:1","nodeType":"YulTypedName","src":"280:6:1","type":""}],"src":"182:172:1"},{"body":{"nativeSrc":"506:220:1","nodeType":"YulBlock","src":"506:220:1","statements":[{"nativeSrc":"516:74:1","nodeType":"YulAssignment","src":"516:74:1","value":{"arguments":[{"name":"pos","nativeSrc":"582:3:1","nodeType":"YulIdentifier","src":"582:3:1"},{"kind":"number","nativeSrc":"587:2:1","nodeType":"YulLiteral","src":"587:2:1","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"523:58:1","nodeType":"YulIdentifier","src":"523:58:1"},"nativeSrc":"523:67:1","nodeType":"YulFunctionCall","src":"523:67:1"},"variableNames":[{"name":"pos","nativeSrc":"516:3:1","nodeType":"YulIdentifier","src":"516:3:1"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"688:3:1","nodeType":"YulIdentifier","src":"688:3:1"}],"functionName":{"name":"store_literal_in_memory_d23a6e7325f0abb96141966477cca10264973d4cd302317d51a5a0dcefe34d04","nativeSrc":"599:88:1","nodeType":"YulIdentifier","src":"599:88:1"},"nativeSrc":"599:93:1","nodeType":"YulFunctionCall","src":"599:93:1"},"nativeSrc":"599:93:1","nodeType":"YulExpressionStatement","src":"599:93:1"},{"nativeSrc":"701:19:1","nodeType":"YulAssignment","src":"701:19:1","value":{"arguments":[{"name":"pos","nativeSrc":"712:3:1","nodeType":"YulIdentifier","src":"712:3:1"},{"kind":"number","nativeSrc":"717:2:1","nodeType":"YulLiteral","src":"717:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"708:3:1","nodeType":"YulIdentifier","src":"708:3:1"},"nativeSrc":"708:12:1","nodeType":"YulFunctionCall","src":"708:12:1"},"variableNames":[{"name":"end","nativeSrc":"701:3:1","nodeType":"YulIdentifier","src":"701:3:1"}]}]},"name":"abi_encode_t_stringliteral_d23a6e7325f0abb96141966477cca10264973d4cd302317d51a5a0dcefe34d04_to_t_string_memory_ptr_fromStack","nativeSrc":"360:366:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"494:3:1","nodeType":"YulTypedName","src":"494:3:1","type":""}],"returnVariables":[{"name":"end","nativeSrc":"502:3:1","nodeType":"YulTypedName","src":"502:3:1","type":""}],"src":"360:366:1"},{"body":{"nativeSrc":"903:248:1","nodeType":"YulBlock","src":"903:248:1","statements":[{"nativeSrc":"913:26:1","nodeType":"YulAssignment","src":"913:26:1","value":{"arguments":[{"name":"headStart","nativeSrc":"925:9:1","nodeType":"YulIdentifier","src":"925:9:1"},{"kind":"number","nativeSrc":"936:2:1","nodeType":"YulLiteral","src":"936:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"921:3:1","nodeType":"YulIdentifier","src":"921:3:1"},"nativeSrc":"921:18:1","nodeType":"YulFunctionCall","src":"921:18:1"},"variableNames":[{"name":"tail","nativeSrc":"913:4:1","nodeType":"YulIdentifier","src":"913:4:1"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"960:9:1","nodeType":"YulIdentifier","src":"960:9:1"},{"kind":"number","nativeSrc":"971:1:1","nodeType":"YulLiteral","src":"971:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"956:3:1","nodeType":"YulIdentifier","src":"956:3:1"},"nativeSrc":"956:17:1","nodeType":"YulFunctionCall","src":"956:17:1"},{"arguments":[{"name":"tail","nativeSrc":"979:4:1","nodeType":"YulIdentifier","src":"979:4:1"},{"name":"headStart","nativeSrc":"985:9:1","nodeType":"YulIdentifier","src":"985:9:1"}],"functionName":{"name":"sub","nativeSrc":"975:3:1","nodeType":"YulIdentifier","src":"975:3:1"},"nativeSrc":"975:20:1","nodeType":"YulFunctionCall","src":"975:20:1"}],"functionName":{"name":"mstore","nativeSrc":"949:6:1","nodeType":"YulIdentifier","src":"949:6:1"},"nativeSrc":"949:47:1","nodeType":"YulFunctionCall","src":"949:47:1"},"nativeSrc":"949:47:1","nodeType":"YulExpressionStatement","src":"949:47:1"},{"nativeSrc":"1005:139:1","nodeType":"YulAssignment","src":"1005:139:1","value":{"arguments":[{"name":"tail","nativeSrc":"1139:4:1","nodeType":"YulIdentifier","src":"1139:4:1"}],"functionName":{"name":"abi_encode_t_stringliteral_d23a6e7325f0abb96141966477cca10264973d4cd302317d51a5a0dcefe34d04_to_t_string_memory_ptr_fromStack","nativeSrc":"1013:124:1","nodeType":"YulIdentifier","src":"1013:124:1"},"nativeSrc":"1013:131:1","nodeType":"YulFunctionCall","src":"1013:131:1"},"variableNames":[{"name":"tail","nativeSrc":"1005:4:1","nodeType":"YulIdentifier","src":"1005:4:1"}]}]},"name":"abi_encode_tuple_t_stringliteral_d23a6e7325f0abb96141966477cca10264973d4cd302317d51a5a0dcefe34d04__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"732:419:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"883:9:1","nodeType":"YulTypedName","src":"883:9:1","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"898:4:1","nodeType":"YulTypedName","src":"898:4:1","type":""}],"src":"732:419:1"},{"body":{"nativeSrc":"1197:35:1","nodeType":"YulBlock","src":"1197:35:1","statements":[{"nativeSrc":"1207:19:1","nodeType":"YulAssignment","src":"1207:19:1","value":{"arguments":[{"kind":"number","nativeSrc":"1223:2:1","nodeType":"YulLiteral","src":"1223:2:1","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"1217:5:1","nodeType":"YulIdentifier","src":"1217:5:1"},"nativeSrc":"1217:9:1","nodeType":"YulFunctionCall","src":"1217:9:1"},"variableNames":[{"name":"memPtr","nativeSrc":"1207:6:1","nodeType":"YulIdentifier","src":"1207:6:1"}]}]},"name":"allocate_unbounded","nativeSrc":"1157:75:1","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"1190:6:1","nodeType":"YulTypedName","src":"1190:6:1","type":""}],"src":"1157:75:1"},{"body":{"nativeSrc":"1327:28:1","nodeType":"YulBlock","src":"1327:28:1","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1344:1:1","nodeType":"YulLiteral","src":"1344:1:1","type":"","value":"0"},{"kind":"number","nativeSrc":"1347:1:1","nodeType":"YulLiteral","src":"1347:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1337:6:1","nodeType":"YulIdentifier","src":"1337:6:1"},"nativeSrc":"1337:12:1","nodeType":"YulFunctionCall","src":"1337:12:1"},"nativeSrc":"1337:12:1","nodeType":"YulExpressionStatement","src":"1337:12:1"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"1238:117:1","nodeType":"YulFunctionDefinition","src":"1238:117:1"},{"body":{"nativeSrc":"1450:28:1","nodeType":"YulBlock","src":"1450:28:1","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1467:1:1","nodeType":"YulLiteral","src":"1467:1:1","type":"","value":"0"},{"kind":"number","nativeSrc":"1470:1:1","nodeType":"YulLiteral","src":"1470:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1460:6:1","nodeType":"YulIdentifier","src":"1460:6:1"},"nativeSrc":"1460:12:1","nodeType":"YulFunctionCall","src":"1460:12:1"},"nativeSrc":"1460:12:1","nodeType":"YulExpressionStatement","src":"1460:12:1"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"1361:117:1","nodeType":"YulFunctionDefinition","src":"1361:117:1"},{"body":{"nativeSrc":"1529:81:1","nodeType":"YulBlock","src":"1529:81:1","statements":[{"nativeSrc":"1539:65:1","nodeType":"YulAssignment","src":"1539:65:1","value":{"arguments":[{"name":"value","nativeSrc":"1554:5:1","nodeType":"YulIdentifier","src":"1554:5:1"},{"kind":"number","nativeSrc":"1561:42:1","nodeType":"YulLiteral","src":"1561:42:1","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1550:3:1","nodeType":"YulIdentifier","src":"1550:3:1"},"nativeSrc":"1550:54:1","nodeType":"YulFunctionCall","src":"1550:54:1"},"variableNames":[{"name":"cleaned","nativeSrc":"1539:7:1","nodeType":"YulIdentifier","src":"1539:7:1"}]}]},"name":"cleanup_t_uint160","nativeSrc":"1484:126:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1511:5:1","nodeType":"YulTypedName","src":"1511:5:1","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"1521:7:1","nodeType":"YulTypedName","src":"1521:7:1","type":""}],"src":"1484:126:1"},{"body":{"nativeSrc":"1661:51:1","nodeType":"YulBlock","src":"1661:51:1","statements":[{"nativeSrc":"1671:35:1","nodeType":"YulAssignment","src":"1671:35:1","value":{"arguments":[{"name":"value","nativeSrc":"1700:5:1","nodeType":"YulIdentifier","src":"1700:5:1"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"1682:17:1","nodeType":"YulIdentifier","src":"1682:17:1"},"nativeSrc":"1682:24:1","nodeType":"YulFunctionCall","src":"1682:24:1"},"variableNames":[{"name":"cleaned","nativeSrc":"1671:7:1","nodeType":"YulIdentifier","src":"1671:7:1"}]}]},"name":"cleanup_t_address","nativeSrc":"1616:96:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1643:5:1","nodeType":"YulTypedName","src":"1643:5:1","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"1653:7:1","nodeType":"YulTypedName","src":"1653:7:1","type":""}],"src":"1616:96:1"},{"body":{"nativeSrc":"1761:79:1","nodeType":"YulBlock","src":"1761:79:1","statements":[{"body":{"nativeSrc":"1818:16:1","nodeType":"YulBlock","src":"1818:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1827:1:1","nodeType":"YulLiteral","src":"1827:1:1","type":"","value":"0"},{"kind":"number","nativeSrc":"1830:1:1","nodeType":"YulLiteral","src":"1830:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1820:6:1","nodeType":"YulIdentifier","src":"1820:6:1"},"nativeSrc":"1820:12:1","nodeType":"YulFunctionCall","src":"1820:12:1"},"nativeSrc":"1820:12:1","nodeType":"YulExpressionStatement","src":"1820:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1784:5:1","nodeType":"YulIdentifier","src":"1784:5:1"},{"arguments":[{"name":"value","nativeSrc":"1809:5:1","nodeType":"YulIdentifier","src":"1809:5:1"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"1791:17:1","nodeType":"YulIdentifier","src":"1791:17:1"},"nativeSrc":"1791:24:1","nodeType":"YulFunctionCall","src":"1791:24:1"}],"functionName":{"name":"eq","nativeSrc":"1781:2:1","nodeType":"YulIdentifier","src":"1781:2:1"},"nativeSrc":"1781:35:1","nodeType":"YulFunctionCall","src":"1781:35:1"}],"functionName":{"name":"iszero","nativeSrc":"1774:6:1","nodeType":"YulIdentifier","src":"1774:6:1"},"nativeSrc":"1774:43:1","nodeType":"YulFunctionCall","src":"1774:43:1"},"nativeSrc":"1771:63:1","nodeType":"YulIf","src":"1771:63:1"}]},"name":"validator_revert_t_address","nativeSrc":"1718:122:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1754:5:1","nodeType":"YulTypedName","src":"1754:5:1","type":""}],"src":"1718:122:1"},{"body":{"nativeSrc":"1898:87:1","nodeType":"YulBlock","src":"1898:87:1","statements":[{"nativeSrc":"1908:29:1","nodeType":"YulAssignment","src":"1908:29:1","value":{"arguments":[{"name":"offset","nativeSrc":"1930:6:1","nodeType":"YulIdentifier","src":"1930:6:1"}],"functionName":{"name":"calldataload","nativeSrc":"1917:12:1","nodeType":"YulIdentifier","src":"1917:12:1"},"nativeSrc":"1917:20:1","nodeType":"YulFunctionCall","src":"1917:20:1"},"variableNames":[{"name":"value","nativeSrc":"1908:5:1","nodeType":"YulIdentifier","src":"1908:5:1"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1973:5:1","nodeType":"YulIdentifier","src":"1973:5:1"}],"functionName":{"name":"validator_revert_t_address","nativeSrc":"1946:26:1","nodeType":"YulIdentifier","src":"1946:26:1"},"nativeSrc":"1946:33:1","nodeType":"YulFunctionCall","src":"1946:33:1"},"nativeSrc":"1946:33:1","nodeType":"YulExpressionStatement","src":"1946:33:1"}]},"name":"abi_decode_t_address","nativeSrc":"1846:139:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1876:6:1","nodeType":"YulTypedName","src":"1876:6:1","type":""},{"name":"end","nativeSrc":"1884:3:1","nodeType":"YulTypedName","src":"1884:3:1","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1892:5:1","nodeType":"YulTypedName","src":"1892:5:1","type":""}],"src":"1846:139:1"},{"body":{"nativeSrc":"2057:263:1","nodeType":"YulBlock","src":"2057:263:1","statements":[{"body":{"nativeSrc":"2103:83:1","nodeType":"YulBlock","src":"2103:83:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"2105:77:1","nodeType":"YulIdentifier","src":"2105:77:1"},"nativeSrc":"2105:79:1","nodeType":"YulFunctionCall","src":"2105:79:1"},"nativeSrc":"2105:79:1","nodeType":"YulExpressionStatement","src":"2105:79:1"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2078:7:1","nodeType":"YulIdentifier","src":"2078:7:1"},{"name":"headStart","nativeSrc":"2087:9:1","nodeType":"YulIdentifier","src":"2087:9:1"}],"functionName":{"name":"sub","nativeSrc":"2074:3:1","nodeType":"YulIdentifier","src":"2074:3:1"},"nativeSrc":"2074:23:1","nodeType":"YulFunctionCall","src":"2074:23:1"},{"kind":"number","nativeSrc":"2099:2:1","nodeType":"YulLiteral","src":"2099:2:1","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2070:3:1","nodeType":"YulIdentifier","src":"2070:3:1"},"nativeSrc":"2070:32:1","nodeType":"YulFunctionCall","src":"2070:32:1"},"nativeSrc":"2067:119:1","nodeType":"YulIf","src":"2067:119:1"},{"nativeSrc":"2196:117:1","nodeType":"YulBlock","src":"2196:117:1","statements":[{"nativeSrc":"2211:15:1","nodeType":"YulVariableDeclaration","src":"2211:15:1","value":{"kind":"number","nativeSrc":"2225:1:1","nodeType":"YulLiteral","src":"2225:1:1","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"2215:6:1","nodeType":"YulTypedName","src":"2215:6:1","type":""}]},{"nativeSrc":"2240:63:1","nodeType":"YulAssignment","src":"2240:63:1","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2275:9:1","nodeType":"YulIdentifier","src":"2275:9:1"},{"name":"offset","nativeSrc":"2286:6:1","nodeType":"YulIdentifier","src":"2286:6:1"}],"functionName":{"name":"add","nativeSrc":"2271:3:1","nodeType":"YulIdentifier","src":"2271:3:1"},"nativeSrc":"2271:22:1","nodeType":"YulFunctionCall","src":"2271:22:1"},{"name":"dataEnd","nativeSrc":"2295:7:1","nodeType":"YulIdentifier","src":"2295:7:1"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"2250:20:1","nodeType":"YulIdentifier","src":"2250:20:1"},"nativeSrc":"2250:53:1","nodeType":"YulFunctionCall","src":"2250:53:1"},"variableNames":[{"name":"value0","nativeSrc":"2240:6:1","nodeType":"YulIdentifier","src":"2240:6:1"}]}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"1991:329:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2027:9:1","nodeType":"YulTypedName","src":"2027:9:1","type":""},{"name":"dataEnd","nativeSrc":"2038:7:1","nodeType":"YulTypedName","src":"2038:7:1","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2050:6:1","nodeType":"YulTypedName","src":"2050:6:1","type":""}],"src":"1991:329:1"},{"body":{"nativeSrc":"2371:32:1","nodeType":"YulBlock","src":"2371:32:1","statements":[{"nativeSrc":"2381:16:1","nodeType":"YulAssignment","src":"2381:16:1","value":{"name":"value","nativeSrc":"2392:5:1","nodeType":"YulIdentifier","src":"2392:5:1"},"variableNames":[{"name":"cleaned","nativeSrc":"2381:7:1","nodeType":"YulIdentifier","src":"2381:7:1"}]}]},"name":"cleanup_t_uint256","nativeSrc":"2326:77:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2353:5:1","nodeType":"YulTypedName","src":"2353:5:1","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"2363:7:1","nodeType":"YulTypedName","src":"2363:7:1","type":""}],"src":"2326:77:1"},{"body":{"nativeSrc":"2474:53:1","nodeType":"YulBlock","src":"2474:53:1","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"2491:3:1","nodeType":"YulIdentifier","src":"2491:3:1"},{"arguments":[{"name":"value","nativeSrc":"2514:5:1","nodeType":"YulIdentifier","src":"2514:5:1"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"2496:17:1","nodeType":"YulIdentifier","src":"2496:17:1"},"nativeSrc":"2496:24:1","nodeType":"YulFunctionCall","src":"2496:24:1"}],"functionName":{"name":"mstore","nativeSrc":"2484:6:1","nodeType":"YulIdentifier","src":"2484:6:1"},"nativeSrc":"2484:37:1","nodeType":"YulFunctionCall","src":"2484:37:1"},"nativeSrc":"2484:37:1","nodeType":"YulExpressionStatement","src":"2484:37:1"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"2409:118:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2462:5:1","nodeType":"YulTypedName","src":"2462:5:1","type":""},{"name":"pos","nativeSrc":"2469:3:1","nodeType":"YulTypedName","src":"2469:3:1","type":""}],"src":"2409:118:1"},{"body":{"nativeSrc":"2575:48:1","nodeType":"YulBlock","src":"2575:48:1","statements":[{"nativeSrc":"2585:32:1","nodeType":"YulAssignment","src":"2585:32:1","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2610:5:1","nodeType":"YulIdentifier","src":"2610:5:1"}],"functionName":{"name":"iszero","nativeSrc":"2603:6:1","nodeType":"YulIdentifier","src":"2603:6:1"},"nativeSrc":"2603:13:1","nodeType":"YulFunctionCall","src":"2603:13:1"}],"functionName":{"name":"iszero","nativeSrc":"2596:6:1","nodeType":"YulIdentifier","src":"2596:6:1"},"nativeSrc":"2596:21:1","nodeType":"YulFunctionCall","src":"2596:21:1"},"variableNames":[{"name":"cleaned","nativeSrc":"2585:7:1","nodeType":"YulIdentifier","src":"2585:7:1"}]}]},"name":"cleanup_t_bool","nativeSrc":"2533:90:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2557:5:1","nodeType":"YulTypedName","src":"2557:5:1","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"2567:7:1","nodeType":"YulTypedName","src":"2567:7:1","type":""}],"src":"2533:90:1"},{"body":{"nativeSrc":"2688:50:1","nodeType":"YulBlock","src":"2688:50:1","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"2705:3:1","nodeType":"YulIdentifier","src":"2705:3:1"},{"arguments":[{"name":"value","nativeSrc":"2725:5:1","nodeType":"YulIdentifier","src":"2725:5:1"}],"functionName":{"name":"cleanup_t_bool","nativeSrc":"2710:14:1","nodeType":"YulIdentifier","src":"2710:14:1"},"nativeSrc":"2710:21:1","nodeType":"YulFunctionCall","src":"2710:21:1"}],"functionName":{"name":"mstore","nativeSrc":"2698:6:1","nodeType":"YulIdentifier","src":"2698:6:1"},"nativeSrc":"2698:34:1","nodeType":"YulFunctionCall","src":"2698:34:1"},"nativeSrc":"2698:34:1","nodeType":"YulExpressionStatement","src":"2698:34:1"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nativeSrc":"2629:109:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2676:5:1","nodeType":"YulTypedName","src":"2676:5:1","type":""},{"name":"pos","nativeSrc":"2683:3:1","nodeType":"YulTypedName","src":"2683:3:1","type":""}],"src":"2629:109:1"},{"body":{"nativeSrc":"2892:282:1","nodeType":"YulBlock","src":"2892:282:1","statements":[{"nativeSrc":"2902:26:1","nodeType":"YulAssignment","src":"2902:26:1","value":{"arguments":[{"name":"headStart","nativeSrc":"2914:9:1","nodeType":"YulIdentifier","src":"2914:9:1"},{"kind":"number","nativeSrc":"2925:2:1","nodeType":"YulLiteral","src":"2925:2:1","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2910:3:1","nodeType":"YulIdentifier","src":"2910:3:1"},"nativeSrc":"2910:18:1","nodeType":"YulFunctionCall","src":"2910:18:1"},"variableNames":[{"name":"tail","nativeSrc":"2902:4:1","nodeType":"YulIdentifier","src":"2902:4:1"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"2982:6:1","nodeType":"YulIdentifier","src":"2982:6:1"},{"arguments":[{"name":"headStart","nativeSrc":"2995:9:1","nodeType":"YulIdentifier","src":"2995:9:1"},{"kind":"number","nativeSrc":"3006:1:1","nodeType":"YulLiteral","src":"3006:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"2991:3:1","nodeType":"YulIdentifier","src":"2991:3:1"},"nativeSrc":"2991:17:1","nodeType":"YulFunctionCall","src":"2991:17:1"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"2938:43:1","nodeType":"YulIdentifier","src":"2938:43:1"},"nativeSrc":"2938:71:1","nodeType":"YulFunctionCall","src":"2938:71:1"},"nativeSrc":"2938:71:1","nodeType":"YulExpressionStatement","src":"2938:71:1"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"3063:6:1","nodeType":"YulIdentifier","src":"3063:6:1"},{"arguments":[{"name":"headStart","nativeSrc":"3076:9:1","nodeType":"YulIdentifier","src":"3076:9:1"},{"kind":"number","nativeSrc":"3087:2:1","nodeType":"YulLiteral","src":"3087:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3072:3:1","nodeType":"YulIdentifier","src":"3072:3:1"},"nativeSrc":"3072:18:1","nodeType":"YulFunctionCall","src":"3072:18:1"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"3019:43:1","nodeType":"YulIdentifier","src":"3019:43:1"},"nativeSrc":"3019:72:1","nodeType":"YulFunctionCall","src":"3019:72:1"},"nativeSrc":"3019:72:1","nodeType":"YulExpressionStatement","src":"3019:72:1"},{"expression":{"arguments":[{"name":"value2","nativeSrc":"3139:6:1","nodeType":"YulIdentifier","src":"3139:6:1"},{"arguments":[{"name":"headStart","nativeSrc":"3152:9:1","nodeType":"YulIdentifier","src":"3152:9:1"},{"kind":"number","nativeSrc":"3163:2:1","nodeType":"YulLiteral","src":"3163:2:1","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3148:3:1","nodeType":"YulIdentifier","src":"3148:3:1"},"nativeSrc":"3148:18:1","nodeType":"YulFunctionCall","src":"3148:18:1"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nativeSrc":"3101:37:1","nodeType":"YulIdentifier","src":"3101:37:1"},"nativeSrc":"3101:66:1","nodeType":"YulFunctionCall","src":"3101:66:1"},"nativeSrc":"3101:66:1","nodeType":"YulExpressionStatement","src":"3101:66:1"}]},"name":"abi_encode_tuple_t_uint256_t_uint256_t_bool__to_t_uint256_t_uint256_t_bool__fromStack_reversed","nativeSrc":"2744:430:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2848:9:1","nodeType":"YulTypedName","src":"2848:9:1","type":""},{"name":"value2","nativeSrc":"2860:6:1","nodeType":"YulTypedName","src":"2860:6:1","type":""},{"name":"value1","nativeSrc":"2868:6:1","nodeType":"YulTypedName","src":"2868:6:1","type":""},{"name":"value0","nativeSrc":"2876:6:1","nodeType":"YulTypedName","src":"2876:6:1","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2887:4:1","nodeType":"YulTypedName","src":"2887:4:1","type":""}],"src":"2744:430:1"},{"body":{"nativeSrc":"3278:124:1","nodeType":"YulBlock","src":"3278:124:1","statements":[{"nativeSrc":"3288:26:1","nodeType":"YulAssignment","src":"3288:26:1","value":{"arguments":[{"name":"headStart","nativeSrc":"3300:9:1","nodeType":"YulIdentifier","src":"3300:9:1"},{"kind":"number","nativeSrc":"3311:2:1","nodeType":"YulLiteral","src":"3311:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3296:3:1","nodeType":"YulIdentifier","src":"3296:3:1"},"nativeSrc":"3296:18:1","nodeType":"YulFunctionCall","src":"3296:18:1"},"variableNames":[{"name":"tail","nativeSrc":"3288:4:1","nodeType":"YulIdentifier","src":"3288:4:1"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"3368:6:1","nodeType":"YulIdentifier","src":"3368:6:1"},{"arguments":[{"name":"headStart","nativeSrc":"3381:9:1","nodeType":"YulIdentifier","src":"3381:9:1"},{"kind":"number","nativeSrc":"3392:1:1","nodeType":"YulLiteral","src":"3392:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"3377:3:1","nodeType":"YulIdentifier","src":"3377:3:1"},"nativeSrc":"3377:17:1","nodeType":"YulFunctionCall","src":"3377:17:1"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"3324:43:1","nodeType":"YulIdentifier","src":"3324:43:1"},"nativeSrc":"3324:71:1","nodeType":"YulFunctionCall","src":"3324:71:1"},"nativeSrc":"3324:71:1","nodeType":"YulExpressionStatement","src":"3324:71:1"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"3180:222:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3250:9:1","nodeType":"YulTypedName","src":"3250:9:1","type":""},{"name":"value0","nativeSrc":"3262:6:1","nodeType":"YulTypedName","src":"3262:6:1","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3273:4:1","nodeType":"YulTypedName","src":"3273:4:1","type":""}],"src":"3180:222:1"},{"body":{"nativeSrc":"3451:79:1","nodeType":"YulBlock","src":"3451:79:1","statements":[{"body":{"nativeSrc":"3508:16:1","nodeType":"YulBlock","src":"3508:16:1","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3517:1:1","nodeType":"YulLiteral","src":"3517:1:1","type":"","value":"0"},{"kind":"number","nativeSrc":"3520:1:1","nodeType":"YulLiteral","src":"3520:1:1","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3510:6:1","nodeType":"YulIdentifier","src":"3510:6:1"},"nativeSrc":"3510:12:1","nodeType":"YulFunctionCall","src":"3510:12:1"},"nativeSrc":"3510:12:1","nodeType":"YulExpressionStatement","src":"3510:12:1"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3474:5:1","nodeType":"YulIdentifier","src":"3474:5:1"},{"arguments":[{"name":"value","nativeSrc":"3499:5:1","nodeType":"YulIdentifier","src":"3499:5:1"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"3481:17:1","nodeType":"YulIdentifier","src":"3481:17:1"},"nativeSrc":"3481:24:1","nodeType":"YulFunctionCall","src":"3481:24:1"}],"functionName":{"name":"eq","nativeSrc":"3471:2:1","nodeType":"YulIdentifier","src":"3471:2:1"},"nativeSrc":"3471:35:1","nodeType":"YulFunctionCall","src":"3471:35:1"}],"functionName":{"name":"iszero","nativeSrc":"3464:6:1","nodeType":"YulIdentifier","src":"3464:6:1"},"nativeSrc":"3464:43:1","nodeType":"YulFunctionCall","src":"3464:43:1"},"nativeSrc":"3461:63:1","nodeType":"YulIf","src":"3461:63:1"}]},"name":"validator_revert_t_uint256","nativeSrc":"3408:122:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3444:5:1","nodeType":"YulTypedName","src":"3444:5:1","type":""}],"src":"3408:122:1"},{"body":{"nativeSrc":"3588:87:1","nodeType":"YulBlock","src":"3588:87:1","statements":[{"nativeSrc":"3598:29:1","nodeType":"YulAssignment","src":"3598:29:1","value":{"arguments":[{"name":"offset","nativeSrc":"3620:6:1","nodeType":"YulIdentifier","src":"3620:6:1"}],"functionName":{"name":"calldataload","nativeSrc":"3607:12:1","nodeType":"YulIdentifier","src":"3607:12:1"},"nativeSrc":"3607:20:1","nodeType":"YulFunctionCall","src":"3607:20:1"},"variableNames":[{"name":"value","nativeSrc":"3598:5:1","nodeType":"YulIdentifier","src":"3598:5:1"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"3663:5:1","nodeType":"YulIdentifier","src":"3663:5:1"}],"functionName":{"name":"validator_revert_t_uint256","nativeSrc":"3636:26:1","nodeType":"YulIdentifier","src":"3636:26:1"},"nativeSrc":"3636:33:1","nodeType":"YulFunctionCall","src":"3636:33:1"},"nativeSrc":"3636:33:1","nodeType":"YulExpressionStatement","src":"3636:33:1"}]},"name":"abi_decode_t_uint256","nativeSrc":"3536:139:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"3566:6:1","nodeType":"YulTypedName","src":"3566:6:1","type":""},{"name":"end","nativeSrc":"3574:3:1","nodeType":"YulTypedName","src":"3574:3:1","type":""}],"returnVariables":[{"name":"value","nativeSrc":"3582:5:1","nodeType":"YulTypedName","src":"3582:5:1","type":""}],"src":"3536:139:1"},{"body":{"nativeSrc":"3747:263:1","nodeType":"YulBlock","src":"3747:263:1","statements":[{"body":{"nativeSrc":"3793:83:1","nodeType":"YulBlock","src":"3793:83:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"3795:77:1","nodeType":"YulIdentifier","src":"3795:77:1"},"nativeSrc":"3795:79:1","nodeType":"YulFunctionCall","src":"3795:79:1"},"nativeSrc":"3795:79:1","nodeType":"YulExpressionStatement","src":"3795:79:1"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3768:7:1","nodeType":"YulIdentifier","src":"3768:7:1"},{"name":"headStart","nativeSrc":"3777:9:1","nodeType":"YulIdentifier","src":"3777:9:1"}],"functionName":{"name":"sub","nativeSrc":"3764:3:1","nodeType":"YulIdentifier","src":"3764:3:1"},"nativeSrc":"3764:23:1","nodeType":"YulFunctionCall","src":"3764:23:1"},{"kind":"number","nativeSrc":"3789:2:1","nodeType":"YulLiteral","src":"3789:2:1","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3760:3:1","nodeType":"YulIdentifier","src":"3760:3:1"},"nativeSrc":"3760:32:1","nodeType":"YulFunctionCall","src":"3760:32:1"},"nativeSrc":"3757:119:1","nodeType":"YulIf","src":"3757:119:1"},{"nativeSrc":"3886:117:1","nodeType":"YulBlock","src":"3886:117:1","statements":[{"nativeSrc":"3901:15:1","nodeType":"YulVariableDeclaration","src":"3901:15:1","value":{"kind":"number","nativeSrc":"3915:1:1","nodeType":"YulLiteral","src":"3915:1:1","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"3905:6:1","nodeType":"YulTypedName","src":"3905:6:1","type":""}]},{"nativeSrc":"3930:63:1","nodeType":"YulAssignment","src":"3930:63:1","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3965:9:1","nodeType":"YulIdentifier","src":"3965:9:1"},{"name":"offset","nativeSrc":"3976:6:1","nodeType":"YulIdentifier","src":"3976:6:1"}],"functionName":{"name":"add","nativeSrc":"3961:3:1","nodeType":"YulIdentifier","src":"3961:3:1"},"nativeSrc":"3961:22:1","nodeType":"YulFunctionCall","src":"3961:22:1"},{"name":"dataEnd","nativeSrc":"3985:7:1","nodeType":"YulIdentifier","src":"3985:7:1"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"3940:20:1","nodeType":"YulIdentifier","src":"3940:20:1"},"nativeSrc":"3940:53:1","nodeType":"YulFunctionCall","src":"3940:53:1"},"variableNames":[{"name":"value0","nativeSrc":"3930:6:1","nodeType":"YulIdentifier","src":"3930:6:1"}]}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"3681:329:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3717:9:1","nodeType":"YulTypedName","src":"3717:9:1","type":""},{"name":"dataEnd","nativeSrc":"3728:7:1","nodeType":"YulTypedName","src":"3728:7:1","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3740:6:1","nodeType":"YulTypedName","src":"3740:6:1","type":""}],"src":"3681:329:1"},{"body":{"nativeSrc":"4122:59:1","nodeType":"YulBlock","src":"4122:59:1","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"4144:6:1","nodeType":"YulIdentifier","src":"4144:6:1"},{"kind":"number","nativeSrc":"4152:1:1","nodeType":"YulLiteral","src":"4152:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"4140:3:1","nodeType":"YulIdentifier","src":"4140:3:1"},"nativeSrc":"4140:14:1","nodeType":"YulFunctionCall","src":"4140:14:1"},{"hexValue":"4e6f20616374697665207661756c74","kind":"string","nativeSrc":"4156:17:1","nodeType":"YulLiteral","src":"4156:17:1","type":"","value":"No active vault"}],"functionName":{"name":"mstore","nativeSrc":"4133:6:1","nodeType":"YulIdentifier","src":"4133:6:1"},"nativeSrc":"4133:41:1","nodeType":"YulFunctionCall","src":"4133:41:1"},"nativeSrc":"4133:41:1","nodeType":"YulExpressionStatement","src":"4133:41:1"}]},"name":"store_literal_in_memory_1e7971938948aeeb1bbe3e81ce47a5fd9bcdaf31195de25745fbcdb38ea75459","nativeSrc":"4016:165:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"4114:6:1","nodeType":"YulTypedName","src":"4114:6:1","type":""}],"src":"4016:165:1"},{"body":{"nativeSrc":"4333:220:1","nodeType":"YulBlock","src":"4333:220:1","statements":[{"nativeSrc":"4343:74:1","nodeType":"YulAssignment","src":"4343:74:1","value":{"arguments":[{"name":"pos","nativeSrc":"4409:3:1","nodeType":"YulIdentifier","src":"4409:3:1"},{"kind":"number","nativeSrc":"4414:2:1","nodeType":"YulLiteral","src":"4414:2:1","type":"","value":"15"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"4350:58:1","nodeType":"YulIdentifier","src":"4350:58:1"},"nativeSrc":"4350:67:1","nodeType":"YulFunctionCall","src":"4350:67:1"},"variableNames":[{"name":"pos","nativeSrc":"4343:3:1","nodeType":"YulIdentifier","src":"4343:3:1"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"4515:3:1","nodeType":"YulIdentifier","src":"4515:3:1"}],"functionName":{"name":"store_literal_in_memory_1e7971938948aeeb1bbe3e81ce47a5fd9bcdaf31195de25745fbcdb38ea75459","nativeSrc":"4426:88:1","nodeType":"YulIdentifier","src":"4426:88:1"},"nativeSrc":"4426:93:1","nodeType":"YulFunctionCall","src":"4426:93:1"},"nativeSrc":"4426:93:1","nodeType":"YulExpressionStatement","src":"4426:93:1"},{"nativeSrc":"4528:19:1","nodeType":"YulAssignment","src":"4528:19:1","value":{"arguments":[{"name":"pos","nativeSrc":"4539:3:1","nodeType":"YulIdentifier","src":"4539:3:1"},{"kind":"number","nativeSrc":"4544:2:1","nodeType":"YulLiteral","src":"4544:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4535:3:1","nodeType":"YulIdentifier","src":"4535:3:1"},"nativeSrc":"4535:12:1","nodeType":"YulFunctionCall","src":"4535:12:1"},"variableNames":[{"name":"end","nativeSrc":"4528:3:1","nodeType":"YulIdentifier","src":"4528:3:1"}]}]},"name":"abi_encode_t_stringliteral_1e7971938948aeeb1bbe3e81ce47a5fd9bcdaf31195de25745fbcdb38ea75459_to_t_string_memory_ptr_fromStack","nativeSrc":"4187:366:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"4321:3:1","nodeType":"YulTypedName","src":"4321:3:1","type":""}],"returnVariables":[{"name":"end","nativeSrc":"4329:3:1","nodeType":"YulTypedName","src":"4329:3:1","type":""}],"src":"4187:366:1"},{"body":{"nativeSrc":"4730:248:1","nodeType":"YulBlock","src":"4730:248:1","statements":[{"nativeSrc":"4740:26:1","nodeType":"YulAssignment","src":"4740:26:1","value":{"arguments":[{"name":"headStart","nativeSrc":"4752:9:1","nodeType":"YulIdentifier","src":"4752:9:1"},{"kind":"number","nativeSrc":"4763:2:1","nodeType":"YulLiteral","src":"4763:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4748:3:1","nodeType":"YulIdentifier","src":"4748:3:1"},"nativeSrc":"4748:18:1","nodeType":"YulFunctionCall","src":"4748:18:1"},"variableNames":[{"name":"tail","nativeSrc":"4740:4:1","nodeType":"YulIdentifier","src":"4740:4:1"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4787:9:1","nodeType":"YulIdentifier","src":"4787:9:1"},{"kind":"number","nativeSrc":"4798:1:1","nodeType":"YulLiteral","src":"4798:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"4783:3:1","nodeType":"YulIdentifier","src":"4783:3:1"},"nativeSrc":"4783:17:1","nodeType":"YulFunctionCall","src":"4783:17:1"},{"arguments":[{"name":"tail","nativeSrc":"4806:4:1","nodeType":"YulIdentifier","src":"4806:4:1"},{"name":"headStart","nativeSrc":"4812:9:1","nodeType":"YulIdentifier","src":"4812:9:1"}],"functionName":{"name":"sub","nativeSrc":"4802:3:1","nodeType":"YulIdentifier","src":"4802:3:1"},"nativeSrc":"4802:20:1","nodeType":"YulFunctionCall","src":"4802:20:1"}],"functionName":{"name":"mstore","nativeSrc":"4776:6:1","nodeType":"YulIdentifier","src":"4776:6:1"},"nativeSrc":"4776:47:1","nodeType":"YulFunctionCall","src":"4776:47:1"},"nativeSrc":"4776:47:1","nodeType":"YulExpressionStatement","src":"4776:47:1"},{"nativeSrc":"4832:139:1","nodeType":"YulAssignment","src":"4832:139:1","value":{"arguments":[{"name":"tail","nativeSrc":"4966:4:1","nodeType":"YulIdentifier","src":"4966:4:1"}],"functionName":{"name":"abi_encode_t_stringliteral_1e7971938948aeeb1bbe3e81ce47a5fd9bcdaf31195de25745fbcdb38ea75459_to_t_string_memory_ptr_fromStack","nativeSrc":"4840:124:1","nodeType":"YulIdentifier","src":"4840:124:1"},"nativeSrc":"4840:131:1","nodeType":"YulFunctionCall","src":"4840:131:1"},"variableNames":[{"name":"tail","nativeSrc":"4832:4:1","nodeType":"YulIdentifier","src":"4832:4:1"}]}]},"name":"abi_encode_tuple_t_stringliteral_1e7971938948aeeb1bbe3e81ce47a5fd9bcdaf31195de25745fbcdb38ea75459__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"4559:419:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4710:9:1","nodeType":"YulTypedName","src":"4710:9:1","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4725:4:1","nodeType":"YulTypedName","src":"4725:4:1","type":""}],"src":"4559:419:1"},{"body":{"nativeSrc":"5090:53:1","nodeType":"YulBlock","src":"5090:53:1","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5112:6:1","nodeType":"YulIdentifier","src":"5112:6:1"},{"kind":"number","nativeSrc":"5120:1:1","nodeType":"YulLiteral","src":"5120:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"5108:3:1","nodeType":"YulIdentifier","src":"5108:3:1"},"nativeSrc":"5108:14:1","nodeType":"YulFunctionCall","src":"5108:14:1"},{"hexValue":"546f6f206561726c79","kind":"string","nativeSrc":"5124:11:1","nodeType":"YulLiteral","src":"5124:11:1","type":"","value":"Too early"}],"functionName":{"name":"mstore","nativeSrc":"5101:6:1","nodeType":"YulIdentifier","src":"5101:6:1"},"nativeSrc":"5101:35:1","nodeType":"YulFunctionCall","src":"5101:35:1"},"nativeSrc":"5101:35:1","nodeType":"YulExpressionStatement","src":"5101:35:1"}]},"name":"store_literal_in_memory_9f6f93f20f78aace72bd65ea4b5066106f1a58ba03a145eb11ceff2dc1ab0dd1","nativeSrc":"4984:159:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"5082:6:1","nodeType":"YulTypedName","src":"5082:6:1","type":""}],"src":"4984:159:1"},{"body":{"nativeSrc":"5295:219:1","nodeType":"YulBlock","src":"5295:219:1","statements":[{"nativeSrc":"5305:73:1","nodeType":"YulAssignment","src":"5305:73:1","value":{"arguments":[{"name":"pos","nativeSrc":"5371:3:1","nodeType":"YulIdentifier","src":"5371:3:1"},{"kind":"number","nativeSrc":"5376:1:1","nodeType":"YulLiteral","src":"5376:1:1","type":"","value":"9"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"5312:58:1","nodeType":"YulIdentifier","src":"5312:58:1"},"nativeSrc":"5312:66:1","nodeType":"YulFunctionCall","src":"5312:66:1"},"variableNames":[{"name":"pos","nativeSrc":"5305:3:1","nodeType":"YulIdentifier","src":"5305:3:1"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"5476:3:1","nodeType":"YulIdentifier","src":"5476:3:1"}],"functionName":{"name":"store_literal_in_memory_9f6f93f20f78aace72bd65ea4b5066106f1a58ba03a145eb11ceff2dc1ab0dd1","nativeSrc":"5387:88:1","nodeType":"YulIdentifier","src":"5387:88:1"},"nativeSrc":"5387:93:1","nodeType":"YulFunctionCall","src":"5387:93:1"},"nativeSrc":"5387:93:1","nodeType":"YulExpressionStatement","src":"5387:93:1"},{"nativeSrc":"5489:19:1","nodeType":"YulAssignment","src":"5489:19:1","value":{"arguments":[{"name":"pos","nativeSrc":"5500:3:1","nodeType":"YulIdentifier","src":"5500:3:1"},{"kind":"number","nativeSrc":"5505:2:1","nodeType":"YulLiteral","src":"5505:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5496:3:1","nodeType":"YulIdentifier","src":"5496:3:1"},"nativeSrc":"5496:12:1","nodeType":"YulFunctionCall","src":"5496:12:1"},"variableNames":[{"name":"end","nativeSrc":"5489:3:1","nodeType":"YulIdentifier","src":"5489:3:1"}]}]},"name":"abi_encode_t_stringliteral_9f6f93f20f78aace72bd65ea4b5066106f1a58ba03a145eb11ceff2dc1ab0dd1_to_t_string_memory_ptr_fromStack","nativeSrc":"5149:365:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"5283:3:1","nodeType":"YulTypedName","src":"5283:3:1","type":""}],"returnVariables":[{"name":"end","nativeSrc":"5291:3:1","nodeType":"YulTypedName","src":"5291:3:1","type":""}],"src":"5149:365:1"},{"body":{"nativeSrc":"5691:248:1","nodeType":"YulBlock","src":"5691:248:1","statements":[{"nativeSrc":"5701:26:1","nodeType":"YulAssignment","src":"5701:26:1","value":{"arguments":[{"name":"headStart","nativeSrc":"5713:9:1","nodeType":"YulIdentifier","src":"5713:9:1"},{"kind":"number","nativeSrc":"5724:2:1","nodeType":"YulLiteral","src":"5724:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5709:3:1","nodeType":"YulIdentifier","src":"5709:3:1"},"nativeSrc":"5709:18:1","nodeType":"YulFunctionCall","src":"5709:18:1"},"variableNames":[{"name":"tail","nativeSrc":"5701:4:1","nodeType":"YulIdentifier","src":"5701:4:1"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5748:9:1","nodeType":"YulIdentifier","src":"5748:9:1"},{"kind":"number","nativeSrc":"5759:1:1","nodeType":"YulLiteral","src":"5759:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"5744:3:1","nodeType":"YulIdentifier","src":"5744:3:1"},"nativeSrc":"5744:17:1","nodeType":"YulFunctionCall","src":"5744:17:1"},{"arguments":[{"name":"tail","nativeSrc":"5767:4:1","nodeType":"YulIdentifier","src":"5767:4:1"},{"name":"headStart","nativeSrc":"5773:9:1","nodeType":"YulIdentifier","src":"5773:9:1"}],"functionName":{"name":"sub","nativeSrc":"5763:3:1","nodeType":"YulIdentifier","src":"5763:3:1"},"nativeSrc":"5763:20:1","nodeType":"YulFunctionCall","src":"5763:20:1"}],"functionName":{"name":"mstore","nativeSrc":"5737:6:1","nodeType":"YulIdentifier","src":"5737:6:1"},"nativeSrc":"5737:47:1","nodeType":"YulFunctionCall","src":"5737:47:1"},"nativeSrc":"5737:47:1","nodeType":"YulExpressionStatement","src":"5737:47:1"},{"nativeSrc":"5793:139:1","nodeType":"YulAssignment","src":"5793:139:1","value":{"arguments":[{"name":"tail","nativeSrc":"5927:4:1","nodeType":"YulIdentifier","src":"5927:4:1"}],"functionName":{"name":"abi_encode_t_stringliteral_9f6f93f20f78aace72bd65ea4b5066106f1a58ba03a145eb11ceff2dc1ab0dd1_to_t_string_memory_ptr_fromStack","nativeSrc":"5801:124:1","nodeType":"YulIdentifier","src":"5801:124:1"},"nativeSrc":"5801:131:1","nodeType":"YulFunctionCall","src":"5801:131:1"},"variableNames":[{"name":"tail","nativeSrc":"5793:4:1","nodeType":"YulIdentifier","src":"5793:4:1"}]}]},"name":"abi_encode_tuple_t_stringliteral_9f6f93f20f78aace72bd65ea4b5066106f1a58ba03a145eb11ceff2dc1ab0dd1__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"5520:419:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5671:9:1","nodeType":"YulTypedName","src":"5671:9:1","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5686:4:1","nodeType":"YulTypedName","src":"5686:4:1","type":""}],"src":"5520:419:1"},{"body":{"nativeSrc":"6051:54:1","nodeType":"YulBlock","src":"6051:54:1","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"6073:6:1","nodeType":"YulIdentifier","src":"6073:6:1"},{"kind":"number","nativeSrc":"6081:1:1","nodeType":"YulLiteral","src":"6081:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"6069:3:1","nodeType":"YulIdentifier","src":"6069:3:1"},"nativeSrc":"6069:14:1","nodeType":"YulFunctionCall","src":"6069:14:1"},{"hexValue":"4e6f2062616c616e6365","kind":"string","nativeSrc":"6085:12:1","nodeType":"YulLiteral","src":"6085:12:1","type":"","value":"No balance"}],"functionName":{"name":"mstore","nativeSrc":"6062:6:1","nodeType":"YulIdentifier","src":"6062:6:1"},"nativeSrc":"6062:36:1","nodeType":"YulFunctionCall","src":"6062:36:1"},"nativeSrc":"6062:36:1","nodeType":"YulExpressionStatement","src":"6062:36:1"}]},"name":"store_literal_in_memory_397f20c9ee670e88dbc97000732216e0936c9de3d4dedf79ef5a506c8a043cf4","nativeSrc":"5945:160:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"6043:6:1","nodeType":"YulTypedName","src":"6043:6:1","type":""}],"src":"5945:160:1"},{"body":{"nativeSrc":"6257:220:1","nodeType":"YulBlock","src":"6257:220:1","statements":[{"nativeSrc":"6267:74:1","nodeType":"YulAssignment","src":"6267:74:1","value":{"arguments":[{"name":"pos","nativeSrc":"6333:3:1","nodeType":"YulIdentifier","src":"6333:3:1"},{"kind":"number","nativeSrc":"6338:2:1","nodeType":"YulLiteral","src":"6338:2:1","type":"","value":"10"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"6274:58:1","nodeType":"YulIdentifier","src":"6274:58:1"},"nativeSrc":"6274:67:1","nodeType":"YulFunctionCall","src":"6274:67:1"},"variableNames":[{"name":"pos","nativeSrc":"6267:3:1","nodeType":"YulIdentifier","src":"6267:3:1"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"6439:3:1","nodeType":"YulIdentifier","src":"6439:3:1"}],"functionName":{"name":"store_literal_in_memory_397f20c9ee670e88dbc97000732216e0936c9de3d4dedf79ef5a506c8a043cf4","nativeSrc":"6350:88:1","nodeType":"YulIdentifier","src":"6350:88:1"},"nativeSrc":"6350:93:1","nodeType":"YulFunctionCall","src":"6350:93:1"},"nativeSrc":"6350:93:1","nodeType":"YulExpressionStatement","src":"6350:93:1"},{"nativeSrc":"6452:19:1","nodeType":"YulAssignment","src":"6452:19:1","value":{"arguments":[{"name":"pos","nativeSrc":"6463:3:1","nodeType":"YulIdentifier","src":"6463:3:1"},{"kind":"number","nativeSrc":"6468:2:1","nodeType":"YulLiteral","src":"6468:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6459:3:1","nodeType":"YulIdentifier","src":"6459:3:1"},"nativeSrc":"6459:12:1","nodeType":"YulFunctionCall","src":"6459:12:1"},"variableNames":[{"name":"end","nativeSrc":"6452:3:1","nodeType":"YulIdentifier","src":"6452:3:1"}]}]},"name":"abi_encode_t_stringliteral_397f20c9ee670e88dbc97000732216e0936c9de3d4dedf79ef5a506c8a043cf4_to_t_string_memory_ptr_fromStack","nativeSrc":"6111:366:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"6245:3:1","nodeType":"YulTypedName","src":"6245:3:1","type":""}],"returnVariables":[{"name":"end","nativeSrc":"6253:3:1","nodeType":"YulTypedName","src":"6253:3:1","type":""}],"src":"6111:366:1"},{"body":{"nativeSrc":"6654:248:1","nodeType":"YulBlock","src":"6654:248:1","statements":[{"nativeSrc":"6664:26:1","nodeType":"YulAssignment","src":"6664:26:1","value":{"arguments":[{"name":"headStart","nativeSrc":"6676:9:1","nodeType":"YulIdentifier","src":"6676:9:1"},{"kind":"number","nativeSrc":"6687:2:1","nodeType":"YulLiteral","src":"6687:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6672:3:1","nodeType":"YulIdentifier","src":"6672:3:1"},"nativeSrc":"6672:18:1","nodeType":"YulFunctionCall","src":"6672:18:1"},"variableNames":[{"name":"tail","nativeSrc":"6664:4:1","nodeType":"YulIdentifier","src":"6664:4:1"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6711:9:1","nodeType":"YulIdentifier","src":"6711:9:1"},{"kind":"number","nativeSrc":"6722:1:1","nodeType":"YulLiteral","src":"6722:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"6707:3:1","nodeType":"YulIdentifier","src":"6707:3:1"},"nativeSrc":"6707:17:1","nodeType":"YulFunctionCall","src":"6707:17:1"},{"arguments":[{"name":"tail","nativeSrc":"6730:4:1","nodeType":"YulIdentifier","src":"6730:4:1"},{"name":"headStart","nativeSrc":"6736:9:1","nodeType":"YulIdentifier","src":"6736:9:1"}],"functionName":{"name":"sub","nativeSrc":"6726:3:1","nodeType":"YulIdentifier","src":"6726:3:1"},"nativeSrc":"6726:20:1","nodeType":"YulFunctionCall","src":"6726:20:1"}],"functionName":{"name":"mstore","nativeSrc":"6700:6:1","nodeType":"YulIdentifier","src":"6700:6:1"},"nativeSrc":"6700:47:1","nodeType":"YulFunctionCall","src":"6700:47:1"},"nativeSrc":"6700:47:1","nodeType":"YulExpressionStatement","src":"6700:47:1"},{"nativeSrc":"6756:139:1","nodeType":"YulAssignment","src":"6756:139:1","value":{"arguments":[{"name":"tail","nativeSrc":"6890:4:1","nodeType":"YulIdentifier","src":"6890:4:1"}],"functionName":{"name":"abi_encode_t_stringliteral_397f20c9ee670e88dbc97000732216e0936c9de3d4dedf79ef5a506c8a043cf4_to_t_string_memory_ptr_fromStack","nativeSrc":"6764:124:1","nodeType":"YulIdentifier","src":"6764:124:1"},"nativeSrc":"6764:131:1","nodeType":"YulFunctionCall","src":"6764:131:1"},"variableNames":[{"name":"tail","nativeSrc":"6756:4:1","nodeType":"YulIdentifier","src":"6756:4:1"}]}]},"name":"abi_encode_tuple_t_stringliteral_397f20c9ee670e88dbc97000732216e0936c9de3d4dedf79ef5a506c8a043cf4__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"6483:419:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6634:9:1","nodeType":"YulTypedName","src":"6634:9:1","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6649:4:1","nodeType":"YulTypedName","src":"6649:4:1","type":""}],"src":"6483:419:1"},{"body":{"nativeSrc":"7021:34:1","nodeType":"YulBlock","src":"7021:34:1","statements":[{"nativeSrc":"7031:18:1","nodeType":"YulAssignment","src":"7031:18:1","value":{"name":"pos","nativeSrc":"7046:3:1","nodeType":"YulIdentifier","src":"7046:3:1"},"variableNames":[{"name":"updated_pos","nativeSrc":"7031:11:1","nodeType":"YulIdentifier","src":"7031:11:1"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"6908:147:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"6993:3:1","nodeType":"YulTypedName","src":"6993:3:1","type":""},{"name":"length","nativeSrc":"6998:6:1","nodeType":"YulTypedName","src":"6998:6:1","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"7009:11:1","nodeType":"YulTypedName","src":"7009:11:1","type":""}],"src":"6908:147:1"},{"body":{"nativeSrc":"7167:8:1","nodeType":"YulBlock","src":"7167:8:1","statements":[]},"name":"store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","nativeSrc":"7061:114:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"7159:6:1","nodeType":"YulTypedName","src":"7159:6:1","type":""}],"src":"7061:114:1"},{"body":{"nativeSrc":"7344:235:1","nodeType":"YulBlock","src":"7344:235:1","statements":[{"nativeSrc":"7354:90:1","nodeType":"YulAssignment","src":"7354:90:1","value":{"arguments":[{"name":"pos","nativeSrc":"7437:3:1","nodeType":"YulIdentifier","src":"7437:3:1"},{"kind":"number","nativeSrc":"7442:1:1","nodeType":"YulLiteral","src":"7442:1:1","type":"","value":"0"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"7361:75:1","nodeType":"YulIdentifier","src":"7361:75:1"},"nativeSrc":"7361:83:1","nodeType":"YulFunctionCall","src":"7361:83:1"},"variableNames":[{"name":"pos","nativeSrc":"7354:3:1","nodeType":"YulIdentifier","src":"7354:3:1"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"7542:3:1","nodeType":"YulIdentifier","src":"7542:3:1"}],"functionName":{"name":"store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","nativeSrc":"7453:88:1","nodeType":"YulIdentifier","src":"7453:88:1"},"nativeSrc":"7453:93:1","nodeType":"YulFunctionCall","src":"7453:93:1"},"nativeSrc":"7453:93:1","nodeType":"YulExpressionStatement","src":"7453:93:1"},{"nativeSrc":"7555:18:1","nodeType":"YulAssignment","src":"7555:18:1","value":{"arguments":[{"name":"pos","nativeSrc":"7566:3:1","nodeType":"YulIdentifier","src":"7566:3:1"},{"kind":"number","nativeSrc":"7571:1:1","nodeType":"YulLiteral","src":"7571:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"7562:3:1","nodeType":"YulIdentifier","src":"7562:3:1"},"nativeSrc":"7562:11:1","nodeType":"YulFunctionCall","src":"7562:11:1"},"variableNames":[{"name":"end","nativeSrc":"7555:3:1","nodeType":"YulIdentifier","src":"7555:3:1"}]}]},"name":"abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"7181:398:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"7332:3:1","nodeType":"YulTypedName","src":"7332:3:1","type":""}],"returnVariables":[{"name":"end","nativeSrc":"7340:3:1","nodeType":"YulTypedName","src":"7340:3:1","type":""}],"src":"7181:398:1"},{"body":{"nativeSrc":"7773:191:1","nodeType":"YulBlock","src":"7773:191:1","statements":[{"nativeSrc":"7784:154:1","nodeType":"YulAssignment","src":"7784:154:1","value":{"arguments":[{"name":"pos","nativeSrc":"7934:3:1","nodeType":"YulIdentifier","src":"7934:3:1"}],"functionName":{"name":"abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"7791:141:1","nodeType":"YulIdentifier","src":"7791:141:1"},"nativeSrc":"7791:147:1","nodeType":"YulFunctionCall","src":"7791:147:1"},"variableNames":[{"name":"pos","nativeSrc":"7784:3:1","nodeType":"YulIdentifier","src":"7784:3:1"}]},{"nativeSrc":"7948:10:1","nodeType":"YulAssignment","src":"7948:10:1","value":{"name":"pos","nativeSrc":"7955:3:1","nodeType":"YulIdentifier","src":"7955:3:1"},"variableNames":[{"name":"end","nativeSrc":"7948:3:1","nodeType":"YulIdentifier","src":"7948:3:1"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"7585:379:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"7760:3:1","nodeType":"YulTypedName","src":"7760:3:1","type":""}],"returnVariables":[{"name":"end","nativeSrc":"7769:3:1","nodeType":"YulTypedName","src":"7769:3:1","type":""}],"src":"7585:379:1"},{"body":{"nativeSrc":"8076:59:1","nodeType":"YulBlock","src":"8076:59:1","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"8098:6:1","nodeType":"YulIdentifier","src":"8098:6:1"},{"kind":"number","nativeSrc":"8106:1:1","nodeType":"YulLiteral","src":"8106:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"8094:3:1","nodeType":"YulIdentifier","src":"8094:3:1"},"nativeSrc":"8094:14:1","nodeType":"YulFunctionCall","src":"8094:14:1"},{"hexValue":"5769746864726177206661696c6564","kind":"string","nativeSrc":"8110:17:1","nodeType":"YulLiteral","src":"8110:17:1","type":"","value":"Withdraw failed"}],"functionName":{"name":"mstore","nativeSrc":"8087:6:1","nodeType":"YulIdentifier","src":"8087:6:1"},"nativeSrc":"8087:41:1","nodeType":"YulFunctionCall","src":"8087:41:1"},"nativeSrc":"8087:41:1","nodeType":"YulExpressionStatement","src":"8087:41:1"}]},"name":"store_literal_in_memory_2bbe70e6500e9642f2862dc923170a5f09b5a43a51b0f2c3488a318564bb6925","nativeSrc":"7970:165:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"8068:6:1","nodeType":"YulTypedName","src":"8068:6:1","type":""}],"src":"7970:165:1"},{"body":{"nativeSrc":"8287:220:1","nodeType":"YulBlock","src":"8287:220:1","statements":[{"nativeSrc":"8297:74:1","nodeType":"YulAssignment","src":"8297:74:1","value":{"arguments":[{"name":"pos","nativeSrc":"8363:3:1","nodeType":"YulIdentifier","src":"8363:3:1"},{"kind":"number","nativeSrc":"8368:2:1","nodeType":"YulLiteral","src":"8368:2:1","type":"","value":"15"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"8304:58:1","nodeType":"YulIdentifier","src":"8304:58:1"},"nativeSrc":"8304:67:1","nodeType":"YulFunctionCall","src":"8304:67:1"},"variableNames":[{"name":"pos","nativeSrc":"8297:3:1","nodeType":"YulIdentifier","src":"8297:3:1"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"8469:3:1","nodeType":"YulIdentifier","src":"8469:3:1"}],"functionName":{"name":"store_literal_in_memory_2bbe70e6500e9642f2862dc923170a5f09b5a43a51b0f2c3488a318564bb6925","nativeSrc":"8380:88:1","nodeType":"YulIdentifier","src":"8380:88:1"},"nativeSrc":"8380:93:1","nodeType":"YulFunctionCall","src":"8380:93:1"},"nativeSrc":"8380:93:1","nodeType":"YulExpressionStatement","src":"8380:93:1"},{"nativeSrc":"8482:19:1","nodeType":"YulAssignment","src":"8482:19:1","value":{"arguments":[{"name":"pos","nativeSrc":"8493:3:1","nodeType":"YulIdentifier","src":"8493:3:1"},{"kind":"number","nativeSrc":"8498:2:1","nodeType":"YulLiteral","src":"8498:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8489:3:1","nodeType":"YulIdentifier","src":"8489:3:1"},"nativeSrc":"8489:12:1","nodeType":"YulFunctionCall","src":"8489:12:1"},"variableNames":[{"name":"end","nativeSrc":"8482:3:1","nodeType":"YulIdentifier","src":"8482:3:1"}]}]},"name":"abi_encode_t_stringliteral_2bbe70e6500e9642f2862dc923170a5f09b5a43a51b0f2c3488a318564bb6925_to_t_string_memory_ptr_fromStack","nativeSrc":"8141:366:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"8275:3:1","nodeType":"YulTypedName","src":"8275:3:1","type":""}],"returnVariables":[{"name":"end","nativeSrc":"8283:3:1","nodeType":"YulTypedName","src":"8283:3:1","type":""}],"src":"8141:366:1"},{"body":{"nativeSrc":"8684:248:1","nodeType":"YulBlock","src":"8684:248:1","statements":[{"nativeSrc":"8694:26:1","nodeType":"YulAssignment","src":"8694:26:1","value":{"arguments":[{"name":"headStart","nativeSrc":"8706:9:1","nodeType":"YulIdentifier","src":"8706:9:1"},{"kind":"number","nativeSrc":"8717:2:1","nodeType":"YulLiteral","src":"8717:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8702:3:1","nodeType":"YulIdentifier","src":"8702:3:1"},"nativeSrc":"8702:18:1","nodeType":"YulFunctionCall","src":"8702:18:1"},"variableNames":[{"name":"tail","nativeSrc":"8694:4:1","nodeType":"YulIdentifier","src":"8694:4:1"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8741:9:1","nodeType":"YulIdentifier","src":"8741:9:1"},{"kind":"number","nativeSrc":"8752:1:1","nodeType":"YulLiteral","src":"8752:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"8737:3:1","nodeType":"YulIdentifier","src":"8737:3:1"},"nativeSrc":"8737:17:1","nodeType":"YulFunctionCall","src":"8737:17:1"},{"arguments":[{"name":"tail","nativeSrc":"8760:4:1","nodeType":"YulIdentifier","src":"8760:4:1"},{"name":"headStart","nativeSrc":"8766:9:1","nodeType":"YulIdentifier","src":"8766:9:1"}],"functionName":{"name":"sub","nativeSrc":"8756:3:1","nodeType":"YulIdentifier","src":"8756:3:1"},"nativeSrc":"8756:20:1","nodeType":"YulFunctionCall","src":"8756:20:1"}],"functionName":{"name":"mstore","nativeSrc":"8730:6:1","nodeType":"YulIdentifier","src":"8730:6:1"},"nativeSrc":"8730:47:1","nodeType":"YulFunctionCall","src":"8730:47:1"},"nativeSrc":"8730:47:1","nodeType":"YulExpressionStatement","src":"8730:47:1"},{"nativeSrc":"8786:139:1","nodeType":"YulAssignment","src":"8786:139:1","value":{"arguments":[{"name":"tail","nativeSrc":"8920:4:1","nodeType":"YulIdentifier","src":"8920:4:1"}],"functionName":{"name":"abi_encode_t_stringliteral_2bbe70e6500e9642f2862dc923170a5f09b5a43a51b0f2c3488a318564bb6925_to_t_string_memory_ptr_fromStack","nativeSrc":"8794:124:1","nodeType":"YulIdentifier","src":"8794:124:1"},"nativeSrc":"8794:131:1","nodeType":"YulFunctionCall","src":"8794:131:1"},"variableNames":[{"name":"tail","nativeSrc":"8786:4:1","nodeType":"YulIdentifier","src":"8786:4:1"}]}]},"name":"abi_encode_tuple_t_stringliteral_2bbe70e6500e9642f2862dc923170a5f09b5a43a51b0f2c3488a318564bb6925__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"8513:419:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8664:9:1","nodeType":"YulTypedName","src":"8664:9:1","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8679:4:1","nodeType":"YulTypedName","src":"8679:4:1","type":""}],"src":"8513:419:1"},{"body":{"nativeSrc":"9044:63:1","nodeType":"YulBlock","src":"9044:63:1","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"9066:6:1","nodeType":"YulIdentifier","src":"9066:6:1"},{"kind":"number","nativeSrc":"9074:1:1","nodeType":"YulLiteral","src":"9074:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"9062:3:1","nodeType":"YulIdentifier","src":"9062:3:1"},"nativeSrc":"9062:14:1","nodeType":"YulFunctionCall","src":"9062:14:1"},{"hexValue":"4465706f736974206d757374206265203e2030","kind":"string","nativeSrc":"9078:21:1","nodeType":"YulLiteral","src":"9078:21:1","type":"","value":"Deposit must be > 0"}],"functionName":{"name":"mstore","nativeSrc":"9055:6:1","nodeType":"YulIdentifier","src":"9055:6:1"},"nativeSrc":"9055:45:1","nodeType":"YulFunctionCall","src":"9055:45:1"},"nativeSrc":"9055:45:1","nodeType":"YulExpressionStatement","src":"9055:45:1"}]},"name":"store_literal_in_memory_413580c2bed8f5997e496999aeae2d0944cef34dd07600d725723cfeb9a27018","nativeSrc":"8938:169:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"9036:6:1","nodeType":"YulTypedName","src":"9036:6:1","type":""}],"src":"8938:169:1"},{"body":{"nativeSrc":"9259:220:1","nodeType":"YulBlock","src":"9259:220:1","statements":[{"nativeSrc":"9269:74:1","nodeType":"YulAssignment","src":"9269:74:1","value":{"arguments":[{"name":"pos","nativeSrc":"9335:3:1","nodeType":"YulIdentifier","src":"9335:3:1"},{"kind":"number","nativeSrc":"9340:2:1","nodeType":"YulLiteral","src":"9340:2:1","type":"","value":"19"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"9276:58:1","nodeType":"YulIdentifier","src":"9276:58:1"},"nativeSrc":"9276:67:1","nodeType":"YulFunctionCall","src":"9276:67:1"},"variableNames":[{"name":"pos","nativeSrc":"9269:3:1","nodeType":"YulIdentifier","src":"9269:3:1"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"9441:3:1","nodeType":"YulIdentifier","src":"9441:3:1"}],"functionName":{"name":"store_literal_in_memory_413580c2bed8f5997e496999aeae2d0944cef34dd07600d725723cfeb9a27018","nativeSrc":"9352:88:1","nodeType":"YulIdentifier","src":"9352:88:1"},"nativeSrc":"9352:93:1","nodeType":"YulFunctionCall","src":"9352:93:1"},"nativeSrc":"9352:93:1","nodeType":"YulExpressionStatement","src":"9352:93:1"},{"nativeSrc":"9454:19:1","nodeType":"YulAssignment","src":"9454:19:1","value":{"arguments":[{"name":"pos","nativeSrc":"9465:3:1","nodeType":"YulIdentifier","src":"9465:3:1"},{"kind":"number","nativeSrc":"9470:2:1","nodeType":"YulLiteral","src":"9470:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9461:3:1","nodeType":"YulIdentifier","src":"9461:3:1"},"nativeSrc":"9461:12:1","nodeType":"YulFunctionCall","src":"9461:12:1"},"variableNames":[{"name":"end","nativeSrc":"9454:3:1","nodeType":"YulIdentifier","src":"9454:3:1"}]}]},"name":"abi_encode_t_stringliteral_413580c2bed8f5997e496999aeae2d0944cef34dd07600d725723cfeb9a27018_to_t_string_memory_ptr_fromStack","nativeSrc":"9113:366:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"9247:3:1","nodeType":"YulTypedName","src":"9247:3:1","type":""}],"returnVariables":[{"name":"end","nativeSrc":"9255:3:1","nodeType":"YulTypedName","src":"9255:3:1","type":""}],"src":"9113:366:1"},{"body":{"nativeSrc":"9656:248:1","nodeType":"YulBlock","src":"9656:248:1","statements":[{"nativeSrc":"9666:26:1","nodeType":"YulAssignment","src":"9666:26:1","value":{"arguments":[{"name":"headStart","nativeSrc":"9678:9:1","nodeType":"YulIdentifier","src":"9678:9:1"},{"kind":"number","nativeSrc":"9689:2:1","nodeType":"YulLiteral","src":"9689:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9674:3:1","nodeType":"YulIdentifier","src":"9674:3:1"},"nativeSrc":"9674:18:1","nodeType":"YulFunctionCall","src":"9674:18:1"},"variableNames":[{"name":"tail","nativeSrc":"9666:4:1","nodeType":"YulIdentifier","src":"9666:4:1"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9713:9:1","nodeType":"YulIdentifier","src":"9713:9:1"},{"kind":"number","nativeSrc":"9724:1:1","nodeType":"YulLiteral","src":"9724:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"9709:3:1","nodeType":"YulIdentifier","src":"9709:3:1"},"nativeSrc":"9709:17:1","nodeType":"YulFunctionCall","src":"9709:17:1"},{"arguments":[{"name":"tail","nativeSrc":"9732:4:1","nodeType":"YulIdentifier","src":"9732:4:1"},{"name":"headStart","nativeSrc":"9738:9:1","nodeType":"YulIdentifier","src":"9738:9:1"}],"functionName":{"name":"sub","nativeSrc":"9728:3:1","nodeType":"YulIdentifier","src":"9728:3:1"},"nativeSrc":"9728:20:1","nodeType":"YulFunctionCall","src":"9728:20:1"}],"functionName":{"name":"mstore","nativeSrc":"9702:6:1","nodeType":"YulIdentifier","src":"9702:6:1"},"nativeSrc":"9702:47:1","nodeType":"YulFunctionCall","src":"9702:47:1"},"nativeSrc":"9702:47:1","nodeType":"YulExpressionStatement","src":"9702:47:1"},{"nativeSrc":"9758:139:1","nodeType":"YulAssignment","src":"9758:139:1","value":{"arguments":[{"name":"tail","nativeSrc":"9892:4:1","nodeType":"YulIdentifier","src":"9892:4:1"}],"functionName":{"name":"abi_encode_t_stringliteral_413580c2bed8f5997e496999aeae2d0944cef34dd07600d725723cfeb9a27018_to_t_string_memory_ptr_fromStack","nativeSrc":"9766:124:1","nodeType":"YulIdentifier","src":"9766:124:1"},"nativeSrc":"9766:131:1","nodeType":"YulFunctionCall","src":"9766:131:1"},"variableNames":[{"name":"tail","nativeSrc":"9758:4:1","nodeType":"YulIdentifier","src":"9758:4:1"}]}]},"name":"abi_encode_tuple_t_stringliteral_413580c2bed8f5997e496999aeae2d0944cef34dd07600d725723cfeb9a27018__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"9485:419:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9636:9:1","nodeType":"YulTypedName","src":"9636:9:1","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9651:4:1","nodeType":"YulTypedName","src":"9651:4:1","type":""}],"src":"9485:419:1"},{"body":{"nativeSrc":"9938:152:1","nodeType":"YulBlock","src":"9938:152:1","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9955:1:1","nodeType":"YulLiteral","src":"9955:1:1","type":"","value":"0"},{"kind":"number","nativeSrc":"9958:77:1","nodeType":"YulLiteral","src":"9958:77:1","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"9948:6:1","nodeType":"YulIdentifier","src":"9948:6:1"},"nativeSrc":"9948:88:1","nodeType":"YulFunctionCall","src":"9948:88:1"},"nativeSrc":"9948:88:1","nodeType":"YulExpressionStatement","src":"9948:88:1"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10052:1:1","nodeType":"YulLiteral","src":"10052:1:1","type":"","value":"4"},{"kind":"number","nativeSrc":"10055:4:1","nodeType":"YulLiteral","src":"10055:4:1","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"10045:6:1","nodeType":"YulIdentifier","src":"10045:6:1"},"nativeSrc":"10045:15:1","nodeType":"YulFunctionCall","src":"10045:15:1"},"nativeSrc":"10045:15:1","nodeType":"YulExpressionStatement","src":"10045:15:1"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10076:1:1","nodeType":"YulLiteral","src":"10076:1:1","type":"","value":"0"},{"kind":"number","nativeSrc":"10079:4:1","nodeType":"YulLiteral","src":"10079:4:1","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"10069:6:1","nodeType":"YulIdentifier","src":"10069:6:1"},"nativeSrc":"10069:15:1","nodeType":"YulFunctionCall","src":"10069:15:1"},"nativeSrc":"10069:15:1","nodeType":"YulExpressionStatement","src":"10069:15:1"}]},"name":"panic_error_0x11","nativeSrc":"9910:180:1","nodeType":"YulFunctionDefinition","src":"9910:180:1"},{"body":{"nativeSrc":"10140:147:1","nodeType":"YulBlock","src":"10140:147:1","statements":[{"nativeSrc":"10150:25:1","nodeType":"YulAssignment","src":"10150:25:1","value":{"arguments":[{"name":"x","nativeSrc":"10173:1:1","nodeType":"YulIdentifier","src":"10173:1:1"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"10155:17:1","nodeType":"YulIdentifier","src":"10155:17:1"},"nativeSrc":"10155:20:1","nodeType":"YulFunctionCall","src":"10155:20:1"},"variableNames":[{"name":"x","nativeSrc":"10150:1:1","nodeType":"YulIdentifier","src":"10150:1:1"}]},{"nativeSrc":"10184:25:1","nodeType":"YulAssignment","src":"10184:25:1","value":{"arguments":[{"name":"y","nativeSrc":"10207:1:1","nodeType":"YulIdentifier","src":"10207:1:1"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"10189:17:1","nodeType":"YulIdentifier","src":"10189:17:1"},"nativeSrc":"10189:20:1","nodeType":"YulFunctionCall","src":"10189:20:1"},"variableNames":[{"name":"y","nativeSrc":"10184:1:1","nodeType":"YulIdentifier","src":"10184:1:1"}]},{"nativeSrc":"10218:16:1","nodeType":"YulAssignment","src":"10218:16:1","value":{"arguments":[{"name":"x","nativeSrc":"10229:1:1","nodeType":"YulIdentifier","src":"10229:1:1"},{"name":"y","nativeSrc":"10232:1:1","nodeType":"YulIdentifier","src":"10232:1:1"}],"functionName":{"name":"add","nativeSrc":"10225:3:1","nodeType":"YulIdentifier","src":"10225:3:1"},"nativeSrc":"10225:9:1","nodeType":"YulFunctionCall","src":"10225:9:1"},"variableNames":[{"name":"sum","nativeSrc":"10218:3:1","nodeType":"YulIdentifier","src":"10218:3:1"}]},{"body":{"nativeSrc":"10258:22:1","nodeType":"YulBlock","src":"10258:22:1","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"10260:16:1","nodeType":"YulIdentifier","src":"10260:16:1"},"nativeSrc":"10260:18:1","nodeType":"YulFunctionCall","src":"10260:18:1"},"nativeSrc":"10260:18:1","nodeType":"YulExpressionStatement","src":"10260:18:1"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"10250:1:1","nodeType":"YulIdentifier","src":"10250:1:1"},{"name":"sum","nativeSrc":"10253:3:1","nodeType":"YulIdentifier","src":"10253:3:1"}],"functionName":{"name":"gt","nativeSrc":"10247:2:1","nodeType":"YulIdentifier","src":"10247:2:1"},"nativeSrc":"10247:10:1","nodeType":"YulFunctionCall","src":"10247:10:1"},"nativeSrc":"10244:36:1","nodeType":"YulIf","src":"10244:36:1"}]},"name":"checked_add_t_uint256","nativeSrc":"10096:191:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"10127:1:1","nodeType":"YulTypedName","src":"10127:1:1","type":""},{"name":"y","nativeSrc":"10130:1:1","nodeType":"YulTypedName","src":"10130:1:1","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"10136:3:1","nodeType":"YulTypedName","src":"10136:3:1","type":""}],"src":"10096:191:1"},{"body":{"nativeSrc":"10399:75:1","nodeType":"YulBlock","src":"10399:75:1","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"10421:6:1","nodeType":"YulIdentifier","src":"10421:6:1"},{"kind":"number","nativeSrc":"10429:1:1","nodeType":"YulLiteral","src":"10429:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"10417:3:1","nodeType":"YulIdentifier","src":"10417:3:1"},"nativeSrc":"10417:14:1","nodeType":"YulFunctionCall","src":"10417:14:1"},{"hexValue":"556e6c6f636b2074696d65206d7573742062652065786163746c7920323468","kind":"string","nativeSrc":"10433:33:1","nodeType":"YulLiteral","src":"10433:33:1","type":"","value":"Unlock time must be exactly 24h"}],"functionName":{"name":"mstore","nativeSrc":"10410:6:1","nodeType":"YulIdentifier","src":"10410:6:1"},"nativeSrc":"10410:57:1","nodeType":"YulFunctionCall","src":"10410:57:1"},"nativeSrc":"10410:57:1","nodeType":"YulExpressionStatement","src":"10410:57:1"}]},"name":"store_literal_in_memory_c782715ef3bace595a1f2d9d78f66f7638016082f152b66374cd385de05e69c4","nativeSrc":"10293:181:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"10391:6:1","nodeType":"YulTypedName","src":"10391:6:1","type":""}],"src":"10293:181:1"},{"body":{"nativeSrc":"10626:220:1","nodeType":"YulBlock","src":"10626:220:1","statements":[{"nativeSrc":"10636:74:1","nodeType":"YulAssignment","src":"10636:74:1","value":{"arguments":[{"name":"pos","nativeSrc":"10702:3:1","nodeType":"YulIdentifier","src":"10702:3:1"},{"kind":"number","nativeSrc":"10707:2:1","nodeType":"YulLiteral","src":"10707:2:1","type":"","value":"31"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"10643:58:1","nodeType":"YulIdentifier","src":"10643:58:1"},"nativeSrc":"10643:67:1","nodeType":"YulFunctionCall","src":"10643:67:1"},"variableNames":[{"name":"pos","nativeSrc":"10636:3:1","nodeType":"YulIdentifier","src":"10636:3:1"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"10808:3:1","nodeType":"YulIdentifier","src":"10808:3:1"}],"functionName":{"name":"store_literal_in_memory_c782715ef3bace595a1f2d9d78f66f7638016082f152b66374cd385de05e69c4","nativeSrc":"10719:88:1","nodeType":"YulIdentifier","src":"10719:88:1"},"nativeSrc":"10719:93:1","nodeType":"YulFunctionCall","src":"10719:93:1"},"nativeSrc":"10719:93:1","nodeType":"YulExpressionStatement","src":"10719:93:1"},{"nativeSrc":"10821:19:1","nodeType":"YulAssignment","src":"10821:19:1","value":{"arguments":[{"name":"pos","nativeSrc":"10832:3:1","nodeType":"YulIdentifier","src":"10832:3:1"},{"kind":"number","nativeSrc":"10837:2:1","nodeType":"YulLiteral","src":"10837:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10828:3:1","nodeType":"YulIdentifier","src":"10828:3:1"},"nativeSrc":"10828:12:1","nodeType":"YulFunctionCall","src":"10828:12:1"},"variableNames":[{"name":"end","nativeSrc":"10821:3:1","nodeType":"YulIdentifier","src":"10821:3:1"}]}]},"name":"abi_encode_t_stringliteral_c782715ef3bace595a1f2d9d78f66f7638016082f152b66374cd385de05e69c4_to_t_string_memory_ptr_fromStack","nativeSrc":"10480:366:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"10614:3:1","nodeType":"YulTypedName","src":"10614:3:1","type":""}],"returnVariables":[{"name":"end","nativeSrc":"10622:3:1","nodeType":"YulTypedName","src":"10622:3:1","type":""}],"src":"10480:366:1"},{"body":{"nativeSrc":"11023:248:1","nodeType":"YulBlock","src":"11023:248:1","statements":[{"nativeSrc":"11033:26:1","nodeType":"YulAssignment","src":"11033:26:1","value":{"arguments":[{"name":"headStart","nativeSrc":"11045:9:1","nodeType":"YulIdentifier","src":"11045:9:1"},{"kind":"number","nativeSrc":"11056:2:1","nodeType":"YulLiteral","src":"11056:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11041:3:1","nodeType":"YulIdentifier","src":"11041:3:1"},"nativeSrc":"11041:18:1","nodeType":"YulFunctionCall","src":"11041:18:1"},"variableNames":[{"name":"tail","nativeSrc":"11033:4:1","nodeType":"YulIdentifier","src":"11033:4:1"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11080:9:1","nodeType":"YulIdentifier","src":"11080:9:1"},{"kind":"number","nativeSrc":"11091:1:1","nodeType":"YulLiteral","src":"11091:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"11076:3:1","nodeType":"YulIdentifier","src":"11076:3:1"},"nativeSrc":"11076:17:1","nodeType":"YulFunctionCall","src":"11076:17:1"},{"arguments":[{"name":"tail","nativeSrc":"11099:4:1","nodeType":"YulIdentifier","src":"11099:4:1"},{"name":"headStart","nativeSrc":"11105:9:1","nodeType":"YulIdentifier","src":"11105:9:1"}],"functionName":{"name":"sub","nativeSrc":"11095:3:1","nodeType":"YulIdentifier","src":"11095:3:1"},"nativeSrc":"11095:20:1","nodeType":"YulFunctionCall","src":"11095:20:1"}],"functionName":{"name":"mstore","nativeSrc":"11069:6:1","nodeType":"YulIdentifier","src":"11069:6:1"},"nativeSrc":"11069:47:1","nodeType":"YulFunctionCall","src":"11069:47:1"},"nativeSrc":"11069:47:1","nodeType":"YulExpressionStatement","src":"11069:47:1"},{"nativeSrc":"11125:139:1","nodeType":"YulAssignment","src":"11125:139:1","value":{"arguments":[{"name":"tail","nativeSrc":"11259:4:1","nodeType":"YulIdentifier","src":"11259:4:1"}],"functionName":{"name":"abi_encode_t_stringliteral_c782715ef3bace595a1f2d9d78f66f7638016082f152b66374cd385de05e69c4_to_t_string_memory_ptr_fromStack","nativeSrc":"11133:124:1","nodeType":"YulIdentifier","src":"11133:124:1"},"nativeSrc":"11133:131:1","nodeType":"YulFunctionCall","src":"11133:131:1"},"variableNames":[{"name":"tail","nativeSrc":"11125:4:1","nodeType":"YulIdentifier","src":"11125:4:1"}]}]},"name":"abi_encode_tuple_t_stringliteral_c782715ef3bace595a1f2d9d78f66f7638016082f152b66374cd385de05e69c4__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"10852:419:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11003:9:1","nodeType":"YulTypedName","src":"11003:9:1","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11018:4:1","nodeType":"YulTypedName","src":"11018:4:1","type":""}],"src":"10852:419:1"},{"body":{"nativeSrc":"11383:64:1","nodeType":"YulBlock","src":"11383:64:1","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"11405:6:1","nodeType":"YulIdentifier","src":"11405:6:1"},{"kind":"number","nativeSrc":"11413:1:1","nodeType":"YulLiteral","src":"11413:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"11401:3:1","nodeType":"YulIdentifier","src":"11401:3:1"},"nativeSrc":"11401:14:1","nodeType":"YulFunctionCall","src":"11401:14:1"},{"hexValue":"5661756c7420616c726561647920616374697665","kind":"string","nativeSrc":"11417:22:1","nodeType":"YulLiteral","src":"11417:22:1","type":"","value":"Vault already active"}],"functionName":{"name":"mstore","nativeSrc":"11394:6:1","nodeType":"YulIdentifier","src":"11394:6:1"},"nativeSrc":"11394:46:1","nodeType":"YulFunctionCall","src":"11394:46:1"},"nativeSrc":"11394:46:1","nodeType":"YulExpressionStatement","src":"11394:46:1"}]},"name":"store_literal_in_memory_477db204232217c50608006fa25f563193a21005da4e8c31c6e6b2e45a55c870","nativeSrc":"11277:170:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"11375:6:1","nodeType":"YulTypedName","src":"11375:6:1","type":""}],"src":"11277:170:1"},{"body":{"nativeSrc":"11599:220:1","nodeType":"YulBlock","src":"11599:220:1","statements":[{"nativeSrc":"11609:74:1","nodeType":"YulAssignment","src":"11609:74:1","value":{"arguments":[{"name":"pos","nativeSrc":"11675:3:1","nodeType":"YulIdentifier","src":"11675:3:1"},{"kind":"number","nativeSrc":"11680:2:1","nodeType":"YulLiteral","src":"11680:2:1","type":"","value":"20"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"11616:58:1","nodeType":"YulIdentifier","src":"11616:58:1"},"nativeSrc":"11616:67:1","nodeType":"YulFunctionCall","src":"11616:67:1"},"variableNames":[{"name":"pos","nativeSrc":"11609:3:1","nodeType":"YulIdentifier","src":"11609:3:1"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"11781:3:1","nodeType":"YulIdentifier","src":"11781:3:1"}],"functionName":{"name":"store_literal_in_memory_477db204232217c50608006fa25f563193a21005da4e8c31c6e6b2e45a55c870","nativeSrc":"11692:88:1","nodeType":"YulIdentifier","src":"11692:88:1"},"nativeSrc":"11692:93:1","nodeType":"YulFunctionCall","src":"11692:93:1"},"nativeSrc":"11692:93:1","nodeType":"YulExpressionStatement","src":"11692:93:1"},{"nativeSrc":"11794:19:1","nodeType":"YulAssignment","src":"11794:19:1","value":{"arguments":[{"name":"pos","nativeSrc":"11805:3:1","nodeType":"YulIdentifier","src":"11805:3:1"},{"kind":"number","nativeSrc":"11810:2:1","nodeType":"YulLiteral","src":"11810:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11801:3:1","nodeType":"YulIdentifier","src":"11801:3:1"},"nativeSrc":"11801:12:1","nodeType":"YulFunctionCall","src":"11801:12:1"},"variableNames":[{"name":"end","nativeSrc":"11794:3:1","nodeType":"YulIdentifier","src":"11794:3:1"}]}]},"name":"abi_encode_t_stringliteral_477db204232217c50608006fa25f563193a21005da4e8c31c6e6b2e45a55c870_to_t_string_memory_ptr_fromStack","nativeSrc":"11453:366:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"11587:3:1","nodeType":"YulTypedName","src":"11587:3:1","type":""}],"returnVariables":[{"name":"end","nativeSrc":"11595:3:1","nodeType":"YulTypedName","src":"11595:3:1","type":""}],"src":"11453:366:1"},{"body":{"nativeSrc":"11996:248:1","nodeType":"YulBlock","src":"11996:248:1","statements":[{"nativeSrc":"12006:26:1","nodeType":"YulAssignment","src":"12006:26:1","value":{"arguments":[{"name":"headStart","nativeSrc":"12018:9:1","nodeType":"YulIdentifier","src":"12018:9:1"},{"kind":"number","nativeSrc":"12029:2:1","nodeType":"YulLiteral","src":"12029:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12014:3:1","nodeType":"YulIdentifier","src":"12014:3:1"},"nativeSrc":"12014:18:1","nodeType":"YulFunctionCall","src":"12014:18:1"},"variableNames":[{"name":"tail","nativeSrc":"12006:4:1","nodeType":"YulIdentifier","src":"12006:4:1"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12053:9:1","nodeType":"YulIdentifier","src":"12053:9:1"},{"kind":"number","nativeSrc":"12064:1:1","nodeType":"YulLiteral","src":"12064:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"12049:3:1","nodeType":"YulIdentifier","src":"12049:3:1"},"nativeSrc":"12049:17:1","nodeType":"YulFunctionCall","src":"12049:17:1"},{"arguments":[{"name":"tail","nativeSrc":"12072:4:1","nodeType":"YulIdentifier","src":"12072:4:1"},{"name":"headStart","nativeSrc":"12078:9:1","nodeType":"YulIdentifier","src":"12078:9:1"}],"functionName":{"name":"sub","nativeSrc":"12068:3:1","nodeType":"YulIdentifier","src":"12068:3:1"},"nativeSrc":"12068:20:1","nodeType":"YulFunctionCall","src":"12068:20:1"}],"functionName":{"name":"mstore","nativeSrc":"12042:6:1","nodeType":"YulIdentifier","src":"12042:6:1"},"nativeSrc":"12042:47:1","nodeType":"YulFunctionCall","src":"12042:47:1"},"nativeSrc":"12042:47:1","nodeType":"YulExpressionStatement","src":"12042:47:1"},{"nativeSrc":"12098:139:1","nodeType":"YulAssignment","src":"12098:139:1","value":{"arguments":[{"name":"tail","nativeSrc":"12232:4:1","nodeType":"YulIdentifier","src":"12232:4:1"}],"functionName":{"name":"abi_encode_t_stringliteral_477db204232217c50608006fa25f563193a21005da4e8c31c6e6b2e45a55c870_to_t_string_memory_ptr_fromStack","nativeSrc":"12106:124:1","nodeType":"YulIdentifier","src":"12106:124:1"},"nativeSrc":"12106:131:1","nodeType":"YulFunctionCall","src":"12106:131:1"},"variableNames":[{"name":"tail","nativeSrc":"12098:4:1","nodeType":"YulIdentifier","src":"12098:4:1"}]}]},"name":"abi_encode_tuple_t_stringliteral_477db204232217c50608006fa25f563193a21005da4e8c31c6e6b2e45a55c870__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"11825:419:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11976:9:1","nodeType":"YulTypedName","src":"11976:9:1","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11991:4:1","nodeType":"YulTypedName","src":"11991:4:1","type":""}],"src":"11825:419:1"},{"body":{"nativeSrc":"12376:206:1","nodeType":"YulBlock","src":"12376:206:1","statements":[{"nativeSrc":"12386:26:1","nodeType":"YulAssignment","src":"12386:26:1","value":{"arguments":[{"name":"headStart","nativeSrc":"12398:9:1","nodeType":"YulIdentifier","src":"12398:9:1"},{"kind":"number","nativeSrc":"12409:2:1","nodeType":"YulLiteral","src":"12409:2:1","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12394:3:1","nodeType":"YulIdentifier","src":"12394:3:1"},"nativeSrc":"12394:18:1","nodeType":"YulFunctionCall","src":"12394:18:1"},"variableNames":[{"name":"tail","nativeSrc":"12386:4:1","nodeType":"YulIdentifier","src":"12386:4:1"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"12466:6:1","nodeType":"YulIdentifier","src":"12466:6:1"},{"arguments":[{"name":"headStart","nativeSrc":"12479:9:1","nodeType":"YulIdentifier","src":"12479:9:1"},{"kind":"number","nativeSrc":"12490:1:1","nodeType":"YulLiteral","src":"12490:1:1","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"12475:3:1","nodeType":"YulIdentifier","src":"12475:3:1"},"nativeSrc":"12475:17:1","nodeType":"YulFunctionCall","src":"12475:17:1"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"12422:43:1","nodeType":"YulIdentifier","src":"12422:43:1"},"nativeSrc":"12422:71:1","nodeType":"YulFunctionCall","src":"12422:71:1"},"nativeSrc":"12422:71:1","nodeType":"YulExpressionStatement","src":"12422:71:1"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"12547:6:1","nodeType":"YulIdentifier","src":"12547:6:1"},{"arguments":[{"name":"headStart","nativeSrc":"12560:9:1","nodeType":"YulIdentifier","src":"12560:9:1"},{"kind":"number","nativeSrc":"12571:2:1","nodeType":"YulLiteral","src":"12571:2:1","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12556:3:1","nodeType":"YulIdentifier","src":"12556:3:1"},"nativeSrc":"12556:18:1","nodeType":"YulFunctionCall","src":"12556:18:1"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"12503:43:1","nodeType":"YulIdentifier","src":"12503:43:1"},"nativeSrc":"12503:72:1","nodeType":"YulFunctionCall","src":"12503:72:1"},"nativeSrc":"12503:72:1","nodeType":"YulExpressionStatement","src":"12503:72:1"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"12250:332:1","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12340:9:1","nodeType":"YulTypedName","src":"12340:9:1","type":""},{"name":"value1","nativeSrc":"12352:6:1","nodeType":"YulTypedName","src":"12352:6:1","type":""},{"name":"value0","nativeSrc":"12360:6:1","nodeType":"YulTypedName","src":"12360:6:1","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12371:4:1","nodeType":"YulTypedName","src":"12371:4:1","type":""}],"src":"12250:332:1"}]},"contents":"{\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_d23a6e7325f0abb96141966477cca10264973d4cd302317d51a5a0dcefe34d04(memPtr) {\n\n mstore(add(memPtr, 0), \"Direct ETH not allowed\")\n\n }\n\n function abi_encode_t_stringliteral_d23a6e7325f0abb96141966477cca10264973d4cd302317d51a5a0dcefe34d04_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_d23a6e7325f0abb96141966477cca10264973d4cd302317d51a5a0dcefe34d04(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_d23a6e7325f0abb96141966477cca10264973d4cd302317d51a5a0dcefe34d04__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d23a6e7325f0abb96141966477cca10264973d4cd302317d51a5a0dcefe34d04_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_bool__to_t_uint256_t_uint256_t_bool__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bool_to_t_bool_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function store_literal_in_memory_1e7971938948aeeb1bbe3e81ce47a5fd9bcdaf31195de25745fbcdb38ea75459(memPtr) {\n\n mstore(add(memPtr, 0), \"No active vault\")\n\n }\n\n function abi_encode_t_stringliteral_1e7971938948aeeb1bbe3e81ce47a5fd9bcdaf31195de25745fbcdb38ea75459_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 15)\n store_literal_in_memory_1e7971938948aeeb1bbe3e81ce47a5fd9bcdaf31195de25745fbcdb38ea75459(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_1e7971938948aeeb1bbe3e81ce47a5fd9bcdaf31195de25745fbcdb38ea75459__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1e7971938948aeeb1bbe3e81ce47a5fd9bcdaf31195de25745fbcdb38ea75459_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_9f6f93f20f78aace72bd65ea4b5066106f1a58ba03a145eb11ceff2dc1ab0dd1(memPtr) {\n\n mstore(add(memPtr, 0), \"Too early\")\n\n }\n\n function abi_encode_t_stringliteral_9f6f93f20f78aace72bd65ea4b5066106f1a58ba03a145eb11ceff2dc1ab0dd1_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 9)\n store_literal_in_memory_9f6f93f20f78aace72bd65ea4b5066106f1a58ba03a145eb11ceff2dc1ab0dd1(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_9f6f93f20f78aace72bd65ea4b5066106f1a58ba03a145eb11ceff2dc1ab0dd1__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9f6f93f20f78aace72bd65ea4b5066106f1a58ba03a145eb11ceff2dc1ab0dd1_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_397f20c9ee670e88dbc97000732216e0936c9de3d4dedf79ef5a506c8a043cf4(memPtr) {\n\n mstore(add(memPtr, 0), \"No balance\")\n\n }\n\n function abi_encode_t_stringliteral_397f20c9ee670e88dbc97000732216e0936c9de3d4dedf79ef5a506c8a043cf4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 10)\n store_literal_in_memory_397f20c9ee670e88dbc97000732216e0936c9de3d4dedf79ef5a506c8a043cf4(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_397f20c9ee670e88dbc97000732216e0936c9de3d4dedf79ef5a506c8a043cf4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_397f20c9ee670e88dbc97000732216e0936c9de3d4dedf79ef5a506c8a043cf4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(memPtr) {\n\n }\n\n function abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, 0)\n store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(pos)\n end := add(pos, 0)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos ) -> end {\n\n pos := abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n end := pos\n }\n\n function store_literal_in_memory_2bbe70e6500e9642f2862dc923170a5f09b5a43a51b0f2c3488a318564bb6925(memPtr) {\n\n mstore(add(memPtr, 0), \"Withdraw failed\")\n\n }\n\n function abi_encode_t_stringliteral_2bbe70e6500e9642f2862dc923170a5f09b5a43a51b0f2c3488a318564bb6925_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 15)\n store_literal_in_memory_2bbe70e6500e9642f2862dc923170a5f09b5a43a51b0f2c3488a318564bb6925(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_2bbe70e6500e9642f2862dc923170a5f09b5a43a51b0f2c3488a318564bb6925__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_2bbe70e6500e9642f2862dc923170a5f09b5a43a51b0f2c3488a318564bb6925_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_413580c2bed8f5997e496999aeae2d0944cef34dd07600d725723cfeb9a27018(memPtr) {\n\n mstore(add(memPtr, 0), \"Deposit must be > 0\")\n\n }\n\n function abi_encode_t_stringliteral_413580c2bed8f5997e496999aeae2d0944cef34dd07600d725723cfeb9a27018_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 19)\n store_literal_in_memory_413580c2bed8f5997e496999aeae2d0944cef34dd07600d725723cfeb9a27018(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_413580c2bed8f5997e496999aeae2d0944cef34dd07600d725723cfeb9a27018__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_413580c2bed8f5997e496999aeae2d0944cef34dd07600d725723cfeb9a27018_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function store_literal_in_memory_c782715ef3bace595a1f2d9d78f66f7638016082f152b66374cd385de05e69c4(memPtr) {\n\n mstore(add(memPtr, 0), \"Unlock time must be exactly 24h\")\n\n }\n\n function abi_encode_t_stringliteral_c782715ef3bace595a1f2d9d78f66f7638016082f152b66374cd385de05e69c4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n store_literal_in_memory_c782715ef3bace595a1f2d9d78f66f7638016082f152b66374cd385de05e69c4(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_c782715ef3bace595a1f2d9d78f66f7638016082f152b66374cd385de05e69c4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c782715ef3bace595a1f2d9d78f66f7638016082f152b66374cd385de05e69c4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_477db204232217c50608006fa25f563193a21005da4e8c31c6e6b2e45a55c870(memPtr) {\n\n mstore(add(memPtr, 0), \"Vault already active\")\n\n }\n\n function abi_encode_t_stringliteral_477db204232217c50608006fa25f563193a21005da4e8c31c6e6b2e45a55c870_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 20)\n store_literal_in_memory_477db204232217c50608006fa25f563193a21005da4e8c31c6e6b2e45a55c870(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_477db204232217c50608006fa25f563193a21005da4e8c31c6e6b2e45a55c870__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_477db204232217c50608006fa25f563193a21005da4e8c31c6e6b2e45a55c870_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n}\n","id":1,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405260043610610042575f3560e01c80630eb9af38146100bd5780633ccfd60b146100fb578063485d383414610111578063b6b55f251461013b57610082565b36610082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161007990610667565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100b490610667565b60405180910390fd5b3480156100c8575f5ffd5b506100e360048036038101906100de91906106e3565b610157565b6040516100f293929190610740565b60405180910390f35b348015610106575f5ffd5b5061010f6101c1565b005b34801561011c575f5ffd5b50610125610407565b6040516101329190610775565b60405180910390f35b610155600480360381019061015091906107b8565b61040e565b005b5f5f5f5f5f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f01548160010154826002015f9054906101000a900460ff16935093509350509193909250565b5f5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050806002015f9054906101000a900460ff16610250576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102479061082d565b60405180910390fd5b8060010154421015610297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028e90610895565b60405180910390fd5b5f815f015490505f81116102e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d7906108fd565b60405180910390fd5b5f825f01819055505f826002015f6101000a81548160ff0219169083151502179055505f82600101819055505f3373ffffffffffffffffffffffffffffffffffffffff168260405161033190610948565b5f6040518083038185875af1925050503d805f811461036b576040519150601f19603f3d011682016040523d82523d5f602084013e610370565b606091505b50509050806103b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ab906109a6565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516103fa9190610775565b60405180910390a2505050565b6201518081565b5f3411610450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044790610a0e565b60405180910390fd5b620151804261045f9190610a59565b81146104a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049790610ad6565b60405180910390fd5b5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f9054906101000a900460ff161561052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052390610b3e565b60405180910390fd5b6040518060600160405280348152602001828152602001600115158152505f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f0155602082015181600101556040820151816002015f6101000a81548160ff0219169083151502179055509050503373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a153483604051610602929190610b5c565b60405180910390a250565b5f82825260208201905092915050565b7f44697265637420455448206e6f7420616c6c6f776564000000000000000000005f82015250565b5f61065160168361060d565b915061065c8261061d565b602082019050919050565b5f6020820190508181035f83015261067e81610645565b9050919050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106b282610689565b9050919050565b6106c2816106a8565b81146106cc575f5ffd5b50565b5f813590506106dd816106b9565b92915050565b5f602082840312156106f8576106f7610685565b5b5f610705848285016106cf565b91505092915050565b5f819050919050565b6107208161070e565b82525050565b5f8115159050919050565b61073a81610726565b82525050565b5f6060820190506107535f830186610717565b6107606020830185610717565b61076d6040830184610731565b949350505050565b5f6020820190506107885f830184610717565b92915050565b6107978161070e565b81146107a1575f5ffd5b50565b5f813590506107b28161078e565b92915050565b5f602082840312156107cd576107cc610685565b5b5f6107da848285016107a4565b91505092915050565b7f4e6f20616374697665207661756c7400000000000000000000000000000000005f82015250565b5f610817600f8361060d565b9150610822826107e3565b602082019050919050565b5f6020820190508181035f8301526108448161080b565b9050919050565b7f546f6f206561726c7900000000000000000000000000000000000000000000005f82015250565b5f61087f60098361060d565b915061088a8261084b565b602082019050919050565b5f6020820190508181035f8301526108ac81610873565b9050919050565b7f4e6f2062616c616e6365000000000000000000000000000000000000000000005f82015250565b5f6108e7600a8361060d565b91506108f2826108b3565b602082019050919050565b5f6020820190508181035f830152610914816108db565b9050919050565b5f81905092915050565b50565b5f6109335f8361091b565b915061093e82610925565b5f82019050919050565b5f61095282610928565b9150819050919050565b7f5769746864726177206661696c656400000000000000000000000000000000005f82015250565b5f610990600f8361060d565b915061099b8261095c565b602082019050919050565b5f6020820190508181035f8301526109bd81610984565b9050919050565b7f4465706f736974206d757374206265203e2030000000000000000000000000005f82015250565b5f6109f860138361060d565b9150610a03826109c4565b602082019050919050565b5f6020820190508181035f830152610a25816109ec565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610a638261070e565b9150610a6e8361070e565b9250828201905080821115610a8657610a85610a2c565b5b92915050565b7f556e6c6f636b2074696d65206d7573742062652065786163746c7920323468005f82015250565b5f610ac0601f8361060d565b9150610acb82610a8c565b602082019050919050565b5f6020820190508181035f830152610aed81610ab4565b9050919050565b7f5661756c7420616c7265616479206163746976650000000000000000000000005f82015250565b5f610b2860148361060d565b9150610b3382610af4565b602082019050919050565b5f6020820190508181035f830152610b5581610b1c565b9050919050565b5f604082019050610b6f5f830185610717565b610b7c6020830184610717565b939250505056fea26469706673582212206e7089b98a959fb43d7f15a3780ed05308078d0f0a104edf440a588e08286bd764736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x42 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEB9AF38 EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0xFB JUMPI DUP1 PUSH4 0x485D3834 EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x13B JUMPI PUSH2 0x82 JUMP JUMPDEST CALLDATASIZE PUSH2 0x82 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x79 SWAP1 PUSH2 0x667 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB4 SWAP1 PUSH2 0x667 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xE3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xDE SWAP2 SWAP1 PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x157 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x740 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x106 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x10F PUSH2 0x1C1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x125 PUSH2 0x407 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x132 SWAP2 SWAP1 PUSH2 0x775 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x155 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x150 SWAP2 SWAP1 PUSH2 0x7B8 JUMP JUMPDEST PUSH2 0x40E JUMP JUMPDEST STOP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SWAP1 POP DUP1 PUSH0 ADD SLOAD DUP2 PUSH1 0x1 ADD SLOAD DUP3 PUSH1 0x2 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x2 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x250 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x247 SWAP1 PUSH2 0x82D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 ADD SLOAD TIMESTAMP LT ISZERO PUSH2 0x297 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x28E SWAP1 PUSH2 0x895 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 PUSH0 ADD SLOAD SWAP1 POP PUSH0 DUP2 GT PUSH2 0x2E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D7 SWAP1 PUSH2 0x8FD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 PUSH0 ADD DUP2 SWAP1 SSTORE POP PUSH0 DUP3 PUSH1 0x2 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH0 DUP3 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x331 SWAP1 PUSH2 0x948 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x36B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x370 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x3B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3AB SWAP1 PUSH2 0x9A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x884EDAD9CE6FA2440D8A54CC123490EB96D2768479D49FF9C7366125A9424364 DUP4 PUSH1 0x40 MLOAD PUSH2 0x3FA SWAP2 SWAP1 PUSH2 0x775 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH3 0x15180 DUP2 JUMP JUMPDEST PUSH0 CALLVALUE GT PUSH2 0x450 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x447 SWAP1 PUSH2 0xA0E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x15180 TIMESTAMP PUSH2 0x45F SWAP2 SWAP1 PUSH2 0xA59 JUMP JUMPDEST DUP2 EQ PUSH2 0x4A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x497 SWAP1 PUSH2 0xAD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x2 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x52C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x523 SWAP1 PUSH2 0xB3E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 CALLVALUE DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE POP PUSH0 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 ADD MLOAD DUP2 PUSH0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP SWAP1 POP POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x90890809C654F11D6E72A28FA60149770A0D11EC6C92319D6CEB2BB0A4EA1A15 CALLVALUE DUP4 PUSH1 0x40 MLOAD PUSH2 0x602 SWAP3 SWAP2 SWAP1 PUSH2 0xB5C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x44697265637420455448206E6F7420616C6C6F77656400000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x651 PUSH1 0x16 DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP2 POP PUSH2 0x65C DUP3 PUSH2 0x61D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x67E DUP2 PUSH2 0x645 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6B2 DUP3 PUSH2 0x689 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6C2 DUP2 PUSH2 0x6A8 JUMP JUMPDEST DUP2 EQ PUSH2 0x6CC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x6DD DUP2 PUSH2 0x6B9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6F8 JUMPI PUSH2 0x6F7 PUSH2 0x685 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x705 DUP5 DUP3 DUP6 ADD PUSH2 0x6CF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x720 DUP2 PUSH2 0x70E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x73A DUP2 PUSH2 0x726 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x753 PUSH0 DUP4 ADD DUP7 PUSH2 0x717 JUMP JUMPDEST PUSH2 0x760 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x717 JUMP JUMPDEST PUSH2 0x76D PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x731 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x788 PUSH0 DUP4 ADD DUP5 PUSH2 0x717 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x797 DUP2 PUSH2 0x70E JUMP JUMPDEST DUP2 EQ PUSH2 0x7A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x7B2 DUP2 PUSH2 0x78E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7CD JUMPI PUSH2 0x7CC PUSH2 0x685 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x7DA DUP5 DUP3 DUP6 ADD PUSH2 0x7A4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E6F20616374697665207661756C740000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x817 PUSH1 0xF DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP2 POP PUSH2 0x822 DUP3 PUSH2 0x7E3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x844 DUP2 PUSH2 0x80B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x546F6F206561726C790000000000000000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x87F PUSH1 0x9 DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP2 POP PUSH2 0x88A DUP3 PUSH2 0x84B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x8AC DUP2 PUSH2 0x873 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E6F2062616C616E636500000000000000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x8E7 PUSH1 0xA DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP2 POP PUSH2 0x8F2 DUP3 PUSH2 0x8B3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x914 DUP2 PUSH2 0x8DB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH2 0x933 PUSH0 DUP4 PUSH2 0x91B JUMP JUMPDEST SWAP2 POP PUSH2 0x93E DUP3 PUSH2 0x925 JUMP JUMPDEST PUSH0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x952 DUP3 PUSH2 0x928 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5769746864726177206661696C65640000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x990 PUSH1 0xF DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP2 POP PUSH2 0x99B DUP3 PUSH2 0x95C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x9BD DUP2 PUSH2 0x984 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4465706F736974206D757374206265203E203000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x9F8 PUSH1 0x13 DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP2 POP PUSH2 0xA03 DUP3 PUSH2 0x9C4 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0xA25 DUP2 PUSH2 0x9EC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0xA63 DUP3 PUSH2 0x70E JUMP JUMPDEST SWAP2 POP PUSH2 0xA6E DUP4 PUSH2 0x70E JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xA86 JUMPI PUSH2 0xA85 PUSH2 0xA2C JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x556E6C6F636B2074696D65206D7573742062652065786163746C792032346800 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0xAC0 PUSH1 0x1F DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP2 POP PUSH2 0xACB DUP3 PUSH2 0xA8C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0xAED DUP2 PUSH2 0xAB4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5661756C7420616C726561647920616374697665000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0xB28 PUSH1 0x14 DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP2 POP PUSH2 0xB33 DUP3 PUSH2 0xAF4 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0xB55 DUP2 PUSH2 0xB1C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xB6F PUSH0 DUP4 ADD DUP6 PUSH2 0x717 JUMP JUMPDEST PUSH2 0xB7C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x717 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x7089B98A959FB43D7F15A3780ED053 ADDMOD SMOD DUP14 0xF EXP LT 0x4E 0xDF PREVRANDAO EXP PC DUP15 ADDMOD 0x28 PUSH12 0xD764736F6C634300081C0033 ","sourceMap":"57:1782:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1715:32;;;;;;;;;;:::i;:::-;;;;;;;;57:1782;1798:32;;;;;;;;;;:::i;:::-;;;;;;;;1470:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;959:505;;;;;;;;;;;;;:::i;:::-;;194:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;474:479;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1470:202;1525:14;1541:18;1561:11;1584:15;1602:6;:12;1609:4;1602:12;;;;;;;;;;;;;;;1584:30;;1632:1;:8;;;1642:1;:12;;;1656:1;:8;;;;;;;;;;;;1624:41;;;;;;;1470:202;;;;;:::o;959:505::-;998:15;1016:6;:18;1023:10;1016:18;;;;;;;;;;;;;;;998:36;;1052:1;:8;;;;;;;;;;;;1044:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;1117:1;:12;;;1098:15;:31;;1090:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;1153:14;1170:1;:8;;;1153:25;;1205:1;1196:6;:10;1188:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;1243:1;1232;:8;;:12;;;;1265:5;1254:1;:8;;;:16;;;;;;;;;;;;;;;;;;1295:1;1280;:12;;:16;;;;1308:12;1334:10;1326:24;;1358:6;1326:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1307:62;;;1387:7;1379:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;1438:10;1429:28;;;1450:6;1429:28;;;;;;:::i;:::-;;;;;;;;988:476;;;959:505::o;194:48::-;234:8;194:48;:::o;474:479::-;558:1;546:9;:13;538:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;633:8;615:15;:26;;;;:::i;:::-;601:10;:40;593:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;696:6;:18;703:10;696:18;;;;;;;;;;;;;;;:25;;;;;;;;;;;;695:26;687:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;778:110;;;;;;;;806:9;778:110;;;;841:10;778:110;;;;873:4;778:110;;;;;757:6;:18;764:10;757:18;;;;;;;;;;;;;;;:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;912:10;904:42;;;924:9;935:10;904:42;;;;;;;:::i;:::-;;;;;;;;474:479;:::o;7:169:1:-;91:11;125:6;120:3;113:19;165:4;160:3;156:14;141:29;;7:169;;;;:::o;182:172::-;322:24;318:1;310:6;306:14;299:48;182:172;:::o;360:366::-;502:3;523:67;587:2;582:3;523:67;:::i;:::-;516:74;;599:93;688:3;599:93;:::i;:::-;717:2;712:3;708:12;701:19;;360:366;;;:::o;732:419::-;898:4;936:2;925:9;921:18;913:26;;985:9;979:4;975:20;971:1;960:9;956:17;949:47;1013:131;1139:4;1013:131;:::i;:::-;1005:139;;732:419;;;:::o;1238:117::-;1347:1;1344;1337:12;1484:126;1521:7;1561:42;1554:5;1550:54;1539:65;;1484:126;;;:::o;1616:96::-;1653:7;1682:24;1700:5;1682:24;:::i;:::-;1671:35;;1616:96;;;:::o;1718:122::-;1791:24;1809:5;1791:24;:::i;:::-;1784:5;1781:35;1771:63;;1830:1;1827;1820:12;1771:63;1718:122;:::o;1846:139::-;1892:5;1930:6;1917:20;1908:29;;1946:33;1973:5;1946:33;:::i;:::-;1846:139;;;;:::o;1991:329::-;2050:6;2099:2;2087:9;2078:7;2074:23;2070:32;2067:119;;;2105:79;;:::i;:::-;2067:119;2225:1;2250:53;2295:7;2286:6;2275:9;2271:22;2250:53;:::i;:::-;2240:63;;2196:117;1991:329;;;;:::o;2326:77::-;2363:7;2392:5;2381:16;;2326:77;;;:::o;2409:118::-;2496:24;2514:5;2496:24;:::i;:::-;2491:3;2484:37;2409:118;;:::o;2533:90::-;2567:7;2610:5;2603:13;2596:21;2585:32;;2533:90;;;:::o;2629:109::-;2710:21;2725:5;2710:21;:::i;:::-;2705:3;2698:34;2629:109;;:::o;2744:430::-;2887:4;2925:2;2914:9;2910:18;2902:26;;2938:71;3006:1;2995:9;2991:17;2982:6;2938:71;:::i;:::-;3019:72;3087:2;3076:9;3072:18;3063:6;3019:72;:::i;:::-;3101:66;3163:2;3152:9;3148:18;3139:6;3101:66;:::i;:::-;2744:430;;;;;;:::o;3180:222::-;3273:4;3311:2;3300:9;3296:18;3288:26;;3324:71;3392:1;3381:9;3377:17;3368:6;3324:71;:::i;:::-;3180:222;;;;:::o;3408:122::-;3481:24;3499:5;3481:24;:::i;:::-;3474:5;3471:35;3461:63;;3520:1;3517;3510:12;3461:63;3408:122;:::o;3536:139::-;3582:5;3620:6;3607:20;3598:29;;3636:33;3663:5;3636:33;:::i;:::-;3536:139;;;;:::o;3681:329::-;3740:6;3789:2;3777:9;3768:7;3764:23;3760:32;3757:119;;;3795:79;;:::i;:::-;3757:119;3915:1;3940:53;3985:7;3976:6;3965:9;3961:22;3940:53;:::i;:::-;3930:63;;3886:117;3681:329;;;;:::o;4016:165::-;4156:17;4152:1;4144:6;4140:14;4133:41;4016:165;:::o;4187:366::-;4329:3;4350:67;4414:2;4409:3;4350:67;:::i;:::-;4343:74;;4426:93;4515:3;4426:93;:::i;:::-;4544:2;4539:3;4535:12;4528:19;;4187:366;;;:::o;4559:419::-;4725:4;4763:2;4752:9;4748:18;4740:26;;4812:9;4806:4;4802:20;4798:1;4787:9;4783:17;4776:47;4840:131;4966:4;4840:131;:::i;:::-;4832:139;;4559:419;;;:::o;4984:159::-;5124:11;5120:1;5112:6;5108:14;5101:35;4984:159;:::o;5149:365::-;5291:3;5312:66;5376:1;5371:3;5312:66;:::i;:::-;5305:73;;5387:93;5476:3;5387:93;:::i;:::-;5505:2;5500:3;5496:12;5489:19;;5149:365;;;:::o;5520:419::-;5686:4;5724:2;5713:9;5709:18;5701:26;;5773:9;5767:4;5763:20;5759:1;5748:9;5744:17;5737:47;5801:131;5927:4;5801:131;:::i;:::-;5793:139;;5520:419;;;:::o;5945:160::-;6085:12;6081:1;6073:6;6069:14;6062:36;5945:160;:::o;6111:366::-;6253:3;6274:67;6338:2;6333:3;6274:67;:::i;:::-;6267:74;;6350:93;6439:3;6350:93;:::i;:::-;6468:2;6463:3;6459:12;6452:19;;6111:366;;;:::o;6483:419::-;6649:4;6687:2;6676:9;6672:18;6664:26;;6736:9;6730:4;6726:20;6722:1;6711:9;6707:17;6700:47;6764:131;6890:4;6764:131;:::i;:::-;6756:139;;6483:419;;;:::o;6908:147::-;7009:11;7046:3;7031:18;;6908:147;;;;:::o;7061:114::-;;:::o;7181:398::-;7340:3;7361:83;7442:1;7437:3;7361:83;:::i;:::-;7354:90;;7453:93;7542:3;7453:93;:::i;:::-;7571:1;7566:3;7562:11;7555:18;;7181:398;;;:::o;7585:379::-;7769:3;7791:147;7934:3;7791:147;:::i;:::-;7784:154;;7955:3;7948:10;;7585:379;;;:::o;7970:165::-;8110:17;8106:1;8098:6;8094:14;8087:41;7970:165;:::o;8141:366::-;8283:3;8304:67;8368:2;8363:3;8304:67;:::i;:::-;8297:74;;8380:93;8469:3;8380:93;:::i;:::-;8498:2;8493:3;8489:12;8482:19;;8141:366;;;:::o;8513:419::-;8679:4;8717:2;8706:9;8702:18;8694:26;;8766:9;8760:4;8756:20;8752:1;8741:9;8737:17;8730:47;8794:131;8920:4;8794:131;:::i;:::-;8786:139;;8513:419;;;:::o;8938:169::-;9078:21;9074:1;9066:6;9062:14;9055:45;8938:169;:::o;9113:366::-;9255:3;9276:67;9340:2;9335:3;9276:67;:::i;:::-;9269:74;;9352:93;9441:3;9352:93;:::i;:::-;9470:2;9465:3;9461:12;9454:19;;9113:366;;;:::o;9485:419::-;9651:4;9689:2;9678:9;9674:18;9666:26;;9738:9;9732:4;9728:20;9724:1;9713:9;9709:17;9702:47;9766:131;9892:4;9766:131;:::i;:::-;9758:139;;9485:419;;;:::o;9910:180::-;9958:77;9955:1;9948:88;10055:4;10052:1;10045:15;10079:4;10076:1;10069:15;10096:191;10136:3;10155:20;10173:1;10155:20;:::i;:::-;10150:25;;10189:20;10207:1;10189:20;:::i;:::-;10184:25;;10232:1;10229;10225:9;10218:16;;10253:3;10250:1;10247:10;10244:36;;;10260:18;;:::i;:::-;10244:36;10096:191;;;;:::o;10293:181::-;10433:33;10429:1;10421:6;10417:14;10410:57;10293:181;:::o;10480:366::-;10622:3;10643:67;10707:2;10702:3;10643:67;:::i;:::-;10636:74;;10719:93;10808:3;10719:93;:::i;:::-;10837:2;10832:3;10828:12;10821:19;;10480:366;;;:::o;10852:419::-;11018:4;11056:2;11045:9;11041:18;11033:26;;11105:9;11099:4;11095:20;11091:1;11080:9;11076:17;11069:47;11133:131;11259:4;11133:131;:::i;:::-;11125:139;;10852:419;;;:::o;11277:170::-;11417:22;11413:1;11405:6;11401:14;11394:46;11277:170;:::o;11453:366::-;11595:3;11616:67;11680:2;11675:3;11616:67;:::i;:::-;11609:74;;11692:93;11781:3;11692:93;:::i;:::-;11810:2;11805:3;11801:12;11794:19;;11453:366;;;:::o;11825:419::-;11991:4;12029:2;12018:9;12014:18;12006:26;;12078:9;12072:4;12068:20;12064:1;12053:9;12049:17;12042:47;12106:131;12232:4;12106:131;:::i;:::-;12098:139;;11825:419;;;:::o;12250:332::-;12371:4;12409:2;12398:9;12394:18;12386:26;;12422:71;12490:1;12479:9;12475:17;12466:6;12422:71;:::i;:::-;12503:72;12571:2;12560:9;12556:18;12547:6;12503:72;:::i;:::-;12250:332;;;;;:::o"},"methodIdentifiers":{"LOCK_DURATION()":"485d3834","deposit(uint256)":"b6b55f25","getVault(address)":"0eb9af38","withdraw()":"3ccfd60b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unlockTime\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"LOCK_DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"unlockTime\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unlockTime\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project/contracts/vault.sol\":\"TimelockedSavingsVault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project/contracts/vault.sol\":{\"keccak256\":\"0xb311437f1b8f344680cb1c7d78613c7e587083cec20f51cde0f30a52fd822be4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ed87998d5ae17b5de16c16d5858d2cab4db78b2b40b9d0c77edd287acf2fea2\",\"dweb:/ipfs/QmNuotdWig9dHrkMDQA5t8VLZJrgGUerQgJL8Qrq1WwHyi\"]}},\"version\":1}"}}},"sources":{"project/contracts/vault.sol":{"ast":{"absolutePath":"project/contracts/vault.sol","exportedSymbols":{"TimelockedSavingsVault":[209]},"id":210,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","0.8",".28"],"nodeType":"PragmaDirective","src":"32:23:0"},{"abstract":false,"baseContracts":[],"canonicalName":"TimelockedSavingsVault","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":209,"linearizedBaseContracts":[209],"name":"TimelockedSavingsVault","nameLocation":"66:22:0","nodeType":"ContractDefinition","nodes":[{"canonicalName":"TimelockedSavingsVault.Vault","id":8,"members":[{"constant":false,"id":3,"mutability":"mutable","name":"amount","nameLocation":"126:6:0","nodeType":"VariableDeclaration","scope":8,"src":"118:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2,"name":"uint256","nodeType":"ElementaryTypeName","src":"118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5,"mutability":"mutable","name":"unlockTime","nameLocation":"150:10:0","nodeType":"VariableDeclaration","scope":8,"src":"142:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4,"name":"uint256","nodeType":"ElementaryTypeName","src":"142:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"active","nameLocation":"175:6:0","nodeType":"VariableDeclaration","scope":8,"src":"170:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6,"name":"bool","nodeType":"ElementaryTypeName","src":"170:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"Vault","nameLocation":"102:5:0","nodeType":"StructDefinition","scope":209,"src":"95:93:0","visibility":"public"},{"constant":true,"functionSelector":"485d3834","id":11,"mutability":"constant","name":"LOCK_DURATION","nameLocation":"218:13:0","nodeType":"VariableDeclaration","scope":209,"src":"194:48:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9,"name":"uint256","nodeType":"ElementaryTypeName","src":"194:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3234","id":10,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"234:8:0","subdenomination":"hours","typeDescriptions":{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"},"value":"24"},"visibility":"public"},{"constant":false,"id":16,"mutability":"mutable","name":"vaults","nameLocation":"325:6:0","nodeType":"VariableDeclaration","scope":209,"src":"291:40:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Vault_$8_storage_$","typeString":"mapping(address => struct TimelockedSavingsVault.Vault)"},"typeName":{"id":15,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12,"name":"address","nodeType":"ElementaryTypeName","src":"299:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"291:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Vault_$8_storage_$","typeString":"mapping(address => struct TimelockedSavingsVault.Vault)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14,"nodeType":"UserDefinedTypeName","pathNode":{"id":13,"name":"Vault","nameLocations":["310:5:0"],"nodeType":"IdentifierPath","referencedDeclaration":8,"src":"310:5:0"},"referencedDeclaration":8,"src":"310:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage_ptr","typeString":"struct TimelockedSavingsVault.Vault"}}},"visibility":"private"},{"anonymous":false,"eventSelector":"90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15","id":24,"name":"Deposit","nameLocation":"344:7:0","nodeType":"EventDefinition","parameters":{"id":23,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"368:4:0","nodeType":"VariableDeclaration","scope":24,"src":"352:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17,"name":"address","nodeType":"ElementaryTypeName","src":"352:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"382:6:0","nodeType":"VariableDeclaration","scope":24,"src":"374:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19,"name":"uint256","nodeType":"ElementaryTypeName","src":"374:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22,"indexed":false,"mutability":"mutable","name":"unlockTime","nameLocation":"398:10:0","nodeType":"VariableDeclaration","scope":24,"src":"390:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21,"name":"uint256","nodeType":"ElementaryTypeName","src":"390:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"351:58:0"},"src":"338:72:0"},{"anonymous":false,"eventSelector":"884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364","id":30,"name":"Withdraw","nameLocation":"421:8:0","nodeType":"EventDefinition","parameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"446:4:0","nodeType":"VariableDeclaration","scope":30,"src":"430:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25,"name":"address","nodeType":"ElementaryTypeName","src":"430:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"460:6:0","nodeType":"VariableDeclaration","scope":30,"src":"452:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"452:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"429:38:0"},"src":"415:53:0"},{"body":{"id":83,"nodeType":"Block","src":"528:425:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":39,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":36,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"546:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":37,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"550:5:0","memberName":"value","nodeType":"MemberAccess","src":"546:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":38,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"558:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"546:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4465706f736974206d757374206265203e2030","id":40,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"561:21:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_413580c2bed8f5997e496999aeae2d0944cef34dd07600d725723cfeb9a27018","typeString":"literal_string \"Deposit must be > 0\""},"value":"Deposit must be > 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_413580c2bed8f5997e496999aeae2d0944cef34dd07600d725723cfeb9a27018","typeString":"literal_string \"Deposit must be > 0\""}],"id":35,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"538:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":41,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"538:45:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42,"nodeType":"ExpressionStatement","src":"538:45:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":49,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44,"name":"unlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32,"src":"601:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":48,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":45,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"615:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":46,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"621:9:0","memberName":"timestamp","nodeType":"MemberAccess","src":"615:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3234","id":47,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"633:8:0","subdenomination":"hours","typeDescriptions":{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"},"value":"24"},"src":"615:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"601:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e6c6f636b2074696d65206d7573742062652065786163746c7920323468","id":50,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"643:33:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c782715ef3bace595a1f2d9d78f66f7638016082f152b66374cd385de05e69c4","typeString":"literal_string \"Unlock time must be exactly 24h\""},"value":"Unlock time must be exactly 24h"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c782715ef3bace595a1f2d9d78f66f7638016082f152b66374cd385de05e69c4","typeString":"literal_string \"Unlock time must be exactly 24h\""}],"id":43,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"593:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":51,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"593:84:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52,"nodeType":"ExpressionStatement","src":"593:84:0"},{"expression":{"arguments":[{"id":59,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"695:26:0","subExpression":{"expression":{"baseExpression":{"id":54,"name":"vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"696:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Vault_$8_storage_$","typeString":"mapping(address => struct TimelockedSavingsVault.Vault storage ref)"}},"id":57,"indexExpression":{"expression":{"id":55,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"703:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":56,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"707:6:0","memberName":"sender","nodeType":"MemberAccess","src":"703:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"696:18:0","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage","typeString":"struct TimelockedSavingsVault.Vault storage ref"}},"id":58,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"715:6:0","memberName":"active","nodeType":"MemberAccess","referencedDeclaration":7,"src":"696:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5661756c7420616c726561647920616374697665","id":60,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"723:22:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_477db204232217c50608006fa25f563193a21005da4e8c31c6e6b2e45a55c870","typeString":"literal_string \"Vault already active\""},"value":"Vault already active"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_477db204232217c50608006fa25f563193a21005da4e8c31c6e6b2e45a55c870","typeString":"literal_string \"Vault already active\""}],"id":53,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"687:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":61,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"687:59:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62,"nodeType":"ExpressionStatement","src":"687:59:0"},{"expression":{"id":73,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":63,"name":"vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"757:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Vault_$8_storage_$","typeString":"mapping(address => struct TimelockedSavingsVault.Vault storage ref)"}},"id":66,"indexExpression":{"expression":{"id":64,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"764:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":65,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"768:6:0","memberName":"sender","nodeType":"MemberAccess","src":"764:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"757:18:0","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage","typeString":"struct TimelockedSavingsVault.Vault storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":68,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"806:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":69,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"810:5:0","memberName":"value","nodeType":"MemberAccess","src":"806:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":70,"name":"unlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32,"src":"841:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":71,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"873:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":67,"name":"Vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8,"src":"778:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Vault_$8_storage_ptr_$","typeString":"type(struct TimelockedSavingsVault.Vault storage pointer)"}},"id":72,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["798:6:0","829:10:0","865:6:0"],"names":["amount","unlockTime","active"],"nodeType":"FunctionCall","src":"778:110:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_memory_ptr","typeString":"struct TimelockedSavingsVault.Vault memory"}},"src":"757:131:0","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage","typeString":"struct TimelockedSavingsVault.Vault storage ref"}},"id":74,"nodeType":"ExpressionStatement","src":"757:131:0"},{"eventCall":{"arguments":[{"expression":{"id":76,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"912:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"916:6:0","memberName":"sender","nodeType":"MemberAccess","src":"912:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"924:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":79,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"928:5:0","memberName":"value","nodeType":"MemberAccess","src":"924:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80,"name":"unlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32,"src":"935:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"904:7:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":81,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"904:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82,"nodeType":"EmitStatement","src":"899:47:0"}]},"functionSelector":"b6b55f25","id":84,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"483:7:0","nodeType":"FunctionDefinition","parameters":{"id":33,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32,"mutability":"mutable","name":"unlockTime","nameLocation":"499:10:0","nodeType":"VariableDeclaration","scope":84,"src":"491:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31,"name":"uint256","nodeType":"ElementaryTypeName","src":"491:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"490:20:0"},"returnParameters":{"id":34,"nodeType":"ParameterList","parameters":[],"src":"528:0:0"},"scope":209,"src":"474:479:0","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":164,"nodeType":"Block","src":"988:476:0","statements":[{"assignments":[89],"declarations":[{"constant":false,"id":89,"mutability":"mutable","name":"v","nameLocation":"1012:1:0","nodeType":"VariableDeclaration","scope":164,"src":"998:15:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage_ptr","typeString":"struct TimelockedSavingsVault.Vault"},"typeName":{"id":88,"nodeType":"UserDefinedTypeName","pathNode":{"id":87,"name":"Vault","nameLocations":["998:5:0"],"nodeType":"IdentifierPath","referencedDeclaration":8,"src":"998:5:0"},"referencedDeclaration":8,"src":"998:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage_ptr","typeString":"struct TimelockedSavingsVault.Vault"}},"visibility":"internal"}],"id":94,"initialValue":{"baseExpression":{"id":90,"name":"vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"1016:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Vault_$8_storage_$","typeString":"mapping(address => struct TimelockedSavingsVault.Vault storage ref)"}},"id":93,"indexExpression":{"expression":{"id":91,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1023:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":92,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1027:6:0","memberName":"sender","nodeType":"MemberAccess","src":"1023:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1016:18:0","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage","typeString":"struct TimelockedSavingsVault.Vault storage ref"}},"nodeType":"VariableDeclarationStatement","src":"998:36:0"},{"expression":{"arguments":[{"expression":{"id":96,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89,"src":"1052:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage_ptr","typeString":"struct TimelockedSavingsVault.Vault storage pointer"}},"id":97,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1054:6:0","memberName":"active","nodeType":"MemberAccess","referencedDeclaration":7,"src":"1052:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f20616374697665207661756c74","id":98,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1062:17:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e7971938948aeeb1bbe3e81ce47a5fd9bcdaf31195de25745fbcdb38ea75459","typeString":"literal_string \"No active vault\""},"value":"No active vault"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e7971938948aeeb1bbe3e81ce47a5fd9bcdaf31195de25745fbcdb38ea75459","typeString":"literal_string \"No active vault\""}],"id":95,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1044:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":99,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1044:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":100,"nodeType":"ExpressionStatement","src":"1044:36:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":102,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1098:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1104:9:0","memberName":"timestamp","nodeType":"MemberAccess","src":"1098:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":104,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89,"src":"1117:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage_ptr","typeString":"struct TimelockedSavingsVault.Vault storage pointer"}},"id":105,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1119:10:0","memberName":"unlockTime","nodeType":"MemberAccess","referencedDeclaration":5,"src":"1117:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1098:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6f206561726c79","id":107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1131:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f6f93f20f78aace72bd65ea4b5066106f1a58ba03a145eb11ceff2dc1ab0dd1","typeString":"literal_string \"Too early\""},"value":"Too early"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f6f93f20f78aace72bd65ea4b5066106f1a58ba03a145eb11ceff2dc1ab0dd1","typeString":"literal_string \"Too early\""}],"id":101,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1090:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1090:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":109,"nodeType":"ExpressionStatement","src":"1090:53:0"},{"assignments":[111],"declarations":[{"constant":false,"id":111,"mutability":"mutable","name":"amount","nameLocation":"1161:6:0","nodeType":"VariableDeclaration","scope":164,"src":"1153:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":110,"name":"uint256","nodeType":"ElementaryTypeName","src":"1153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":114,"initialValue":{"expression":{"id":112,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89,"src":"1170:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage_ptr","typeString":"struct TimelockedSavingsVault.Vault storage pointer"}},"id":113,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1172:6:0","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3,"src":"1170:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1153:25:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":116,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"1196:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1205:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1196:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f2062616c616e6365","id":119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1208:12:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_397f20c9ee670e88dbc97000732216e0936c9de3d4dedf79ef5a506c8a043cf4","typeString":"literal_string \"No balance\""},"value":"No balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_397f20c9ee670e88dbc97000732216e0936c9de3d4dedf79ef5a506c8a043cf4","typeString":"literal_string \"No balance\""}],"id":115,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1188:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1188:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":121,"nodeType":"ExpressionStatement","src":"1188:33:0"},{"expression":{"id":126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":122,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89,"src":"1232:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage_ptr","typeString":"struct TimelockedSavingsVault.Vault storage pointer"}},"id":124,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1234:6:0","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3,"src":"1232:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1243:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1232:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":127,"nodeType":"ExpressionStatement","src":"1232:12:0"},{"expression":{"id":132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":128,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89,"src":"1254:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage_ptr","typeString":"struct TimelockedSavingsVault.Vault storage pointer"}},"id":130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1256:6:0","memberName":"active","nodeType":"MemberAccess","referencedDeclaration":7,"src":"1254:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1265:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"1254:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":133,"nodeType":"ExpressionStatement","src":"1254:16:0"},{"expression":{"id":138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":134,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89,"src":"1280:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage_ptr","typeString":"struct TimelockedSavingsVault.Vault storage pointer"}},"id":136,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1282:10:0","memberName":"unlockTime","nodeType":"MemberAccess","referencedDeclaration":5,"src":"1280:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1295:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1280:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":139,"nodeType":"ExpressionStatement","src":"1280:16:0"},{"assignments":[141,null],"declarations":[{"constant":false,"id":141,"mutability":"mutable","name":"success","nameLocation":"1313:7:0","nodeType":"VariableDeclaration","scope":164,"src":"1308:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":140,"name":"bool","nodeType":"ElementaryTypeName","src":"1308:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":152,"initialValue":{"arguments":[{"hexValue":"","id":150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1366:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"arguments":[{"expression":{"id":144,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1334:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1338:6:0","memberName":"sender","nodeType":"MemberAccess","src":"1334:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1326:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":142,"name":"address","nodeType":"ElementaryTypeName","src":"1326:8:0","stateMutability":"payable","typeDescriptions":{}}},"id":146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1326:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1346:4:0","memberName":"call","nodeType":"MemberAccess","src":"1326:24:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":148,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"1358:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1326:39:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1326:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1307:62:0"},{"expression":{"arguments":[{"id":154,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"1387:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5769746864726177206661696c6564","id":155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1396:17:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_2bbe70e6500e9642f2862dc923170a5f09b5a43a51b0f2c3488a318564bb6925","typeString":"literal_string \"Withdraw failed\""},"value":"Withdraw failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2bbe70e6500e9642f2862dc923170a5f09b5a43a51b0f2c3488a318564bb6925","typeString":"literal_string \"Withdraw failed\""}],"id":153,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1379:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1379:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":157,"nodeType":"ExpressionStatement","src":"1379:35:0"},{"eventCall":{"arguments":[{"expression":{"id":159,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1438:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1442:6:0","memberName":"sender","nodeType":"MemberAccess","src":"1438:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":161,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"1450:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":158,"name":"Withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"1429:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1429:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":163,"nodeType":"EmitStatement","src":"1424:33:0"}]},"functionSelector":"3ccfd60b","id":165,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"968:8:0","nodeType":"FunctionDefinition","parameters":{"id":85,"nodeType":"ParameterList","parameters":[],"src":"976:2:0"},"returnParameters":{"id":86,"nodeType":"ParameterList","parameters":[],"src":"988:0:0"},"scope":209,"src":"959:505:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":191,"nodeType":"Block","src":"1574:98:0","statements":[{"assignments":[178],"declarations":[{"constant":false,"id":178,"mutability":"mutable","name":"v","nameLocation":"1598:1:0","nodeType":"VariableDeclaration","scope":191,"src":"1584:15:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage_ptr","typeString":"struct TimelockedSavingsVault.Vault"},"typeName":{"id":177,"nodeType":"UserDefinedTypeName","pathNode":{"id":176,"name":"Vault","nameLocations":["1584:5:0"],"nodeType":"IdentifierPath","referencedDeclaration":8,"src":"1584:5:0"},"referencedDeclaration":8,"src":"1584:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage_ptr","typeString":"struct TimelockedSavingsVault.Vault"}},"visibility":"internal"}],"id":182,"initialValue":{"baseExpression":{"id":179,"name":"vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"1602:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Vault_$8_storage_$","typeString":"mapping(address => struct TimelockedSavingsVault.Vault storage ref)"}},"id":181,"indexExpression":{"id":180,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":167,"src":"1609:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1602:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage","typeString":"struct TimelockedSavingsVault.Vault storage ref"}},"nodeType":"VariableDeclarationStatement","src":"1584:30:0"},{"expression":{"components":[{"expression":{"id":183,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"1632:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage_ptr","typeString":"struct TimelockedSavingsVault.Vault storage pointer"}},"id":184,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1634:6:0","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3,"src":"1632:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":185,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"1642:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage_ptr","typeString":"struct TimelockedSavingsVault.Vault storage pointer"}},"id":186,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1644:10:0","memberName":"unlockTime","nodeType":"MemberAccess","referencedDeclaration":5,"src":"1642:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":187,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"1656:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_Vault_$8_storage_ptr","typeString":"struct TimelockedSavingsVault.Vault storage pointer"}},"id":188,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1658:6:0","memberName":"active","nodeType":"MemberAccess","referencedDeclaration":7,"src":"1656:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1631:34:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bool_$","typeString":"tuple(uint256,uint256,bool)"}},"functionReturnParameters":175,"id":190,"nodeType":"Return","src":"1624:41:0"}]},"functionSelector":"0eb9af38","id":192,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nameLocation":"1479:8:0","nodeType":"FunctionDefinition","parameters":{"id":168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":167,"mutability":"mutable","name":"user","nameLocation":"1496:4:0","nodeType":"VariableDeclaration","scope":192,"src":"1488:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":166,"name":"address","nodeType":"ElementaryTypeName","src":"1488:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1487:14:0"},"returnParameters":{"id":175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":170,"mutability":"mutable","name":"amount","nameLocation":"1533:6:0","nodeType":"VariableDeclaration","scope":192,"src":"1525:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":169,"name":"uint256","nodeType":"ElementaryTypeName","src":"1525:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":172,"mutability":"mutable","name":"unlockTime","nameLocation":"1549:10:0","nodeType":"VariableDeclaration","scope":192,"src":"1541:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":171,"name":"uint256","nodeType":"ElementaryTypeName","src":"1541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":174,"mutability":"mutable","name":"active","nameLocation":"1566:6:0","nodeType":"VariableDeclaration","scope":192,"src":"1561:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":173,"name":"bool","nodeType":"ElementaryTypeName","src":"1561:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1524:49:0"},"scope":209,"src":"1470:202:0","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":199,"nodeType":"Block","src":"1705:49:0","statements":[{"expression":{"arguments":[{"hexValue":"44697265637420455448206e6f7420616c6c6f776564","id":196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1722:24:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d23a6e7325f0abb96141966477cca10264973d4cd302317d51a5a0dcefe34d04","typeString":"literal_string \"Direct ETH not allowed\""},"value":"Direct ETH not allowed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d23a6e7325f0abb96141966477cca10264973d4cd302317d51a5a0dcefe34d04","typeString":"literal_string \"Direct ETH not allowed\""}],"id":195,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1715:6:0","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1715:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":198,"nodeType":"ExpressionStatement","src":"1715:32:0"}]},"id":200,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":193,"nodeType":"ParameterList","parameters":[],"src":"1685:2:0"},"returnParameters":{"id":194,"nodeType":"ParameterList","parameters":[],"src":"1705:0:0"},"scope":209,"src":"1678:76:0","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":207,"nodeType":"Block","src":"1788:49:0","statements":[{"expression":{"arguments":[{"hexValue":"44697265637420455448206e6f7420616c6c6f776564","id":204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1805:24:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d23a6e7325f0abb96141966477cca10264973d4cd302317d51a5a0dcefe34d04","typeString":"literal_string \"Direct ETH not allowed\""},"value":"Direct ETH not allowed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d23a6e7325f0abb96141966477cca10264973d4cd302317d51a5a0dcefe34d04","typeString":"literal_string \"Direct ETH not allowed\""}],"id":203,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1798:6:0","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1798:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":206,"nodeType":"ExpressionStatement","src":"1798:32:0"}]},"id":208,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":201,"nodeType":"ParameterList","parameters":[],"src":"1768:2:0"},"returnParameters":{"id":202,"nodeType":"ParameterList","parameters":[],"src":"1788:0:0"},"scope":209,"src":"1760:77:0","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":210,"src":"57:1782:0","usedErrors":[],"usedEvents":[24,30]}],"src":"32:1808:0"},"id":0}}}} \ No newline at end of file diff --git a/Assignment/solidity-assignment7/contracts/vault/artifacts/contracts/vault.sol/TimelockedSavingsVault.json b/Assignment/solidity-assignment7/contracts/vault/artifacts/contracts/vault.sol/TimelockedSavingsVault.json new file mode 100644 index 00000000..3fecd4a0 --- /dev/null +++ b/Assignment/solidity-assignment7/contracts/vault/artifacts/contracts/vault.sol/TimelockedSavingsVault.json @@ -0,0 +1,128 @@ +{ + "_format": "hh3-artifact-1", + "contractName": "TimelockedSavingsVault", + "sourceName": "contracts/vault.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "unlockTime", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "LOCK_DURATION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "unlockTime", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getVault", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "unlockTime", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x6080604052348015600e575f5ffd5b50610bb98061001c5f395ff3fe608060405260043610610042575f3560e01c80630eb9af38146100bd5780633ccfd60b146100fb578063485d383414610111578063b6b55f251461013b57610082565b36610082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161007990610667565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100b490610667565b60405180910390fd5b3480156100c8575f5ffd5b506100e360048036038101906100de91906106e3565b610157565b6040516100f293929190610740565b60405180910390f35b348015610106575f5ffd5b5061010f6101c1565b005b34801561011c575f5ffd5b50610125610407565b6040516101329190610775565b60405180910390f35b610155600480360381019061015091906107b8565b61040e565b005b5f5f5f5f5f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f01548160010154826002015f9054906101000a900460ff16935093509350509193909250565b5f5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050806002015f9054906101000a900460ff16610250576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102479061082d565b60405180910390fd5b8060010154421015610297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028e90610895565b60405180910390fd5b5f815f015490505f81116102e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d7906108fd565b60405180910390fd5b5f825f01819055505f826002015f6101000a81548160ff0219169083151502179055505f82600101819055505f3373ffffffffffffffffffffffffffffffffffffffff168260405161033190610948565b5f6040518083038185875af1925050503d805f811461036b576040519150601f19603f3d011682016040523d82523d5f602084013e610370565b606091505b50509050806103b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ab906109a6565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516103fa9190610775565b60405180910390a2505050565b6201518081565b5f3411610450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044790610a0e565b60405180910390fd5b620151804261045f9190610a59565b81146104a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049790610ad6565b60405180910390fd5b5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f9054906101000a900460ff161561052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052390610b3e565b60405180910390fd5b6040518060600160405280348152602001828152602001600115158152505f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f0155602082015181600101556040820151816002015f6101000a81548160ff0219169083151502179055509050503373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a153483604051610602929190610b5c565b60405180910390a250565b5f82825260208201905092915050565b7f44697265637420455448206e6f7420616c6c6f776564000000000000000000005f82015250565b5f61065160168361060d565b915061065c8261061d565b602082019050919050565b5f6020820190508181035f83015261067e81610645565b9050919050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106b282610689565b9050919050565b6106c2816106a8565b81146106cc575f5ffd5b50565b5f813590506106dd816106b9565b92915050565b5f602082840312156106f8576106f7610685565b5b5f610705848285016106cf565b91505092915050565b5f819050919050565b6107208161070e565b82525050565b5f8115159050919050565b61073a81610726565b82525050565b5f6060820190506107535f830186610717565b6107606020830185610717565b61076d6040830184610731565b949350505050565b5f6020820190506107885f830184610717565b92915050565b6107978161070e565b81146107a1575f5ffd5b50565b5f813590506107b28161078e565b92915050565b5f602082840312156107cd576107cc610685565b5b5f6107da848285016107a4565b91505092915050565b7f4e6f20616374697665207661756c7400000000000000000000000000000000005f82015250565b5f610817600f8361060d565b9150610822826107e3565b602082019050919050565b5f6020820190508181035f8301526108448161080b565b9050919050565b7f546f6f206561726c7900000000000000000000000000000000000000000000005f82015250565b5f61087f60098361060d565b915061088a8261084b565b602082019050919050565b5f6020820190508181035f8301526108ac81610873565b9050919050565b7f4e6f2062616c616e6365000000000000000000000000000000000000000000005f82015250565b5f6108e7600a8361060d565b91506108f2826108b3565b602082019050919050565b5f6020820190508181035f830152610914816108db565b9050919050565b5f81905092915050565b50565b5f6109335f8361091b565b915061093e82610925565b5f82019050919050565b5f61095282610928565b9150819050919050565b7f5769746864726177206661696c656400000000000000000000000000000000005f82015250565b5f610990600f8361060d565b915061099b8261095c565b602082019050919050565b5f6020820190508181035f8301526109bd81610984565b9050919050565b7f4465706f736974206d757374206265203e2030000000000000000000000000005f82015250565b5f6109f860138361060d565b9150610a03826109c4565b602082019050919050565b5f6020820190508181035f830152610a25816109ec565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610a638261070e565b9150610a6e8361070e565b9250828201905080821115610a8657610a85610a2c565b5b92915050565b7f556e6c6f636b2074696d65206d7573742062652065786163746c7920323468005f82015250565b5f610ac0601f8361060d565b9150610acb82610a8c565b602082019050919050565b5f6020820190508181035f830152610aed81610ab4565b9050919050565b7f5661756c7420616c7265616479206163746976650000000000000000000000005f82015250565b5f610b2860148361060d565b9150610b3382610af4565b602082019050919050565b5f6020820190508181035f830152610b5581610b1c565b9050919050565b5f604082019050610b6f5f830185610717565b610b7c6020830184610717565b939250505056fea26469706673582212206e7089b98a959fb43d7f15a3780ed05308078d0f0a104edf440a588e08286bd764736f6c634300081c0033", + "deployedBytecode": "0x608060405260043610610042575f3560e01c80630eb9af38146100bd5780633ccfd60b146100fb578063485d383414610111578063b6b55f251461013b57610082565b36610082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161007990610667565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100b490610667565b60405180910390fd5b3480156100c8575f5ffd5b506100e360048036038101906100de91906106e3565b610157565b6040516100f293929190610740565b60405180910390f35b348015610106575f5ffd5b5061010f6101c1565b005b34801561011c575f5ffd5b50610125610407565b6040516101329190610775565b60405180910390f35b610155600480360381019061015091906107b8565b61040e565b005b5f5f5f5f5f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f01548160010154826002015f9054906101000a900460ff16935093509350509193909250565b5f5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050806002015f9054906101000a900460ff16610250576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102479061082d565b60405180910390fd5b8060010154421015610297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028e90610895565b60405180910390fd5b5f815f015490505f81116102e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d7906108fd565b60405180910390fd5b5f825f01819055505f826002015f6101000a81548160ff0219169083151502179055505f82600101819055505f3373ffffffffffffffffffffffffffffffffffffffff168260405161033190610948565b5f6040518083038185875af1925050503d805f811461036b576040519150601f19603f3d011682016040523d82523d5f602084013e610370565b606091505b50509050806103b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ab906109a6565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516103fa9190610775565b60405180910390a2505050565b6201518081565b5f3411610450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044790610a0e565b60405180910390fd5b620151804261045f9190610a59565b81146104a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049790610ad6565b60405180910390fd5b5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f9054906101000a900460ff161561052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052390610b3e565b60405180910390fd5b6040518060600160405280348152602001828152602001600115158152505f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f0155602082015181600101556040820151816002015f6101000a81548160ff0219169083151502179055509050503373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a153483604051610602929190610b5c565b60405180910390a250565b5f82825260208201905092915050565b7f44697265637420455448206e6f7420616c6c6f776564000000000000000000005f82015250565b5f61065160168361060d565b915061065c8261061d565b602082019050919050565b5f6020820190508181035f83015261067e81610645565b9050919050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106b282610689565b9050919050565b6106c2816106a8565b81146106cc575f5ffd5b50565b5f813590506106dd816106b9565b92915050565b5f602082840312156106f8576106f7610685565b5b5f610705848285016106cf565b91505092915050565b5f819050919050565b6107208161070e565b82525050565b5f8115159050919050565b61073a81610726565b82525050565b5f6060820190506107535f830186610717565b6107606020830185610717565b61076d6040830184610731565b949350505050565b5f6020820190506107885f830184610717565b92915050565b6107978161070e565b81146107a1575f5ffd5b50565b5f813590506107b28161078e565b92915050565b5f602082840312156107cd576107cc610685565b5b5f6107da848285016107a4565b91505092915050565b7f4e6f20616374697665207661756c7400000000000000000000000000000000005f82015250565b5f610817600f8361060d565b9150610822826107e3565b602082019050919050565b5f6020820190508181035f8301526108448161080b565b9050919050565b7f546f6f206561726c7900000000000000000000000000000000000000000000005f82015250565b5f61087f60098361060d565b915061088a8261084b565b602082019050919050565b5f6020820190508181035f8301526108ac81610873565b9050919050565b7f4e6f2062616c616e6365000000000000000000000000000000000000000000005f82015250565b5f6108e7600a8361060d565b91506108f2826108b3565b602082019050919050565b5f6020820190508181035f830152610914816108db565b9050919050565b5f81905092915050565b50565b5f6109335f8361091b565b915061093e82610925565b5f82019050919050565b5f61095282610928565b9150819050919050565b7f5769746864726177206661696c656400000000000000000000000000000000005f82015250565b5f610990600f8361060d565b915061099b8261095c565b602082019050919050565b5f6020820190508181035f8301526109bd81610984565b9050919050565b7f4465706f736974206d757374206265203e2030000000000000000000000000005f82015250565b5f6109f860138361060d565b9150610a03826109c4565b602082019050919050565b5f6020820190508181035f830152610a25816109ec565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610a638261070e565b9150610a6e8361070e565b9250828201905080821115610a8657610a85610a2c565b5b92915050565b7f556e6c6f636b2074696d65206d7573742062652065786163746c7920323468005f82015250565b5f610ac0601f8361060d565b9150610acb82610a8c565b602082019050919050565b5f6020820190508181035f830152610aed81610ab4565b9050919050565b7f5661756c7420616c7265616479206163746976650000000000000000000000005f82015250565b5f610b2860148361060d565b9150610b3382610af4565b602082019050919050565b5f6020820190508181035f830152610b5581610b1c565b9050919050565b5f604082019050610b6f5f830185610717565b610b7c6020830184610717565b939250505056fea26469706673582212206e7089b98a959fb43d7f15a3780ed05308078d0f0a104edf440a588e08286bd764736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {}, + "immutableReferences": {}, + "inputSourceName": "project/contracts/vault.sol", + "buildInfoId": "solc-0_8_28-20629223a15770955c9b8840e528f9d58e5be6d8" +} \ No newline at end of file diff --git a/Assignment/solidity-assignment7/contracts/vault/artifacts/contracts/vault.sol/artifacts.d.ts b/Assignment/solidity-assignment7/contracts/vault/artifacts/contracts/vault.sol/artifacts.d.ts new file mode 100644 index 00000000..3611ec99 --- /dev/null +++ b/Assignment/solidity-assignment7/contracts/vault/artifacts/contracts/vault.sol/artifacts.d.ts @@ -0,0 +1,27 @@ +// This file was autogenerated by Hardhat, do not edit it. +// prettier-ignore +// tslint:disable +// eslint-disable +// biome-ignore format: see above + +export interface TimelockedSavingsVault$Type { + readonly _format: "hh3-artifact-1"; + readonly contractName: "TimelockedSavingsVault"; + readonly sourceName: "contracts/vault.sol"; + readonly abi: [{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlockTime","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"LOCK_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"unlockTime","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getVault","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"unlockTime","type":"uint256"},{"internalType":"bool","name":"active","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]; + readonly bytecode: "0x6080604052348015600e575f5ffd5b50610bb98061001c5f395ff3fe608060405260043610610042575f3560e01c80630eb9af38146100bd5780633ccfd60b146100fb578063485d383414610111578063b6b55f251461013b57610082565b36610082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161007990610667565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100b490610667565b60405180910390fd5b3480156100c8575f5ffd5b506100e360048036038101906100de91906106e3565b610157565b6040516100f293929190610740565b60405180910390f35b348015610106575f5ffd5b5061010f6101c1565b005b34801561011c575f5ffd5b50610125610407565b6040516101329190610775565b60405180910390f35b610155600480360381019061015091906107b8565b61040e565b005b5f5f5f5f5f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f01548160010154826002015f9054906101000a900460ff16935093509350509193909250565b5f5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050806002015f9054906101000a900460ff16610250576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102479061082d565b60405180910390fd5b8060010154421015610297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028e90610895565b60405180910390fd5b5f815f015490505f81116102e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d7906108fd565b60405180910390fd5b5f825f01819055505f826002015f6101000a81548160ff0219169083151502179055505f82600101819055505f3373ffffffffffffffffffffffffffffffffffffffff168260405161033190610948565b5f6040518083038185875af1925050503d805f811461036b576040519150601f19603f3d011682016040523d82523d5f602084013e610370565b606091505b50509050806103b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ab906109a6565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516103fa9190610775565b60405180910390a2505050565b6201518081565b5f3411610450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044790610a0e565b60405180910390fd5b620151804261045f9190610a59565b81146104a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049790610ad6565b60405180910390fd5b5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f9054906101000a900460ff161561052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052390610b3e565b60405180910390fd5b6040518060600160405280348152602001828152602001600115158152505f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f0155602082015181600101556040820151816002015f6101000a81548160ff0219169083151502179055509050503373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a153483604051610602929190610b5c565b60405180910390a250565b5f82825260208201905092915050565b7f44697265637420455448206e6f7420616c6c6f776564000000000000000000005f82015250565b5f61065160168361060d565b915061065c8261061d565b602082019050919050565b5f6020820190508181035f83015261067e81610645565b9050919050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106b282610689565b9050919050565b6106c2816106a8565b81146106cc575f5ffd5b50565b5f813590506106dd816106b9565b92915050565b5f602082840312156106f8576106f7610685565b5b5f610705848285016106cf565b91505092915050565b5f819050919050565b6107208161070e565b82525050565b5f8115159050919050565b61073a81610726565b82525050565b5f6060820190506107535f830186610717565b6107606020830185610717565b61076d6040830184610731565b949350505050565b5f6020820190506107885f830184610717565b92915050565b6107978161070e565b81146107a1575f5ffd5b50565b5f813590506107b28161078e565b92915050565b5f602082840312156107cd576107cc610685565b5b5f6107da848285016107a4565b91505092915050565b7f4e6f20616374697665207661756c7400000000000000000000000000000000005f82015250565b5f610817600f8361060d565b9150610822826107e3565b602082019050919050565b5f6020820190508181035f8301526108448161080b565b9050919050565b7f546f6f206561726c7900000000000000000000000000000000000000000000005f82015250565b5f61087f60098361060d565b915061088a8261084b565b602082019050919050565b5f6020820190508181035f8301526108ac81610873565b9050919050565b7f4e6f2062616c616e6365000000000000000000000000000000000000000000005f82015250565b5f6108e7600a8361060d565b91506108f2826108b3565b602082019050919050565b5f6020820190508181035f830152610914816108db565b9050919050565b5f81905092915050565b50565b5f6109335f8361091b565b915061093e82610925565b5f82019050919050565b5f61095282610928565b9150819050919050565b7f5769746864726177206661696c656400000000000000000000000000000000005f82015250565b5f610990600f8361060d565b915061099b8261095c565b602082019050919050565b5f6020820190508181035f8301526109bd81610984565b9050919050565b7f4465706f736974206d757374206265203e2030000000000000000000000000005f82015250565b5f6109f860138361060d565b9150610a03826109c4565b602082019050919050565b5f6020820190508181035f830152610a25816109ec565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610a638261070e565b9150610a6e8361070e565b9250828201905080821115610a8657610a85610a2c565b5b92915050565b7f556e6c6f636b2074696d65206d7573742062652065786163746c7920323468005f82015250565b5f610ac0601f8361060d565b9150610acb82610a8c565b602082019050919050565b5f6020820190508181035f830152610aed81610ab4565b9050919050565b7f5661756c7420616c7265616479206163746976650000000000000000000000005f82015250565b5f610b2860148361060d565b9150610b3382610af4565b602082019050919050565b5f6020820190508181035f830152610b5581610b1c565b9050919050565b5f604082019050610b6f5f830185610717565b610b7c6020830184610717565b939250505056fea26469706673582212206e7089b98a959fb43d7f15a3780ed05308078d0f0a104edf440a588e08286bd764736f6c634300081c0033"; + readonly deployedBytecode: "0x608060405260043610610042575f3560e01c80630eb9af38146100bd5780633ccfd60b146100fb578063485d383414610111578063b6b55f251461013b57610082565b36610082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161007990610667565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100b490610667565b60405180910390fd5b3480156100c8575f5ffd5b506100e360048036038101906100de91906106e3565b610157565b6040516100f293929190610740565b60405180910390f35b348015610106575f5ffd5b5061010f6101c1565b005b34801561011c575f5ffd5b50610125610407565b6040516101329190610775565b60405180910390f35b610155600480360381019061015091906107b8565b61040e565b005b5f5f5f5f5f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f01548160010154826002015f9054906101000a900460ff16935093509350509193909250565b5f5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050806002015f9054906101000a900460ff16610250576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102479061082d565b60405180910390fd5b8060010154421015610297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028e90610895565b60405180910390fd5b5f815f015490505f81116102e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d7906108fd565b60405180910390fd5b5f825f01819055505f826002015f6101000a81548160ff0219169083151502179055505f82600101819055505f3373ffffffffffffffffffffffffffffffffffffffff168260405161033190610948565b5f6040518083038185875af1925050503d805f811461036b576040519150601f19603f3d011682016040523d82523d5f602084013e610370565b606091505b50509050806103b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ab906109a6565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516103fa9190610775565b60405180910390a2505050565b6201518081565b5f3411610450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044790610a0e565b60405180910390fd5b620151804261045f9190610a59565b81146104a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049790610ad6565b60405180910390fd5b5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f9054906101000a900460ff161561052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052390610b3e565b60405180910390fd5b6040518060600160405280348152602001828152602001600115158152505f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f0155602082015181600101556040820151816002015f6101000a81548160ff0219169083151502179055509050503373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a153483604051610602929190610b5c565b60405180910390a250565b5f82825260208201905092915050565b7f44697265637420455448206e6f7420616c6c6f776564000000000000000000005f82015250565b5f61065160168361060d565b915061065c8261061d565b602082019050919050565b5f6020820190508181035f83015261067e81610645565b9050919050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106b282610689565b9050919050565b6106c2816106a8565b81146106cc575f5ffd5b50565b5f813590506106dd816106b9565b92915050565b5f602082840312156106f8576106f7610685565b5b5f610705848285016106cf565b91505092915050565b5f819050919050565b6107208161070e565b82525050565b5f8115159050919050565b61073a81610726565b82525050565b5f6060820190506107535f830186610717565b6107606020830185610717565b61076d6040830184610731565b949350505050565b5f6020820190506107885f830184610717565b92915050565b6107978161070e565b81146107a1575f5ffd5b50565b5f813590506107b28161078e565b92915050565b5f602082840312156107cd576107cc610685565b5b5f6107da848285016107a4565b91505092915050565b7f4e6f20616374697665207661756c7400000000000000000000000000000000005f82015250565b5f610817600f8361060d565b9150610822826107e3565b602082019050919050565b5f6020820190508181035f8301526108448161080b565b9050919050565b7f546f6f206561726c7900000000000000000000000000000000000000000000005f82015250565b5f61087f60098361060d565b915061088a8261084b565b602082019050919050565b5f6020820190508181035f8301526108ac81610873565b9050919050565b7f4e6f2062616c616e6365000000000000000000000000000000000000000000005f82015250565b5f6108e7600a8361060d565b91506108f2826108b3565b602082019050919050565b5f6020820190508181035f830152610914816108db565b9050919050565b5f81905092915050565b50565b5f6109335f8361091b565b915061093e82610925565b5f82019050919050565b5f61095282610928565b9150819050919050565b7f5769746864726177206661696c656400000000000000000000000000000000005f82015250565b5f610990600f8361060d565b915061099b8261095c565b602082019050919050565b5f6020820190508181035f8301526109bd81610984565b9050919050565b7f4465706f736974206d757374206265203e2030000000000000000000000000005f82015250565b5f6109f860138361060d565b9150610a03826109c4565b602082019050919050565b5f6020820190508181035f830152610a25816109ec565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610a638261070e565b9150610a6e8361070e565b9250828201905080821115610a8657610a85610a2c565b5b92915050565b7f556e6c6f636b2074696d65206d7573742062652065786163746c7920323468005f82015250565b5f610ac0601f8361060d565b9150610acb82610a8c565b602082019050919050565b5f6020820190508181035f830152610aed81610ab4565b9050919050565b7f5661756c7420616c7265616479206163746976650000000000000000000000005f82015250565b5f610b2860148361060d565b9150610b3382610af4565b602082019050919050565b5f6020820190508181035f830152610b5581610b1c565b9050919050565b5f604082019050610b6f5f830185610717565b610b7c6020830184610717565b939250505056fea26469706673582212206e7089b98a959fb43d7f15a3780ed05308078d0f0a104edf440a588e08286bd764736f6c634300081c0033"; + readonly linkReferences: {}; + readonly deployedLinkReferences: {}; + readonly immutableReferences: {}; + readonly inputSourceName: "project/contracts/vault.sol"; + readonly buildInfoId: "solc-0_8_28-20629223a15770955c9b8840e528f9d58e5be6d8"; +}; + +import "hardhat/types/artifacts"; +declare module "hardhat/types/artifacts" { + interface ArtifactMap { + ["TimelockedSavingsVault"]: TimelockedSavingsVault$Type; + ["contracts/vault.sol:TimelockedSavingsVault"]: TimelockedSavingsVault$Type; + } +} \ No newline at end of file diff --git a/Assignment/solidity-assignment7/contracts/vault/cache/compile-cache.json b/Assignment/solidity-assignment7/contracts/vault/cache/compile-cache.json new file mode 100644 index 00000000..4b963bb1 --- /dev/null +++ b/Assignment/solidity-assignment7/contracts/vault/cache/compile-cache.json @@ -0,0 +1 @@ +{"/home/luhrhenz/Desktop/New Folder/contracts/vault/contracts/vault.sol":{"jobHash":"solc-0_8_28-20629223a15770955c9b8840e528f9d58e5be6d8","isolated":false,"artifactPaths":["/home/luhrhenz/Desktop/New Folder/contracts/vault/artifacts/contracts/vault.sol/TimelockedSavingsVault.json"],"buildInfoPath":"/home/luhrhenz/Desktop/New Folder/contracts/vault/artifacts/build-info/solc-0_8_28-20629223a15770955c9b8840e528f9d58e5be6d8.json","buildInfoOutputPath":"/home/luhrhenz/Desktop/New Folder/contracts/vault/artifacts/build-info/solc-0_8_28-20629223a15770955c9b8840e528f9d58e5be6d8.output.json","typeFilePath":"/home/luhrhenz/Desktop/New Folder/contracts/vault/artifacts/contracts/vault.sol/artifacts.d.ts","wasm":false}} \ No newline at end of file diff --git a/Assignment/solidity-assignment7/contracts/vault/contracts/vault.sol b/Assignment/solidity-assignment7/contracts/vault/contracts/vault.sol new file mode 100644 index 00000000..9e7b0c70 --- /dev/null +++ b/Assignment/solidity-assignment7/contracts/vault/contracts/vault.sol @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.28; + +contract TimelockedSavingsVault { + struct Vault { + uint256 amount; + uint256 unlockTime; + bool active; + } + + uint256 public constant LOCK_DURATION = 24 hours; // Fixed lock duration for every deposit. + + mapping(address => Vault) private vaults; + + event Deposit(address indexed user, uint256 amount, uint256 unlockTime); + event Withdraw(address indexed user, uint256 amount); + + function deposit(uint256 unlockTime) external payable { + require(msg.value > 0, "Deposit must be > 0"); + require(unlockTime == block.timestamp + 24 hours, "Unlock time must be exactly 24h"); + require(!vaults[msg.sender].active, "Vault already active"); + + vaults[msg.sender] = Vault({ + amount: msg.value, + unlockTime: unlockTime, + active: true + }); + + emit Deposit(msg.sender, msg.value, unlockTime); + } + + function withdraw() external { + Vault storage v = vaults[msg.sender]; + require(v.active, "No active vault"); + require(block.timestamp >= v.unlockTime, "Too early"); + uint256 amount = v.amount; + require(amount > 0, "No balance"); + + v.amount = 0; + v.active = false; + v.unlockTime = 0; + + (bool success, ) = payable(msg.sender).call{value: amount}(""); + require(success, "Withdraw failed"); + emit Withdraw(msg.sender, amount); + } + + function getVault(address user) external view returns (uint256 amount, uint256 unlockTime, bool active) { + Vault storage v = vaults[user]; + return (v.amount, v.unlockTime, v.active); + } + + receive() external payable { + revert("Direct ETH not allowed"); + } + + fallback() external payable { + revert("Direct ETH not allowed"); + } +} diff --git a/Assignment/solidity-assignment7/contracts/vault/hardhat.config.ts b/Assignment/solidity-assignment7/contracts/vault/hardhat.config.ts new file mode 100644 index 00000000..5a11c3e9 --- /dev/null +++ b/Assignment/solidity-assignment7/contracts/vault/hardhat.config.ts @@ -0,0 +1,45 @@ +import dotenv from "dotenv"; +dotenv.config({ path: "../../.env" }); +import hardhatToolboxViemPlugin from "@nomicfoundation/hardhat-toolbox-viem"; +import { configVariable, defineConfig } from "hardhat/config"; + +export default defineConfig({ + plugins: [hardhatToolboxViemPlugin], + solidity: { + profiles: { + default: { + version: "0.8.28", + }, + production: { + version: "0.8.28", + settings: { + optimizer: { + enabled: true, + runs: 200, + }, + }, + }, + }, + }, + networks: { + hardhatMainnet: { + type: "edr-simulated", + chainType: "l1", + }, + hardhatOp: { + type: "edr-simulated", + chainType: "op", + }, + sepolia: { + type: "http", + chainType: "l1", + url: configVariable("SEPOLIA_RPC_URL"), + accounts: [configVariable("SEPOLIA_PRIVATE_KEY")], + }, + }, + verify: { + etherscan: { + apiKey: configVariable("ETHERSCAN_API_KEY"), + }, + }, +}); diff --git a/Assignment/solidity-assignment7/contracts/vault/ignition/modules/Vault.ts b/Assignment/solidity-assignment7/contracts/vault/ignition/modules/Vault.ts new file mode 100644 index 00000000..c89b1555 --- /dev/null +++ b/Assignment/solidity-assignment7/contracts/vault/ignition/modules/Vault.ts @@ -0,0 +1,7 @@ +import { buildModule } from "@nomicfoundation/hardhat-ignition/modules"; + +export default buildModule("VaultModule", (m) => { + const vault = m.contract("TimelockedSavingsVault"); + + return { vault }; +}); diff --git a/Assignment/solidity-assignment7/contracts/vault/package.json b/Assignment/solidity-assignment7/contracts/vault/package.json new file mode 100644 index 00000000..8327a2fb --- /dev/null +++ b/Assignment/solidity-assignment7/contracts/vault/package.json @@ -0,0 +1,17 @@ +{ + "name": "New Folder", + "version": "1.0.0", + "type": "module", + "devDependencies": { + "@nomicfoundation/hardhat-ignition": "^3.0.7", + "@nomicfoundation/hardhat-toolbox-viem": "^5.0.2", + "@types/node": "^22.19.8", + "forge-std": "github:foundry-rs/forge-std#v1.9.4", + "hardhat": "^3.1.6", + "typescript": "~5.8.0", + "viem": "^2.45.1" + }, + "dependencies": { + "dotenv": "^17.2.4" + } +} diff --git a/Assignment/solidity-assignment7/contracts/vault/test/Vault.ts b/Assignment/solidity-assignment7/contracts/vault/test/Vault.ts new file mode 100644 index 00000000..7a37f09a --- /dev/null +++ b/Assignment/solidity-assignment7/contracts/vault/test/Vault.ts @@ -0,0 +1,105 @@ +import assert from "node:assert/strict"; +import { describe, it } from "node:test"; + +import { network } from "hardhat"; + +describe("TimelockedSavingsVault", async function () { + const { viem } = await network.connect(); + const publicClient = await viem.getPublicClient(); + const testClient = await viem.getTestClient(); + const [user] = await viem.getWalletClients(); + + async function deployVault() { + return viem.deployContract("TimelockedSavingsVault", [], { + client: { wallet: user, public: publicClient }, + }); + } + + it("locks for 24 hours and allows withdrawal after", async function () { + const vault = await deployVault(); + const block = await publicClient.getBlock(); + const depositTime = BigInt(block.timestamp) + 1n; + await testClient.setNextBlockTimestamp({ timestamp: depositTime }); + const unlockTime = depositTime + 24n * 60n * 60n; + + await vault.write.deposit([unlockTime], { value: 1n }); + + await assert.rejects(async () => { + await vault.write.withdraw(); + }); + + await testClient.increaseTime({ seconds: 24 * 60 * 60 }); + await testClient.mine({ blocks: 1 }); + + await vault.write.withdraw(); + const v = await vault.read.getVault([user.account.address]); + assert.equal(v[0], 0n); + assert.equal(v[2], false); + }); + + it("rejects double deposit", async function () { + const vault = await deployVault(); + const block = await publicClient.getBlock(); + const depositTime = BigInt(block.timestamp) + 1n; + await testClient.setNextBlockTimestamp({ timestamp: depositTime }); + const unlockTime = depositTime + 24n * 60n * 60n; + + await vault.write.deposit([unlockTime], { value: 1n }); + + await assert.rejects(async () => { + await vault.write.deposit([unlockTime], { value: 1n }); + }); + }); + + it("rejects unlock time in the past", async function () { + const vault = await deployVault(); + const block = await publicClient.getBlock(); + const past = BigInt(block.timestamp) - 1n; + + await assert.rejects(async () => { + await vault.write.deposit([past], { value: 1n }); + }); + }); + + it("rejects early withdrawal", async function () { + const vault = await deployVault(); + const block = await publicClient.getBlock(); + const depositTime = BigInt(block.timestamp) + 1n; + await testClient.setNextBlockTimestamp({ timestamp: depositTime }); + const unlockTime = depositTime + 24n * 60n * 60n; + + await vault.write.deposit([unlockTime], { value: 1n }); + + await assert.rejects(async () => { + await vault.write.withdraw(); + }); + }); + + it("rejects double withdrawal", async function () { + const vault = await deployVault(); + const block = await publicClient.getBlock(); + const depositTime = BigInt(block.timestamp) + 1n; + await testClient.setNextBlockTimestamp({ timestamp: depositTime }); + const unlockTime = depositTime + 24n * 60n * 60n; + + await vault.write.deposit([unlockTime], { value: 1n }); + await testClient.increaseTime({ seconds: 24 * 60 * 60 }); + await testClient.mine({ blocks: 1 }); + await vault.write.withdraw(); + + await assert.rejects(async () => { + await vault.write.withdraw(); + }); + }); + + it("rejects direct ETH transfers", async function () { + const vault = await deployVault(); + + await assert.rejects(async () => { + await user.sendTransaction({ + to: vault.address, + value: 1n, + }); + }); + }); +}); diff --git a/Assignment/solidity-assignment7/contracts/vault/tsconfig.json b/Assignment/solidity-assignment7/contracts/vault/tsconfig.json new file mode 100644 index 00000000..9b1380cc --- /dev/null +++ b/Assignment/solidity-assignment7/contracts/vault/tsconfig.json @@ -0,0 +1,13 @@ +/* Based on https://github.com/tsconfig/bases/blob/501da2bcd640cf95c95805783e1012b992338f28/bases/node22.json */ +{ + "compilerOptions": { + "lib": ["es2023"], + "module": "node16", + "target": "es2022", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "moduleResolution": "node16", + "outDir": "dist" + } +} diff --git a/template/.github/pull_request_template.md b/template/.github/pull_request_template.md new file mode 100644 index 00000000..60af44d0 --- /dev/null +++ b/template/.github/pull_request_template.md @@ -0,0 +1,9 @@ +## Summary +What does this PR implement? + +## Testing +- [ ] Unit tests added +- [ ] Tests passing locally + +## Notes +Any assumptions or trade-offs? \ No newline at end of file diff --git a/template/.github/workflows/.yml b/template/.github/workflows/.yml new file mode 100644 index 00000000..3aed9df2 --- /dev/null +++ b/template/.github/workflows/.yml @@ -0,0 +1,24 @@ +name: CI + +on: + pull_request: + branches: [main] + push: + branches: [main] + +jobs: + formatting: + name: Code Formatting (Prettier) + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Run Prettier check + run: npx prettier --check . diff --git a/template/.gitignore b/template/.gitignore new file mode 100644 index 00000000..962c2511 --- /dev/null +++ b/template/.gitignore @@ -0,0 +1,5 @@ +.env +.vscode/ + +package-lock.json +node_modules \ No newline at end of file diff --git a/template/.prettierignore b/template/.prettierignore new file mode 100644 index 00000000..2603b336 --- /dev/null +++ b/template/.prettierignore @@ -0,0 +1,4 @@ +node_modules +dist +build +.env* \ No newline at end of file diff --git a/template/.prettierrc b/template/.prettierrc new file mode 100644 index 00000000..d4fed1f5 --- /dev/null +++ b/template/.prettierrc @@ -0,0 +1,7 @@ +{ + "semi": true, + "singleQuote": true, + "trailingComma": "es5", + "printWidth": 80, + "tabWidth": 2 +} \ No newline at end of file diff --git a/template/CONTRIBUTING.md b/template/CONTRIBUTING.md new file mode 100644 index 00000000..cbd55a65 --- /dev/null +++ b/template/CONTRIBUTING.md @@ -0,0 +1,35 @@ +# How to Contribute + +1. Getting Started + - Fork the repository + - Sync with upstream + - Create a feature branch + +2. Branch Naming Convention +Example: +`submission/assignment-01/` + +3. Commit Message Guidelines + +Example (Conventional Commits–lite): +``` +feat: implement token transfer logic +fix: handle zero-address edge case +test: add coverage for revert conditions +``` + +4. Pull Request Checklist +- [x] Code compiles +- [x] Tests pass +- [x] README included +- [x] No changes outside /submissions + +5. PR Review Process +- [x] Automated checks +- [x] Manual review by mentors +- [x] Required fixes before merge + +6. Common Mistakes to Avoid +- Editing assignment specs +- Submitting compiled artifacts +- Force-pushing after review \ No newline at end of file diff --git a/template/README.md b/template/README.md new file mode 100644 index 00000000..1f9b46e7 --- /dev/null +++ b/template/README.md @@ -0,0 +1,26 @@ +# Cohort 8 +Blockchain Development Bootcamp — Cohort 8 + +This repository contains official technical materials, specifications, assignments, and collaboration artifacts for the 8th edition of our blockchain program. Dev participants are expected to actively use this repository throughout the program for learning, development, version control, and peer collaboration. + +#### Repository Structure +The repository will evolve over time, but a typical structure looks like: +```cohort-8/ +├── README.md # Repository overview and instructions +├── assignments/ # Coding exercises and assessments +├── projects/ +│ ├── templates/ # Starter project templates +│ └── submissions/ # Participant or team submissions +└── resources/ # Technical references & reading material +``` + +#### Setup +Clone the repository: +``` +git clone https://github.com/BlockheaderWeb3-Community/cohort-8.git +cd cohort-8 +``` + +#### Code Formatting +This repository uses Prettier for formatting. Install the Prettier extension in your editor and enable Format on Save. +